我的应用程序旨在定期跟踪用户的位置并将其发送到服务器,最近我使用 Google play services Location API 更改了我的代码。
我创建了 locationclient 并连接到 onStartCommand 中的服务
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);
}
请求对象是,
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 分钟)被调用。从我可以看到的日志中,它只被调用了两次或三次,之后它根本没有被调用(我在 1 小时后检查了)。
我上面的代码有什么问题?(我也看不到“断开连接”的任何日志)
- 为了解决这个问题,我尝试使用alarmmanager 定期调用任务。现在如何通过 Locationclient 从广播接收器获取单个位置更新。(locationclient.getLastlocation() 仅返回最后存储的位置,但它不请求新位置)