2014-01-17 1 views

ответ

6

Я думаю, что я слишком поздно, чтобы ответить на вопрос. Но все в порядке. Таким образом, с новым API LocationSettingsRequest мы можем включить местоположение в приложении одним щелчком мыши. Итак, для этого; инициализировать GoogleApiClient

 GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addApi(LocationServices.API) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this).build(); 
     mGoogleApiClient.connect(); 

, а затем сделать LocationRequest инициализирован, как показано ниже:

LocationRequest mLocationRequest = LocationRequest.create(); 
     mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
     mLocationRequest.setInterval(Util.UPDATE_INTERVAL_IN_MILLISECONDS); 
     mLocationRequest.setFastestInterval(Util.FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS); 
    } 

Теперь сделать настройки Местоположение запрос через LocationSettingsRequest.

LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() 
       .addLocationRequest(mLocationRequest); 

     //************************** 
     builder.setAlwaysShow(true); //this is the key ingredient 
     //************************** 

     PendingResult<LocationSettingsResult> result = 
       LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build()); 
     result.setResultCallback(locationSettingsResultCallback); 

Итак, как только вы сделаете LocationSettingsRequest, он будет всплывающее окно, как это:

enter image description here

Так обрабатывать любые опции пользователь выбирает, вы должны реализовать обратные вызовы для обработки каждой опции, как показано ниже:

ResultCallback<LocationSettingsResult> locationSettingsResultCallback = new ResultCallback<LocationSettingsResult>() { 
     @Override 
     public void onResult(LocationSettingsResult result) { 
      final Status status = result.getStatus(); 
      final LocationSettingsStates state = result.getLocationSettingsStates(); 
      switch (status.getStatusCode()) { 
       case LocationSettingsStatusCodes.SUCCESS: 
        // All location settings are satisfied. The client can initialize location 
        // requests here. 
        //startLocationUpdates(); 


        break; 
       case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: 
        // Location settings are not satisfied. But could be fixed by showing the user 
        // a dialog. 
        try { 
         // Show the dialog by calling startResolutionForResult(), 
         // and check the result in onActivityResult(). 
         status.startResolutionForResult(
           PickupLocationActivity.this, 1000); 
        } catch (IntentSender.SendIntentException e) { 
         // Ignore the error. 
        } 
        break; 
       case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: 
        // Location settings are not satisfied. However, we have no way to fix the 
        // settings so we won't show the dialog. 
        break; 
      } 
     } 
    }; 

Ссылка:https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi

Смежные вопросы