locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
が場所nullを返す理由がわかりません。 null
を除いて、すべての許可を与えました。
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
これとまったく同じ問題がありました。それは私のデバイスが最後の既知の場所を保存していなかったからです。私は単にGoogleマップに行き、GPSで自分の位置を特定し、その後getLastKnownLocation()の値が返されました
このような場所の更新をリクエストできます
_mLocationManager.requestLocationUpdates(myProvider, 0, 0, locationListener);
_
その後、_locationListener.onLocationChanged
_の最初のコールバックで座標を設定します。 mLocationManager.removeUpdates(locationListener)
を呼び出すことを忘れないでください
documentation にコード化すると、デバイスが最後の既知の場所を認識していない場合、nullを返します。おそらくGPSはあなたを見つけることができません。とにかく、1分以上かかります。だから、晴れた空の下で、高層ビルから離れて外に出て、GPSがあなたを見つけることができるまで待ちましょう。
位置情報を取得するためにこの方法を使用しました
private void startReceivingLocationUpdates() {
if (mLocationManager == null) {
mLocationManager = (Android.location.LocationManager)
mContext.getSystemService(Context.LOCATION_SERVICE);
}
if (mLocationManager != null) {
try {
mLocationManager.requestLocationUpdates(
Android.location.LocationManager.NETWORK_PROVIDER,
1000,
0F,
mLocationListeners[1]);
}
catch (SecurityException ex)
{
Log.i(TAG, "fail to request location update, ignore", ex);
}
catch (IllegalArgumentException ex)
{
Log.d(TAG, "provider does not exist " + ex.getMessage());
}
try {
mLocationManager.requestLocationUpdates(
Android.location.LocationManager.GPS_PROVIDER,
1000,
0F,
mLocationListeners[0]);
if (mListener != null) mListener.showGpsOnScreenIndicator(false);
}
catch (SecurityException ex) {
Log.i(TAG, "fail to request location update, ignore", ex); }
catch (IllegalArgumentException ex) {
Log.d(TAG, "provider does not exist " + ex.getMessage()); }
Log.d(TAG, "startReceivingLocationUpdates");
}
}
GPSをプロバイダーとして使用すると、1〜2 mntで結果が得られるので、ロケーションストップを取得するときにそれを論争で確認する必要があり、ネットワークプロバイダーは要求時にすぐにロケーションを提供します。そのため、GPSプロバイダーでは現在地の緯度経度を即座に取得できません。
GPSは最初に1〜2回しかかかりません。その後、電話で位置情報を提供します...