バックグラウンドで数分ごとにユーザーの場所を更新したいと思います。
Iこのサンプルコードgooglesamples/android-play-location
を使用するが、それはService
バックグラウンドで場所を更新してLocationSettingsを確認
public class MyService extends Service implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener, ResultCallback<LocationSettingsResult>
の使用に変更するが、この方法は、Activity
を必要とするので、私は位置設定protected void checkLocationSettings() { PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings( mGoogleApiClient, mLocationSettingsRequest ); result.setResultCallback(this); } @Override public void onResult(LocationSettingsResult locationSettingsResult) { final Status status = locationSettingsResult.getStatus(); switch (status.getStatusCode()) { case LocationSettingsStatusCodes.SUCCESS: Log.i(TAG, "All location settings are satisfied."); startLocationUpdates(); break; case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: Log.i(TAG, "Location settings are not satisfied. Show the user a dialog to" + "upgrade location settings "); try { // Show the dialog by calling startResolutionForResult(), and check the result // in onActivityResult(). status.startResolutionForResult(MainActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException e) { Log.i(TAG, "PendingIntent unable to execute request."); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: Log.i(TAG, "Location settings are inadequate, and cannot be fixed here. Dialog " + "not created."); break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { // Check for the integer request code originally supplied to startResolutionForResult(). case REQUEST_CHECK_SETTINGS: switch (resultCode) { case Activity.RESULT_OK: Log.i(TAG, "User agreed to make required location settings changes."); startLocationUpdates(); break; case Activity.RESULT_CANCELED: Log.i(TAG, "User chose not to make required location settings changes."); break; } break; } }
を確認することができません
status.startResolutionForResult(MainActivity.this、 REQUEST_CHECK_SETTINGS);
と私はMainActvityで前のコードを置けば、私はmGoogleApiClientとmLocationSettingsRequest
LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient、 mLocationSettingsRequest)への参照を持っていないでしょう。
アクティビティが破棄されても、アップグレードしてバックグラウンドで保存したいと考えています。
これを行う正しい方法はサービスを使用することですか?
場所の設定を確認するにはどうすればよいですか?
[EDIT]
私はこの方法は、アプリがあっても、位置更新を受信するための より具体的には、バックグラウンドのユースケースに適しているPendingIntent
とIntentService
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
mLocationRequest, mPendingIntent);
を使用しようとしましたシステム によって殺されました。
Service
とLocationListner
のバージョンとの違いは何ですか?
私はLocationListenerを使用し、FusedLocationAPIはうまく機能します。私の問題は、checkLocationSettingsです。 –