【发布时间】:2015-07-28 14:54:47
【问题描述】:
我读过这样的帖子,android getlastknownlocation returns null,但除了已知位置之外,我还有一个问题。
我知道,如果我没有任何提供程序,我就无法获得任何已知位置 getLastKnowedLocation()。但是,当检测到提供者时如何获取位置?
我使用这个代码:
public void myPosition() {
if (mapa.getMyLocation() != null)
mapa.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng( mapa.getMyLocation().getLatitude(), mapa.getMyLocation().getLongitude()), 13));
else{
loca = locaMan.getLastKnownLocation(bestProvi);
if (loca != null)
mapa.moveCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng( loca.getLatitude(), loca.getLongitude()), 15));
}
}
public void onLocationChanged(Location location) {
myPosition();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
myPosition();
}
@Override
public void onProviderEnabled(String provider) {
myPosition();
Toast toast1 =Toast.makeText(getApplicationContext(),"Provider ON", Toast.LENGTH_SHORT);
toast1.show();
}
@Override
public void onProviderDisabled(String provider) {
Toast toast1 =Toast.makeText(getApplicationContext(),"Provider OFF", Toast.LENGTH_SHORT);
toast1.show();
}
但是当提供者被激活时,它不会执行方法 onProviderEnabled() 的代码,只有当我在我的智能手机上关闭并打开 GPS 时。
当我启动应用程序时,我看到了一张地图,并且在我看到我的位置上方有一个蓝点 5 秒后,但 myPosition() 方法没有被执行。
我该怎么做?
谢谢大家。
【问题讨论】:
-
myPosition() 方法没有执行。你如何验证?
-
一开始在onCreate()中执行,但没有找到任何provider,任何不符合任何“if”的更改。但是在 OnStatusChanged () 或 onProviderEnabled () 部分它什么也不做。虽然在地图上我的位置上的蓝点在五秒钟后出现,但它没有被检测为更改或提供程序激活。这一切都通过 Android Studio 调试器进行了验证。