Android LocationServices.FusedLocationApi.getLastLocation returns "null"
Android LocationServices.FusedLocationApi.getLastLocation returns "null"
我已经在其他线程中阅读了这个问题的解决方案,但我似乎不明白为什么它 return 为空。我使用了 google 开发者网站中提供的相同片段:https://developer.android.com/training/location/retrieve-current.html
我在 activity 中使用以下代码来获取用户的当前位置:
public class MainActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener {
protected GoogleApiClient mGoogleApiClient;
protected Location mLastLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buildGoogleApiClient();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
@Override
public void onConnected(Bundle connectionHint) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient);
if (mLastLocation != null) {
mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
}
}
}
如果"mLastLocation"始终为空,我们如何编写代码来获取用户的当前位置?
阅读此解决方案:
private static GoogleApiClient mGoogleApiClient;
Location currentLocation = LocationServices.FusedLocationApi
.getLastLocation(mGoogleApiClient);
文档指出(在文章底部):
The location object returned may be null in rare cases when the location is not available.
当设备禁用定位服务或设备处于飞行模式时,可能会发生这种情况。当长时间未请求位置时,它似乎也会发生。
您可能需要检查您正在使用的设备的位置设置。我有同样的问题。我的位置设置设置为仅使用 gps,我将其切换为高精度,使用 wifi、gps 和移动服务来确定您的位置。这为我解决了问题。希望对你有帮助
我已经在其他线程中阅读了这个问题的解决方案,但我似乎不明白为什么它 return 为空。我使用了 google 开发者网站中提供的相同片段:https://developer.android.com/training/location/retrieve-current.html
我在 activity 中使用以下代码来获取用户的当前位置:
public class MainActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener {
protected GoogleApiClient mGoogleApiClient;
protected Location mLastLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buildGoogleApiClient();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
@Override
public void onConnected(Bundle connectionHint) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient);
if (mLastLocation != null) {
mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
}
}
}
如果"mLastLocation"始终为空,我们如何编写代码来获取用户的当前位置?
阅读此解决方案:
private static GoogleApiClient mGoogleApiClient;
Location currentLocation = LocationServices.FusedLocationApi
.getLastLocation(mGoogleApiClient);
文档指出(在文章底部):
The location object returned may be null in rare cases when the location is not available.
当设备禁用定位服务或设备处于飞行模式时,可能会发生这种情况。当长时间未请求位置时,它似乎也会发生。
您可能需要检查您正在使用的设备的位置设置。我有同样的问题。我的位置设置设置为仅使用 gps,我将其切换为高精度,使用 wifi、gps 和移动服务来确定您的位置。这为我解决了问题。希望对你有帮助