4

Android用の地理ベースのアプリを実装したため、GPSが常に有効になっていることを確認する必要があります。問題はそれです

manager.isProviderEnabled( LocationManager.GPS_PROVIDER )

GPSプロバイダーが有効になっている場合でも、は常にfalseを返します。そのため、アプリはGPSステータスを変更するためのアラートを常に表示しているか、機能していません。

何が起こっているのか知っていますか?

サムスンギャラクシーSとHTCワイルドファイアデバイスでテストしています...よろしくお願いします。

4

3 に答える 3

5

システムから直接GPSステータスを取得できます。

LocationManager myLocationManager = (LocationManager)  getSystemService(Context.LOCATION_SERVICE);

private boolean getGPSStatus()
{
   String allowedLocationProviders =
   Settings.System.getString(getContentResolver(),
   Settings.System.LOCATION_PROVIDERS_ALLOWED);

   if (allowedLocationProviders == null) {
      allowedLocationProviders = "";
   }

   return allowedLocationProviders.contains(LocationManager.GPS_PROVIDER);
} 
于 2012-07-05T10:19:29.990 に答える
0

まず、GPSが実際に携帯電話に存在するかどうかを確認する必要があります。お使いの携帯電話が安価な携帯電話である場合、おそらくそれはロケーションプロバイダーとしてネットワークロケーションを使用します。

あなたはこれを試すことができます:

private boolean isGPSEnabled() {
Context context = Session.getInstance().getCurrentPresenter().getViewContext();

LocationManager locationMgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

boolean GPS_Sts = locationMgr.isProviderEnabled(LocationManager.NETWORK_PROVIDER)|| locationMgr.isProviderEnabled(LocationManager.GPS_PROVIDER);

return GPS_Sts;
}
于 2016-06-10T17:27:01.417 に答える
0

デバイスの設定で、GPSシステムではなくWiFiネットワークを使用して位置情報を取得するように設定されている場合があります。そのため、位置情報は開かれますが、アプリをチェックするとfalseが返されますGPS_PROVIDER

これに対する適切な解決策は、GPSとネットワークの両方をチェックすることです。

を使用して確認したい場合Settings

private boolean checkIfLocationOpened() {
    String provider = Settings.Secure.getString(getActivity().getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
    if (provider.contains("gps") || provider.contains("network"))
        return true;
    }
    // otherwise return false
    return false;
}

LocationManager:を使用してそれを実行したい場合

private boolean checkIfLocationOpened() {
    final LocationManager manager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
    if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER) || manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
        return true;
    }
    // otherwise return false
    return false;
}

あなたはここで私の答えで完全な詳細を見つけることができます。

于 2017-11-13T06:14:04.627 に答える