ホームページ  >  記事  >  Java  >  Android は GPS ナビゲーションを開き、位置情報を取得し、null ソリューションを返します

Android は GPS ナビゲーションを開き、位置情報を取得し、null ソリューションを返します

高洛峰
高洛峰オリジナル
2017-01-07 14:47:211950ブラウズ

最近 Android プロジェクトに取り組んでいて、位置情報を取得するために GPS を使用する必要があったので、API から確認したところ、位置情報の取得には非常に簡単な文だけが必要であることがわかりました。しかし、コードに書いたとたんに戻り値(Location型)が常にnullになってしまい…とてもイライラしました。インターネットで長い間検索した結果、多くの人が私と同じようにこの問題に悩まされていることがわかりました。GPS がオンになっていないためだと言う人もいれば、関連する権限が追加されていないためだと言う人もいます。ただし、私のものは設定で明らかにオンになっており、許可も自然に追加されています。長い間 API と格闘した結果、GPS をオンにするのは実際には

getLastKnownLocation(LocationManager.GPS_PROVIDER),

という文に依存していることがわかりました。これは携帯電話の設定とは何の関係もありません (少なくともこれは)。携帯電話でテストしたもの)。電話機の設定がオフになっている場合でも、この文はオンにすることができます。また、電話機の設定がオンになっている場合でも、この行がなければ役に立ちません。この文に相当するのは、GPS をオフにするために使用される

setTestProviderEnabled("gps",true);

です。

GPS をオンにした後、上記の方法を使用して位置情報を取得できますか?まだできない!正確に言うと、この関数は前回取得した位置情報を取得しているため、可能な場合もあります。このプログラムを初めて実行する場合、位置情報は取得されていないので、当然戻り値は null になります。 。 API を注意深く確認したところ、

setTestProviderEnabled("gps",false);

で次の文を見つけました。 最新の位置情報が必要な場合、アプリケーションは getLastKnownLocation(String) メソッドを使用して取得することがあります。位置情報を取得するには、このメソッドを使用してマネージャーのリスナーを設定し、リスナー内の onLocationChanged(Location location) から取得する必要があります。

テスト コードは次のとおりです:

requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)

テスト後、一定時間後に位置情報を取得できます (取得時間は minTime と minDistance に関連します)。注意が必要なもう 1 つの問題は、リスナーを設定した後、リスナーを削除する前に上記の方法を使用して GPS をオフにできないことです。オフにしないと、エラーが報告されます。したがって、GPS をオフにする方法は

public void onLocationChanged(Location location)
            {
                Log.i("onLocationChanged", "come in");
                if (location != null)
                {
                    Log.w("Location","Current altitude = "+ location.getAltitude()); 
                    Log.w("Location","Current latitude = "+ location.getLatitude());
                }
            }

以下はテスト コードです。必要な権限は次のとおりです:

manager.removeUpdates (listener);//listener 即为监听器实例
manager.setTestProviderEnabled("gps",false);
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>

Android が GPS ナビゲーションをオンにして位置情報を取得し、null ソリューションを返す場合の詳細については、注意してください。関連記事については、PHP 中国語 Web サイトにアクセスしてください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。