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

相关内容

热门资讯

此事备受玩家关注!哈糖大菠萝助... 此事备受玩家关注!哈糖大菠萝助手(透视)哥哥打大a脚本(好像真的有辅助app)-哔哩哔哩1、完成哈糖...
透视ai代打!pokerwor... 透视ai代打!pokerworld辅助器(透视)决战血流辅助器(本来是有辅助安装)-哔哩哔哩1、决战...
透视透视!wepoker破解游... 透视透视!wepoker破解游戏盒子(透视)新道游正版辅助(真是是真的辅助修改器)-哔哩哔哩1、新道...
透视辅助!wepoker科技辅... 透视辅助!wepoker科技辅助器(透视)南丰数刀脚本(总是是真的辅助神器)-哔哩哔哩1、每一步都需...
透视教学!pokemomo辅助... 透视教学!pokemomo辅助软件(透视)决战卡五星游戏辅助(一直真的是有辅助安装)-哔哩哔哩1、许...
透视安装!wepoker软件安... 透视安装!wepoker软件安装包(透视)天天手游辅助工具(竟然存在有辅助软件)-哔哩哔哩天天手游辅...
透视ai!佛手大菠萝13道挂哪... 透视ai!佛手大菠萝13道挂哪里(透视)新世界辅助器(果然真的是有辅助下载)-哔哩哔哩1、金币登录送...
透视app!wepoker轻量... 透视app!wepoker轻量版透视(透视)小程序透视辅助(真是真的有辅助软件)-哔哩哔哩1、完成小...
随着!hhpoker到底可以作... 随着!hhpoker到底可以作必弊码(透视)新畅游互娱辅助(总是真的有辅助安装)-哔哩哔哩1、每一步...
透视实锤!约局吧app有挂吗(... 透视实锤!约局吧app有挂吗(透视)三江互娱辅助(原来是真的辅助修改器)-哔哩哔哩所有人都在同一条线...