需要在代码中修改获取定位的方式,以避免使用 Criteria.ACCURACY_FINE。
在 Android 12 上,使用 Criteria.ACCURACY_FINE 获取位置信息的代码会触发 lint 错误。为了修复这个问题,需要使用其他方式获取位置信息。
一种解决方法是使用 FusedLocationProviderClient 获取位置信息。具体实现方式如下:
private FusedLocationProviderClient fusedLocationClient;
...
// 在 Activity 或 Fragment 中初始化 FusedLocationProviderClient
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
...
// 获取最新位置信息
fusedLocationClient.getLastLocation().addOnSuccessListener(location -> {
// 处理位置信息
});
另一种解决方法是使用 LocationRequest 替换 Criteria.ACCURACY_FINE。具体实现方式如下:
LocationRequest locationRequest = LocationRequest.create()
// 设置精度等级
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
// 在 LocationCallback 中处理最新的位置信息
fusedLocationClient.requestLocationUpdates(locationRequest, new LocationCallback() {
@Override
public void onLocationResult(@NonNull LocationResult locationResult) {
Location lastLocation = locationResult.getLastLocation();
// 处理位置信息
}
}, Looper.getMainLooper());
这些方法可以避免使用 Criteria.ACCURACY_FINE 却能获取准确的位置信息,并且不会触发 Android 12 上的 lint 错误。