ユーザーが位置設定オプションで 3 つのモードから選択した位置モードに関する情報を取得することは可能ですか?
1.高精度
2.バッテリーの節約
3.GPSのみ
ユーザーが高精度モードを選択したかどうかをプログラムで確認したい場合は、自動的に有効にします。出来ますか ?ご意見をお聞かせください。
ユーザーが位置設定オプションで 3 つのモードから選択した位置モードに関する情報を取得することは可能ですか?
1.高精度
2.バッテリーの節約
3.GPSのみ
ユーザーが高精度モードを選択したかどうかをプログラムで確認したい場合は、自動的に有効にします。出来ますか ?ご意見をお聞かせください。
API レベル 19 (Kitkat)以降、デバイスの現在のロケーション モードを取得できます。
public int getLocationMode(Context context) {
return Settings.Secure.getInt(activityUnderTest.getContentResolver(), Settings.Secure.LOCATION_MODE);
}
可能な戻り値は次のとおりです (こちらを参照)。
0 = LOCATION_MODE_OFF
1 = LOCATION_MODE_SENSORS_ONLY
2 = LOCATION_MODE_BATTERY_SAVING
3 = LOCATION_MODE_HIGH_ACCURACY
だからあなたは次のようなものが欲しい
if(getLocationMode(context) == 3) {
// do stuff
}
残念ながら、位置情報モードをプログラムで設定することはできませんが、ユーザーを設定画面に直接送ることができます。
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
LocationMamager.requestLocationUpdates で基準を指定できます。基準として、次の値のいずれかを指定して、必要な精度を選択できます。
Constants
int ACCURACY_COARSE A constant indicating an approximate accuracy requirement
int ACCURACY_FINE A constant indicating a finer location accuracy requirement
int ACCURACY_HIGH a constant indicating a high accuracy requirement - may be used for horizontal, altitude, speed or bearing accuracy.
int ACCURACY_LOW A constant indicating a low location accuracy requirement - may be used for horizontal, altitude, speed or bearing accuracy.
int ACCURACY_MEDIUM A constant indicating a medium accuracy requirement - currently used only for horizontal accuracy.
http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long , float, android.location.Criteria, android.app.PendingIntent)を参照してください 。
API レベル 28 以降、LocationManager.isProviderEnabled()を使用して、特定のプロバイダーが有効かどうかを確認する必要があります。
残念ながら、アプリからプログラムで設定を変更することはできません。