我的应用程序旨在定期跟踪用户的位置并将其发送到服务器,最近我使用Google Play服务位置API更改了我的代码。
我在onStartCommand中创建了locationclient并连接到服务。
public int onStartCommand(Intent intent, int flags, int startId) {
setUpLocationClientIfNeeded();
if(!mLocationClient.isConnected() || !mLocationClient.isConnecting())
mLocationClient.connect();
return START_STICKY;
}
而在onConnected方法中,我发送了一个位置请求。
@Override
public void onConnected(Bundle arg0) {
System.out.println("Connected ...");
mLocationClient.requestLocationUpdates(REQUEST, this);
}
REQUEST对象是指:
private static final LocationRequest REQUEST = LocationRequest.create()
.setInterval(5*60*1000) // 5 minutes
.setFastestInterval(3*60*1000) // 3 minutes
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
现在的问题是:
- onLocationChanged方法没有按照给定的间隔时间(5分钟或最快间隔3分钟)被调用。从日志中可以看到,它只被调用了两到三次,之后就再也没有被调用过了(我检查了一个小时后)。
这段代码有什么问题?(我也找不到任何“disconnected”的日志)
- 为了解决这个问题,我尝试使用AlarmManager来定期调用任务。现在如何通过BroadcastReceiver从LocationClient中获取单个位置更新?(locationClient.getLastLocation()只会返回上一次存储的位置,而不会请求新的位置)