Android后台服务中的当前位置不起作用
创始人
2024-10-08 06:32:46
0

在 Android 后台服务中获取当前位置,需要在后台线程中执行。如果在主线程中执行,会导致阻塞 UI,并且后台服务会很快被销毁。

下面是获取当前位置的示例代码:

public class LocationService extends Service implements LocationListener {

    private LocationManager locationManager;
    private static final int LOCATION_INTERVAL = 1000;
    private static final float LOCATION_DISTANCE = 10f;

    private class LocationListener implements android.location.LocationListener{
        Location lastLocation;

        public LocationListener(String provider){
            lastLocation = new Location(provider);
        }

        @Override
        public void onLocationChanged(Location location) {
            lastLocation.set(location);
        }

        @Override
        public void onProviderDisabled(String provider) {}

        @Override
        public void onProviderEnabled(String provider) {}

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}
    }

    LocationListener[] locationListeners = new LocationListener[]{
            new LocationListener(LocationManager.GPS_PROVIDER),
            new LocationListener(LocationManager.NETWORK_PROVIDER)
    };

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i("LocationService", "Start location service.");
        super.onStartCommand(intent, flags, startId);
        return START_STICKY;
    }

    @Override
    public void onCreate() {
        Log.i("LocationService", "Create location service.");
        locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);

        try {
            locationManager.requestLocationUpdates(
                    LocationManager.NETWORK_PROVIDER,
                    LOCATION_INTERVAL,
                    LOCATION_DISTANCE,
                    locationListeners[1]
            );
        } catch (SecurityException ex) {
            Log.i("LocationService", "Fail to request location update, ignore." + ex.getMessage());
        } catch (IllegalArgumentException ex) {
            Log.d("LocationService", "Network provider does not exist, " + ex.getMessage());
        }

        try {
            locationManager.requestLocationUpdates(
                    LocationManager.GPS_PROVIDER,
                    LOCATION_INTERVAL,
                    LOCATION_DISTANCE,
                    locationListeners

相关内容

热门资讯

信息共享!hhpoker作弊实... 信息共享!hhpoker作弊实战视频,newpoker脚本,专业教程(有挂软件)这是由厦门游乐互动科...
透视苹果版!wepoker怎么... 透视苹果版!wepoker怎么提高运气(透视)原来是真的有挂(详细辅助详细教程)1)辅助挂:进一步探...
揭秘攻略!wepoker私人定... 1、揭秘攻略!wepoker私人定制透视,德普之星怎么设置埋牌,曝光教程(有挂透视);详细教程。2、...
透视苹果版!hhpoker可以... 透视苹果版!hhpoker可以控制吗(透视)都是真的有挂(详细辅助2025新版总结)1、该软件可以轻...
总算了解!hhpoker一直输... 总算了解!hhpoker一直输有挂吗,wepoker买钻石有用吗,靠谱教程(有挂辅助)是一款可以让一...
透视工具!aapoker辅助插... 透视工具!aapoker辅助插件工具(透视)原来有挂(详细辅助必备教程)1、点击下载安装,aapok...
发现一款!hhpoker怎么开... 发现一款!hhpoker怎么开透视,pokerworld修改器,大神讲解(有挂辅助)1、许多玩家不知...
透视脚本!wepoker有透视... 透视脚本!wepoker有透视底牌吗(透视)总是是有挂(详细辅助必赢方法);在进入辅助挂后,参与本局...
如何分辨真伪!hhpoker万... 如何分辨真伪!hhpoker万能辅助器,哈糖大菠萝免费辅助器,新2025版(有挂软件);小薇(透视辅...
透视辅助!约局吧是否有挂(透视... 透视辅助!约局吧是否有挂(透视)切实真的是有挂(详细辅助必胜教程);1、透视辅助简单,软件透明挂操作...