要在省电模式和屏幕关闭时获取位置,您可以使用Android的后台位置更新功能。以下是一种解决方法,包含了代码示例:
private FusedLocationProviderClient fusedLocationClient;
private LocationRequest locationRequest;
private LocationCallback locationCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
locationRequest = new LocationRequest();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(10000); // 10 seconds
locationRequest.setFastestInterval(5000); // 5 seconds
locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult != null) {
Location location = locationResult.getLastLocation();
// 处理获取到的位置信息
}
}
};
}
private void startLocationUpdates() {
fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null);
}
@Override
protected void onPause() {
super.onPause();
stopLocationUpdates();
}
private void stopLocationUpdates() {
fusedLocationClient.removeLocationUpdates(locationCallback);
}
这样,即使在省电模式和屏幕关闭时,您的应用仍然能够获取位置更新。请注意,如果在Android 10或更高版本中使用后台位置更新功能,您还需要请求ACCESS_BACKGROUND_LOCATION权限并在应用设置中启用后台位置权限。
上一篇:Android 9(API 28)上的AlertDialog中的EditText不会自动获取焦点。
下一篇:Android Admob 加载广告失败:0 - 等待未来的错误 TimeoutException 仅适用于 OREO 的问题