Android の位置情報システムの NETWORK プロバイダーを介して現在の位置座標を取得することは、ユーザーにとって困難であることがわかります、現在の座標ではなく古い座標を常に受け取るためです。複数の既存のクラスを実装しているにもかかわらず、問題は解決しません。
MainActivity
public class MainActivity extends Activity { GPSTracker mGPS = new GPSTracker(this); @Override protected void onCreate(Bundle savedInstanceState) { // ... if (mGPS.canGetLocation) { mGPS.getLocation(); // ... } else { // ... } } }
GPSTracker
public class GPSTracker implements LocationListener { private LocationManager locationManager; public Location getLocation() { // ... if (isNetworkEnabled) { locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); // ... } // ... return location; } }
この問題は、位置情報の更新が不十分であることが原因である可能性があります。これを解決するために変更されたコード スニペットは次のとおりです。
MainActivity
public class MainActivity extends Activity { private LocationListener mLocationListener = new LocationListener() { // ... }; @Override protected void onCreate(Bundle savedInstanceState) { // ... LocationManager mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, LOCATION_REFRESH_TIME, LOCATION_REFRESH_DISTANCE, mLocationListener); } }
Manifest
適切なアクセス許可が宣言されていることを確認します。マニフェストの中でファイル:
ネットワークベースの位置情報のみ
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
GPS ベースの位置情報のみ
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
以上がAndroid のネットワーク プロバイダーを使用すると古い位置座標が取得されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。