问题描述
我已使用FusedLocationProviderClient
通过以下请求检索了一次位置。
LocationRequest request = new LocationRequest();
request.setInterval(1000);
request.setNumUpdates(1);
request.setMaxWaitTime(2500);
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
我还应用了设置分辨率以启用GPS。一切正常即可正常进行。
但是,当我执行以下步骤时,该位置无法正常工作或花了超过3分钟的时间才能给出位置。
- 位置已关闭,并首次在GPS弹出窗口上单击“不,谢谢”按钮。
- 然后再次单击GPS弹出窗口上的“确定”按钮。
- 之后,我要求提供位置。但是在3-5分钟后仍无法获得位置信息,有时甚至无法显示。
修改
这是我的示例代码:-https://pastebin.com/zxVCMCPn
解决方法
这就是即时定位及其正常工作的方式。
//declare them universally //before on create
LocationRequest mLocationRequest;
LocationCallback mLocationCallback;
FusedLocationProviderClient fusedLocationProviderClient;
private void realLocation (){
if(liveloction){
locationrequestfunct();
if(mLocationPermissionGranted){
fusedLocationProviderClient.requestLocationUpdates(mLocationRequest,mLocationCallback,Looper.myLooper());
mMap.setMyLocationEnabled(true);
}
}
}
private void locationrequestfunct(){
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(30000);
mLocationRequest.setFastestInterval(10000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER);
}
,它应该在oncreate中 //初始化位置//两者都应该在创建时
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
//the call back will not work if is not in on create
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
}
};