25

LocationManager で利用できるプロバイダーがあるかどうかを判断できますが、Google Play Services のロケーション API を使用して行うことはできますか?

何も有効にされていない場合、実際には「現在地へのアクセス」がオフになっており、すべての API 呼び出し (connect()、requestLocationUpdates()) は成功しますが、onLocationChanged() を取得することはありません。

LocationManager と LocationClient の両方を使用する必要があるのはばかげているようです。

私が必要としているのは、 onLocationChanged(0 が決して呼び出されないことを知る方法だと思います。

4

4 に答える 4

26

ドキュメントをくまなく調べましたが、LocationClient を使用して位置情報サービスが有効になっているかどうかを検出する方法も見つかりませんでした。onConnected、onDisconnected、および onConnectionFailed は、位置情報サービスが有効かどうかに関連していないようです。

現在、LocationClient を使用して位置情報の要求を行っていますがlocationManager.isProviderEnabled(String provider)、位置情報サービスが有効になっているかどうかを検出するために古い方法を使用しています。これは私にとって最適です。LocationClient が方法を提供したとしても、GPS とネットワークを区別しないため、ユーザーが GPS を有効にするように要求できるようにしたいからです。

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //GPS Provider disabled
    return false;
}
于 2013-05-31T22:01:46.830 に答える
12

Google Play サービス 7.3.0 以降、現在地の更新が利用可能かどうかを検出する信頼できる方法があります。

可用性ステータスを取得するためのLocationCallbackオーバーライドonLocationAvailability()または呼び出しを実装して登録します。LocationServices.FusedLocationApi.getLocationAvailability()false の場合は、デバイスの構成が変更されない限り、位置情報の更新が配信されないことがわかっています。

この方法は実際には非常にスマートです。たとえば、ネットワーク ロケーション プロバイダーが常に有効になっている場合でも、WiFi が無効になっている場合、またはデバイスが機内モードの場合、WiFi のみのデバイスに位置情報の更新が配信されないと判断できます。

于 2015-06-19T01:43:54.353 に答える
0

これは私にとってはうまくいきます。Amazon タブレット デバイスと Samsung s7 でテスト済み

 if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS) {
            //Google Play services are available
    } else {
            //Google Play services are not available on this device
    }
于 2018-09-11T10:30:22.590 に答える