アプリケーションをサービスに変換しようとしています。これにより、アプリケーションが簡単に破棄されず、実行され続けることができなくなります。使いやすいように正しい場所を見つけようとして、コードを何度か移動しましたが、今では
java.lang.NullPointerException: null オブジェクト参照でインターフェイス メソッド 'android.os.Looper com.google.android.gms.common.api.GoogleApiClient.getLooper()' を呼び出そうとしています
このコード ブロック内で発生します。
public void initiateMockLocs() {
Location mockLoc = new Location(LocationManager.NETWORK_PROVIDER);
mockLoc.setLatitude(41.881832);
mockLoc.setLongitude(-87.623177);
mockLoc.setAccuracy(20);
mockLoc.setTime(System.currentTimeMillis());
mockLoc.setElapsedRealtimeNanos(System.nanoTime());
try {
LocationServices.FusedLocationApi.setMockMode(mMainActivity.mGoogleApiClient, true);
LocationServices.FusedLocationApi.setMockLocation(mMainActivity.mGoogleApiClient, mockLoc);
Location loc = LocationServices.FusedLocationApi.getLastLocation(mMainActivity.mGoogleApiClient);
Log.i("Mock Location: ", loc.toString());
Log.i("Timer", "Going to start timer.");
logLocation();
startTimer();
} catch (Exception e) {
e.printStackTrace();
}
}
具体的には、「try」ブロックの下の最初の行です。関数は、このサービスの onCreate で呼び出される唯一のものなので、そこで呼び出されます。mGoogleApiClient が初期化されるその他の背景情報は次のとおりです。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(true);
createLocationRequest();
buildGoogleApiClient();
mGoogleApiClient.connect();
showProcesses = (Button) findViewById(R.id.listApps);
showProcesses.setOnClickListener(listRunningApps);
activateMockLocs = (Button) findViewById(R.id.activateMock);
activateMockLocs.setOnClickListener(activateMockLocations);
latView = (TextView) findViewById(R.id.latView);
longView = (TextView) findViewById(R.id.longView);
anonymizationService = new AnonymizationService();
}
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
// Initialize a LocationRequest object
protected void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(10000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
}
MainActivity を Service と通信させてこの問題を解決する適切な方法を誰かが知っていれば、それは素晴らしいことです! 正確な問題を扱う答えが見つからないようです。前もって感謝します。