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

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

高洛峰
リリース: 2017-01-07 14:47:21
オリジナル
1994 人が閲覧しました

最近 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 サイトにアクセスしてください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート