管灌系统巡查员智能手机App
zuoxiao
2024-02-01 3a161aeef6dfe08aa80fca6fb2c1650ebdd31d59
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.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
@@ -82,16 +87,9 @@
        super.onCreate();
        createNativeLocation();
//        createBDLocation();
        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,22 +205,42 @@
     * 百度定位的监听
     */
    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() {
        MyLog.i("MyLocationService--onDestroy");