Android FusedLocationProviderClient未发送位置更新

Android FusedLocationProviderClient未发送位置更新,android,service,location,google-play-services,Android,Service,Location,Google Play Services,我尝试在Android上使用新的简化位置API(在GPS 11.0中引入)。我编写了一个实现位置API的服务。但它只会触发并发送位置几秒钟(仅2次) 公共类定位服务扩展服务{ 公共静态最终字符串标记=makeLogTag(“LocationService”); 专用静态最终浮动位置\跟踪\最小\距离=15f; 专用静态最终浮点数接受精度=50f; private final IBinder mBinder=new LocalBinder(); //融合定位api 私有FusedLocationP

我尝试在Android上使用新的简化位置API(在GPS 11.0中引入)。我编写了一个实现位置API的服务。但它只会触发并发送位置几秒钟(仅2次)

公共类定位服务扩展服务{
公共静态最终字符串标记=makeLogTag(“LocationService”);
专用静态最终浮动位置\跟踪\最小\距离=15f;
专用静态最终浮点数接受精度=50f;
private final IBinder mBinder=new LocalBinder();
//融合定位api
私有FusedLocationProviderClient mFusedLocationClient;
私人位置请求mLocationRequest;
私有位置回调mLocationCallback;
@凌驾
public void onCreate(){
super.onCreate();
Log.i(标记“onCreate”);
mFusedLocationClient=LocationServices.getFusedLocationProviderClient(此);
createLocationCallback();
createLocationRequest();
}
@凌驾
公共int onStartCommand(Intent Intent、int标志、int startId){
Log.i(标记“onStartCommand”);
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予){
stopSelf();
返回开始时间不粘;
}
getLastKnownLocation();
startPeriodicLocationUpdate();
返回开始时间;
}
@凌驾
公共空间{
super.ondestory();
stopPeriodicLocationUpdate();
Log.i(标记“onDestroy-Estou sendo destruido”);
}
@可空
@凌驾
公共IBinder onBind(意向){
返回mBinder;
}
私有void getLastKnownLocation(){
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予){
返回;
}
mFusedLocationClient.getLastLocation()文件
.addOnCompleteListener(任务->{
if(task.issusccessful()&&task.getResult()!=null){
Location lastLocation=task.getResult();
存储位置(上次位置);
}
});
}
私有void createLocationRequest(){
mlLocationRequest=新位置请求()
.setInterval(TimeUnit.SECONDS.toMillis(Params.getAgentLocationTrackingUpdateInterval()))
.SetFastTestInterval(TimeUnit.SECONDS.toMillis(Params.getAgentLocationTrackingUpdateInterval()))
.setExpirationDuration(时间单位为秒,单位为10))
.setPriority(位置请求。优先级高精度);
}
私有void createLocationCallback(){
mlLocationCallback=新位置Callback(){
@凌驾
public void onLocationResult(LocationResult LocationResult){
super.onLocationResult(定位结果);
Location Location=locationResult.getLastLocation();
如果(位置!=null){
店址(位置);
}
Log.i(标签“locationResult start”);
对于(Location location1:locationResult.getLocations()){
Log.i(标记“locationResult location”+location1.getLatitude()+“”+location1.getLatitude()+“”+location1.getLatitude()+“”+location1.getAccurance()+“”+location1.getProvider());
}
Log.i(标签“定位结果停止”);
}
};
}
私有void startPeriodicLocationUpdate(){
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予){
返回;
}
Log.i(标签“定期更新”);
mFusedLocationClient.RequestLocationUpdate(mlLocationRequest、mlLocationCallback、Looper.myLooper());
}
私有void stopPeriodicLocationUpdate(){
mFusedLocationClient.RemovelocationUpdate(MLLocationCallback)
.addOnCompleteListener(任务->登录(标记“已删除位置更新”);
}
私有void存储位置(位置){
Log.i(标记,“周期位置”+location.getLatitude()+“”+location.getLatitude()+“”+location.getAccurance()+“”+location.getProvider());

如果(location.getAccurance()原因是这一行

  .setExpirationDuration(TimeUnit.SECONDS.toMillis(10))

@bkach LocationRequest在10秒后过期Shello如何使此服务在前台时与我的活动通信?就像每次调用位置回调时都要更新映射一样?示例tut
  .setExpirationDuration(TimeUnit.SECONDS.toMillis(10))