我对Android和GPS上的LocationManager有一些问题(到目前为止)。请随意回答以下任何问题,我提前感谢您的帮助! (我注意到这些东西似乎没有很好地记录,所以希望这些问题也能帮助其他人!)
1)我使用以下代码,但我认为这里可能会有额外的毛病,我不需要。你能告诉我我是否可以删除这些内容吗?
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
LocationProvider locationProvider = lm.getProvider("gps");
Location currentLocation = lm.getLastKnownLocation(locationProvider.getName());
2)有没有办法推迟最后一步(访问“getLastKnownLocation”直到我确定我有GPS锁定?如果调用它并且GPS仍在寻找信号会怎么样?
3)最重要的是,我想确保在进入下一个方法之前有GPS锁定,那么有没有办法检查GPS是否锁定并且getLastKnownLocation是最新的?
4)有没有办法在收到锁定并更新getLastKnownLocation后“关闭”GPS监听器?一旦获得锁定,我认为不需要为我的应用程序保持运行..
5)你能否确认我的假设“getLastKnownLocation”在接收器移动时经常更新?
6)在我的代码中,我还有一个名为“ MyLocationListener ”的类(下面的代码),老实说,我刚刚从另一个例子中获取了..这实际上需要吗?我假设每当位置发生变化时,这都会更新我的位置管理器,但是肯定看不到课程本身有多大的内容!
private class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
//Toast.makeText(getBaseContext(), "Location changed : Lat: " + loc.getLatitude() + " Lng: " + loc.getLongitude(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:4)
LocationManager.GPS_PROVIDER
为"gps"
,因此请使用LocationManager.GPS_PROVIDER
。对于以下答案,我假设“GPS锁定”是指“GPS修复”。
“有没有办法推迟最后一步(访问”getLastKnownLocation“直到我确定我有GPS锁定?” - 当然,不要调用方法。“如果这样做会怎么样被叫,GPS还在寻找信号?“ - 它返回null
。
“最重要的是,我想确保在进入下一个方法之前有GPS锁定” - 这是不可能的。 “那么有没有办法检查GPS是否被锁定并且getLastKnownLocation是最新的?” - 如果getLastKnownLocation()
返回null
,则表示您没有修复。
通过LocationListener
取消注册removeUpdates()
。
是的,您的假设是正确的,至少对于“频繁”的某些定义是正确的。
是的,您需要LocationListener
个实例才能使用requestLocationUpdates()
。更重要的是,当您第一次使用onLocationChanged()
进行呼叫时,这意味着您获得了第一次修复。据推测,对于您似乎想要使用代码的方式,您可以在此处理修复,然后删除上面的#{1}}#。