我读过这样的帖子,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();
}
但是当提供程序被激活时,只有当我关闭并打开智能手机上的 GPS 时,它才不会执行方法 onProviderEnabled() 的代码。
当我启动应用程序时,我看到一张 map ,5 秒后我在我的位置上看到一个蓝点,但 myPosition() 方法未执行。
我怎样才能做到这一点?
谢谢大家。
最佳答案
我试图搜索相关内容,并在这些链接中找到了 requestLocationUpdates() 方法:1 2 (西类牙语),但它在我的项目中不起作用。
所以我必须从其他方式进行更多搜索,因为我的问题不是位置,而是相机移动到这个位置。我找到了 TimerTask 库并使用了它。
我将此代码添加到其他代码中:
public class TimerClass extends TimerTask{
public void run () {
runOnUiThread(new Runnable() {
@Override
public void run () {
if(!pass) {
myPosition();
}
}
});
}
}
它是 MainActivity 类中的一个类。
我不知道它是否正确,但运行没有任何问题。如果有人知道解决此问题的其他方法,请回答此评论。
关于java - 安卓定位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31679960/