利用可能なプロバイダーを使用して、ユーザーの位置データを取得する必要があります。すべてのプロバイダーが無効になっている場合は、ダイアログをポップアップして、ユーザーが位置情報サービスに移動し、プロバイダー (GPS および/またはネットワークが利用可能なもの) を有効にできるようにする必要があります。Prestigio PMP5197D ULTRA でプロバイダーが利用可能かどうかを確認する際に問題が発生しました。GPSサービスはありません。次のコードを使用しました。
// I get and log list of disabled providers...
ArrayList<String> names = (ArrayList<String>)locationManager.getProviders(false);
for(String t: names){
Log.e("TEST", "DISABLED " + t);
}
// I get and log list of enabled providers...
ArrayList<String> names2 = (ArrayList<String>)locationManager.getProviders(true);
for(String t: names2){
Log.e("TEST", "ENABLED " + t);
}
次のデバイスではすべて問題ありません...
NEXUS 7 (2013) (4.3)
場所 設定
で無効 無効 パッシブ
無効 gps
無効 ネットワーク
有効 パッシブ
設定
で有効になっている場所 無効 パッシブ
無効 gps
無効 ネットワーク
有効 パッシブ
有効 gps
有効 ネットワーク
HTC Desire (2.2.2)
場所 設定
で無効 無効 ネットワーク
無効 パッシブ
無効 gps
有効 パッシブ
設定
で有効になっている場所 無効 パッシブ
無効 gps
有効 ネットワーク
有効 パッシブ
有効 gps
しかし、このタブレットでは常に GPS がアクティブになっています。デバイスに GPS がないため、これは非常に奇妙です。もちろん、設定には GPS のオプションはありません。
Prestigio PMP5197D
ULTRA (4.0.3) - デバイスに GPS がない 場所
設定で無効 無効ネットワーク
無効
パッシブ
無効
gps
有効
パッシブ
有効
gps
設定
で有効な場所 無効な
ネットワーク
無効なパッシブ
無効な
gps
有効な
ネットワーク
有効なパッシブ
有効な
gps
ユーザーが位置情報ボタンをクリックしようとすると、位置情報サービスが無効になっている場合 (ネットワークのみが利用可能)、ユーザーに対して前述のダイアログをポップアップする必要があります。しかし、ロケーション マネージャーのメソッド isProviderEnabled(LocationManager.GPS_PROVIDER) が true を返すため、GPS が有効で、ライブで動作しているように見えます。そのため、ユーザーにダイアログを表示せず、データも取得されません。この問題の回避策を知っている人はいますか?