Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何保持LocationManager在后台运行?_Java_Android_Google Maps - Fatal编程技术网

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()可能是个好主意?