我正在使用FusedLocationProviderClient.进行定位请求我已经保存了30秒的计时器,以检查是否在该时间框架内收到位置。代码如下:
public void requestLocationUpdates() {
initializeLocationRequest();
mFusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);
startTimer();
}
private void initializeLocationRequest() {
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(mContext);
mLocationRequest = new LocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(5000);
mLocationRequest.setFastestInterval(5000);
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
synchronized (SilentCurrentLocationProvider.this) {
super.onLocationResult(locationResult);
Location location = locationResult.getLastLocation();
}
};
}
private void startTimer() {
if (mTimeout < 1) {
mTimeout = mDefaultTimeout;
}
mTimer = new Timer();
mTimer.schedule(new LocationTimer(), mTimeout * 1000);
}在很少的设备上,定位是不可能的。在进一步调试时,我发现正在创建LocationRequest和LocationCallback,但它不在onLocationResult()方法中。
因为这是一个活产品的一部分,所以很难在每个设备上进行调试。就连我都试着重新启动电话,但都不起作用。用户尝试了其他应用程序,比如Ola和location。
位置权限也被授予了。
,有人能告诉我这个问题的可能原因吗?
发布于 2020-04-16 02:27:50
您只需要请求以下权限:
Manifest.permission.ACCESS_FINE_LOCATION我也遇到了同样的问题,我请求两个权限:
Manifest.permission.ACCESS_COARSE_LOCATION当我删除粗位置时,我几乎立即得到了更新。
发布于 2019-01-15 09:38:15
我也面临着同样的问题。在我的例子中,设备定位方法/准确性被设置为只打电话,而不是高精度或节省电池。将设置更改为高精度,并在locationCallback上接收回调。
发布于 2019-12-16 10:45:22
安卓派在手机上也有同样的问题。位置许可被授予(通过手动到应用程序设置)和位置是高精度的,但没有得到位置更新。在我添加代码以检查在请求位置更新之前是否授予了位置权限后,就得到了修复。
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted. Request for permission
}https://stackoverflow.com/questions/50870587
复制相似问题