Androidプロジェクトに位置情報を追加する簡単な方法

長い間、私は簡単な解決策を探してインターネットを探しました。どうすればプロジェクトに1つのクラスだけを追加でき、ジオロケーションの問題を心配する必要はありません。
基準は次のとおりです。
1)外部コードを使用して、可能な限り少ない1クラスですべてを解決します。
2)ユーザーは常に自分の位置が示されている静的変数を1つ手元に持っている必要があり、他に何も知らないようにする必要があります。

ほとんどの投稿は提起された質問に答えませんでした。もちろん、最初にサービスにアクセスする必要があります。その後、listnerをインストールする必要があります。その後、3ページの短い方法をご覧ください。
その結果、私はあなたに紹介したい私のクラスを書きました:それは使いやすく誰でもそれを扱うことができます:それをプロジェクトに追加するだけであなたは幸せになります。

import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; class MyLocationListener implements LocationListener { static Location imHere; //          . public static void SetUpLocationListener(Context context) //         { LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); LocationListener locationListener = new MyLocationListener(); locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 5000, 10, locationListener); //         imHere = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); } @Override public void onLocationChanged(Location loc) { imHere = loc; } @Override public void onProviderDisabled(String provider) {} @Override public void onProviderEnabled(String provider) {} @Override public void onStatusChanged(String provider, int status, Bundle extras) {} } 


それで何がありますか

クラスは3つの部分に分かれています。
1) imHere - Location型の変数で、ユーザーの位置に関する最新情報が常に利用可能です。
2) SetUpLocationListener関数-いずれの場合でも、システムが関与せずにimHere変数の更新を開始するには、初期インストールが必要です。
3) LocationListenerの他のすべての必須部分は、自由にやり直すことができます。

それでは、どのように機能しますか?

1)クラスMyLocationListenerを作成します
2)上記のコードをコピーします
3)メイン関数(たとえば、 MainActivity )で、最初の方に近づいて起動します。

 MyLocationListener.SetUpLocationListener(this); 

またはストリーム愛好家向け
 final Context mainContext = this; new Thread(new Runnable() { @Override public void run() { MyLocationListener.SetUpLocationListener(mainContext); } }).start(); 


4)現在、プロジェクトのどの部分にも、 Location型の変数MyLocationListener.imHereがあります。 この変数には、最新のユーザーの場所と、位置決定の速度や正確さなどの多くの追加情報が格納されます。

結論として、これは原則的なコードであり、改善すべき点があります。 たとえば、最初は場所が定義されておらず、imHereがnullになる可能性があることを考慮する必要がありますが、これはすぐではありません:これで、特別な労力と最小限の知識でプロジェクトに地理位置情報を追加できるクラスができました。

(!)忘れないでください:選択したプロバイダーに応じて、適切な許可をマニフェストに追加する必要があります。 たとえば、上記で使用したGPS_PROVIDERでは、次の行をマニフェストに追加する必要があります。

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Source: https://habr.com/ru/post/J201648/


All Articles