14

を使用して有効かどうかを確認します。アンドロイド:場所サービスは、Androidのドキュメントによると融合場所プロバイダー

Google位置情報サービスAPIを、グーグルの一部は、サービスを再生し、 は自動的に、より強力な、高レベルのフレームワークを提供します よりプラットフォームロケーションAPIをandroid.locationに設定した場合、 より、ロケーションプロバイダー、ユーザーの移動、および場所の精度が処理されます。

しかし、(Google PlayサービスのロケーションAPIからの)融合ロケーションプロバイダを使用して、ユーザーの位置が有効か無効かを確認する方法はわかりません。

locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

しかし、私は、両方のGoogleは場所の提供者と古いアンドロイド場所融合したサービスを再生利用したいドント:古いandroid.locationを使用して

は、それが簡単でした。

融合ロケーションプロバイダを使用しているユーザーが場所を有効にしているかどうかを確認するにはどうすればよいですか?

ありがとうございます。

+0

こんにちは、回答を実装してください。 –

答えて

17

SettingsApiを参照してください:ロケーションのリクエストを確認し、デバイスのシステム設定がアプリのロケーションのニーズに応じて適切に設定されていることを確認します。

+0

私はここでSettingsClientを実装しました:https://github.com/askfortricks/FusedLocationProviderClient SettingsApiは廃止予定です。 –

35

This android developer training tutorial could help - ここでは基本です:

// Create an instance of GoogleAPIClient. 
    if (mGoogleApiClient == null) { 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
    } 

    mGoogleApiClient.connect(); 

    LocationRequest mLocationRequest = new LocationRequest(); 
    mLocationRequest.setInterval(10000); 
    mLocationRequest.setFastestInterval(5000); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 

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

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

    result.setResultCallback(new ResultCallback<LocationSettingsResult>() { 
     @Override 
     public void onResult(LocationSettingsResult locationSettingsResult) { 

      final Status status = locationSettingsResult.getStatus(); 
      final LocationSettingsStates LS_state = locationSettingsResult.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(LocationByGPS.this, REQUEST_CHECK_SETTINGS); 

        } 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; 
      } 
     } 
    }); 

オーバーライドこの方法:

コードがあなたのアクティビティのonCreate()で実行するように

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    final LocationSettingsStates states = LocationSettingsStates.fromIntent(data); 
    switch (requestCode) { 
     case REQUEST_CHECK_SETTINGS: 
      switch (resultCode) { 
       case Activity.RESULT_OK: 
        // All required changes were successfully made 
        GetUserLocation();//FINALLY YOUR OWN METHOD TO GET YOUR USER LOCATION HERE 
        break; 
       case Activity.RESULT_CANCELED: 
        // The user was asked to change settings, but chose not to 

        break; 
       default: 
        break; 
      } 
      break; 
    } 
} 

実装することを忘れないでくださいあなたのクラスのこれら:

public class MyClass extends AppCompatActivity implements 
    ActivityCompat.OnRequestPermissionsResultCallback, 
    GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener{ 

    protected static final int REQUEST_CHECK_SETTINGS = 0x1; 


    /* 
    your code i.e. with the above code etc.... 
*/ 

} 

Good explanation here in this Google developer link.

乾杯!

+0

私はコードと他の役に立つリンクを追加して私の答えを編集しました。 –

+0

良いと思う - 私は少しクリーンアップしてあなたのリンクを修正しましたが、それ以外は確かな答えです。アドバイスと幸運を取ってくれてありがとう! – Mogsdad

+0

ここはLocationByGPSです。これは? –