2017-08-15 52 views
0

我想通过单击按钮找到用户。所以我用这个代码:Android请求位置更新没有正确调用

lm = getSystemService(LocationManager.class); 
provider = LocationManager.GPS_PROVIDER; 
listener = new LocationListener() { 
@Override 
public void onLocationChanged(Location location) { 
    Log.e("UPDATE","UPDATING LOCATION"); 
} 
@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 

} 
@Override 
public void onProviderEnabled(String s) { 

} 
@Override 
public void onProviderDisabled(String s) { 

} 
}; 

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); 

的requestLocationUpdates方法被调用,但onLocationChanged方法只叫了几声。 GPS被激活并且授权被允许。

你知道为什么onLocationChanged不总是被调用吗?我还检查了getLastKnownLocation,它在调用requestLocationUpdates之后有时是错误的。

+0

检查它在这里说什么,看看它是否有帮助:https://stackoverflow.com/a/8600896/3965050 –

+0

我试图注册侦听器内requestLocationUpdates。现在它永远不会被调用。 LocationManager也被选中(不为空)。 – JavaForAndroid

+0

不,但我的意思是这部分:onLocationChanged()将在当前位置更新与最后一个已知位置不匹配时被调用。 –

回答

0

我认为onLocationChanged()不是总是被调用,它只会在位置发生变化时才被调用。

0

我将请求方法更改为lm.requestSingleUpdate(criteria, listener,null);,它的工作原理与requestLocationUpdates一样完美。

似乎是提供商的问题。