Java 如何保持LocationManager在后台运行?
我正在尝试编写一个跟踪应用程序,它需要获取位置数据并将其显示在地图上。当应用程序在屏幕上时,它可以正常工作,但当它在屏幕外或手机被锁定时,它将不会接收和位置更新。即使手机被锁定,我还能做些什么来保持更新Java 如何保持LocationManager在后台运行?,java,android,google-maps,Java,Android,Google Maps,我正在尝试编写一个跟踪应用程序,它需要获取位置数据并将其显示在地图上。当应用程序在屏幕上时,它可以正常工作,但当它在屏幕外或手机被锁定时,它将不会接收和位置更新。即使手机被锁定,我还能做些什么来保持更新 locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); ... locationManager.requestLocationUpdates(LocationManage
locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
...
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2500,5, locationListenerGPS);
...
LocationListener locationListenerGPS = new LocationListener() {
@Override
public void onLocationChanged(android.location.Location location) {
LatLongLastKnownPos = LatLongCurrentPos;
LatLongCurrentPos = new LatLng(location.getLatitude(), location.getLongitude());
if ( isMapReady ) { updateMap(); }
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
? 最新版本的安卓系统对位置更新非常挑剔。在安卓10和更高版本中,对此有特定的许可,但一般来说,这是不被接受的。因为这会对隐私造成危害,所以Android将来可能会完全禁止它。谢谢,我会尝试实现这一点。也许某种startForegroundService()可能是个好主意?