在 Android 上使用 LocationClient (v2 API) 获取最后已知位置的“正确”方法是什么?同步 manner?
UPDATE
这是我想出的最好的方法(它不是同步的,但它克服了处理问题的负担connect()
and onConnected()
每次需要最后一个已知位置时):
public enum SystemServicesNew implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener {
INSTANCE;
private LocationClient mLocationClient;
private Location mLastKnownLocation;
static {
INSTANCE.mLocationClient = new LocationClient(MyApp.getAppContext(), INSTANCE, INSTANCE);
INSTANCE.mLastKnownLocation = new Location("");
INSTANCE.mLastKnownLocation.setLatitude(0);
INSTANCE.mLastKnownLocation.setLongitude(0);
INSTANCE.getLastKnownLocation(); // fire it already so subsequent calls get the real location
}
public Location getLastKnownLocation()
{
if(!mLocationClient.isConnected()) {
mLocationClient.connect();
return mLastKnownLocation;
}
mLastKnownLocation = mLocationClient.getLastLocation();
return mLastKnownLocation;
}
@Override
public void onConnected(Bundle bundle) {
Toast.makeText(MyApp.getAppContext(), "LocationClient:Connected", Toast.LENGTH_SHORT).show();
}
@Override
public void onDisconnected() {
Toast.makeText(MyApp.getAppContext(), "LocationClient:Disconnected", Toast.LENGTH_SHORT).show();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Toast.makeText(MyApp.getAppContext(), connectionResult.toString(), Toast.LENGTH_SHORT).show();
}
}
我的 Java 技能...不太发达...有什么改进建议吗?
执行此操作的合法方法是使用 LocationClient 的
获取最后位置()
如果您想以同步方式执行此操作,请记住,它不会是一个精确的位置,在极少数情况下,它甚至可能不可用。检查以下文档:
public Location getLastLocation ()
返回当前可用的最佳最新位置。
如果某个位置不可用(这种情况很少发生),则将返回 null。将返回在尊重位置权限的同时可用的最佳准确度。
此方法提供了一种获取位置的简化方法。它特别适合不需要准确位置并且不想维护位置更新的额外逻辑的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)