我读过这样的帖子,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()方法没有被执行。
我怎么能这样做?
谢谢大家。