2016-11-17 3 views
4
if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 

    mGoogleApiClient = new GoogleApiClient 
     .Builder(this) 
     .enableAutoManage(this, 34992, this) 
     .addApi(LocationServices.API) 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .build(); 
    mGoogleApiClient.connect(); 
    locationChecker(mGoogleApiClient, this); 
    } 

アンドロイドGPSがオフになったら、gpsダイアログが表示されます。 でもGPSがオフになっても、status.getStatusCode()はいつも成功していると私は間違いだと思います。どうして?優先順位は、それは両方のGPSとプロバイダーのデータをチェックしますいつもLocationSettingsStatusCodes.SUCCESS GPSがオフになる

public static void locationChecker(GoogleApiClient mGoogleApiClient, final Activity activity) { 

    LocationRequest locationRequest = LocationRequest.create(); 
    locationRequest.setPriority(LocationRequest.PRIORITY_NO_POWER); 
    //locationRequest.setInterval(864 * 1000); 
    //locationRequest.setFastestInterval(864 * 1000); 
    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() 
    .addLocationRequest(locationRequest); 
    builder.setAlwaysShow(true); 
    PendingResult<LocationSettingsResult> result = 
    LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build()); 

    result.setResultCallback(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. 
       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(
       activity, 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; 
       } 
     } 
    }); 
} 

答えて

3

変更はlocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

に変更し
関連する問題