管灌系统巡查员智能手机App
zuoxiao
2024-09-20 13b3e727a6c252887cea8aa6b0856c967f036731
app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java
@@ -21,7 +21,9 @@
import com.baidu.location.LocationClientOption;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.activity.MainActivity;
import com.dayu.pipirrapp.bean.db.LatLonBean;
import com.dayu.pipirrapp.utils.MyLog;
import com.jeremyliao.liveeventbus.LiveEventBus;
import com.tencent.bugly.crashreport.CrashReport;
/**
@@ -41,7 +43,10 @@
    /**
     * 是否一次性定位
     */
    boolean isSingle;
    boolean isSingle = false;
    //    是否已经定位
    boolean isPositioned = false;
    @Nullable
    @Override
@@ -85,13 +90,6 @@
//        createBDLocation();
    }
//    /**
//     * @param isSingle 是否是单次定位
//     */
//    public MyLocationService(boolean isSingle) {
//        this.isSingle = isSingle;
//
//    }
    /**
     * 原生的定位服务
@@ -176,6 +174,7 @@
            String longitude = "Longitude:" + location.getLongitude();
            String latitude = "Latitude:" + location.getLatitude();
            MyLog.i("原生定位onLocationChanged:  Latitude:" + latitude + "  Longitude:" + longitude);
            postPosition(location.getLatitude(), location.getLongitude());
//            是否一次性定位
            if (isSingle) {
                stopSelf();  // 获取到经纬度以后,停止该service
@@ -206,21 +205,41 @@
     * 百度定位的监听
     */
    class MyBDLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            double latitude = location.getLatitude();    //获取纬度信息
            double longitude = location.getLongitude();    //获取经度信息
//            MyLog.i("百度的监听 latitude:" + latitude);
//            MyLog.i("百度的监听 longitude:" + longitude);
            MyLog.i("百度的监听  onBaiduLocationChanged:   latitude:" + latitude + "   longitude:" + longitude);
            if (isSingle) {
                stopSelf();  // 获取到经纬度以后,停止该service
            }
        }
            if (!String.valueOf(latitude).equals("4.9E-324")) {
                //不为4.9E-324时才是定位成功
                postPosition(latitude, longitude);
                if (isSingle) {
                    stopSelf();  // 获取到经纬度以后,停止该service
                }
            }
        }
    }
    /**
     * @param latitude
     * @param longitude
     */
    private void postPosition(double latitude, double longitude) {
        if (isSingle && isPositioned) {
            return;
        }
        LatLonBean latLonBean = new LatLonBean();
        latLonBean.setLatitude(latitude);
        latLonBean.setLongitude(longitude);
        LiveEventBus.get("location").post(latLonBean);
    }
    @Override
    public void onDestroy() {
@@ -233,10 +252,10 @@
            if (locationManager != null) {
                locationManager.removeUpdates(listener);
            }
            if (mBDLocationClient != null) {
                mBDLocationClient.stop();
                mBDLocationClient.unRegisterLocationListener(mBDLocationListener);
            }
//            if (mBDLocationClient != null) {
//                mBDLocationClient.stop();
//                mBDLocationClient.unRegisterLocationListener(mBDLocationListener);
//            }
        } catch (Exception e) {
            CrashReport.postCatchedException(e);