From 0361f47762f9958f2ec91fdb62bfc98de4e162a6 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期一, 14 四月 2025 15:16:17 +0800
Subject: [PATCH] save

---
 app/src/main/java/com/xianning/driver/ui/main/TripActivity.kt |  235 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 154 insertions(+), 81 deletions(-)

diff --git a/app/src/main/java/com/xianning/driver/ui/main/TripActivity.kt b/app/src/main/java/com/xianning/driver/ui/main/TripActivity.kt
index f500798..20b7cbb 100644
--- a/app/src/main/java/com/xianning/driver/ui/main/TripActivity.kt
+++ b/app/src/main/java/com/xianning/driver/ui/main/TripActivity.kt
@@ -1,19 +1,22 @@
 package com.xianning.driver.ui.main
 
-import android.os.Bundle
-import android.os.Handler
-import android.os.Looper
-import android.os.PersistableBundle
+import android.os.*
+import android.util.Log
 import android.view.View
+import androidx.core.os.bundleOf
 import cn.sinata.xldutils.utils.*
-import com.amap.api.location.AMapLocationListener
-import com.amap.api.maps.AMap
-import com.amap.api.maps.model.LatLng
-import com.amap.api.maps.model.Marker
-import com.amap.api.maps.model.Polyline
 import com.baidu.location.BDAbstractLocationListener
 import com.baidu.location.BDLocation
 import com.baidu.location.LocationClient
+import com.baidu.mapapi.map.BaiduMap
+import com.baidu.mapapi.map.Marker
+import com.baidu.mapapi.map.Overlay
+import com.baidu.mapapi.model.LatLng
+import com.baidu.navisdk.adapter.BNRoutePlanNode
+import com.baidu.navisdk.adapter.BaiduNaviManagerFactory
+import com.baidu.navisdk.adapter.IBNRoutePlanManager
+import com.baidu.navisdk.adapter.IBaiduNaviManager
+import com.baidu.navisdk.adapter.struct.BNaviInitConfig
 import com.xianning.driver.R
 import com.xianning.driver.base.BaseEvent
 import com.xianning.driver.base.MyApplication
@@ -24,10 +27,8 @@
 import com.xianning.driver.base.gaode.AMapKit.getTimeType
 import com.xianning.driver.base.gaode.AMapKit.initMap
 import com.xianning.driver.base.gaode.AMapKit.moveCamera
-import com.xianning.driver.base.gaode.gpsnav.GPSNaviActivity
 import com.xianning.driver.bean.OrderBean
 import com.xianning.driver.bean.OrderSimpleData
-import com.xianning.driver.bean.RessignBean
 import com.xianning.driver.netUtls.*
 import com.xianning.driver.ui.DialogUtil
 import com.xianning.driver.ui.main.major.MajorSureMoneyActivity
@@ -36,6 +37,11 @@
 import com.google.gson.Gson
 import com.trello.rxlifecycle3.android.ActivityEvent
 import com.xianning.driver.base.gaode.AMapKit.moveCamera3
+import com.xianning.driver.base.gaode.BaiduUtils
+import com.xianning.driver.base.gaode.gpsnav.BaiduNaviActivity
+import com.xianning.driver.bean.MajorMoneyBean
+import com.xianning.driver.ui.main.major.MajorSureMoneyOfflineActivity
+import com.ypx.imagepicker.utils.PBitmapUtils
 import io.reactivex.Observable
 import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.disposables.Disposable
@@ -48,6 +54,7 @@
 import org.greenrobot.eventbus.EventBus
 import org.jetbrains.anko.startActivity
 import org.jetbrains.anko.toast
+import java.util.ArrayList
 import java.util.concurrent.TimeUnit
 
 
@@ -70,13 +77,15 @@
     var startMarker: Marker? = null
     var endMarker: Marker? = null
     var carMarker: Marker? = null
-    var markerLine: Polyline? = null
-    lateinit var aMap: AMap
+    var markerLine: Overlay? = null
+    lateinit var aMap: BaiduMap
     lateinit var orderBean: OrderBean
 
 
     private var listener:BDAbstractLocationListener? = null
     private var locationClient: LocationClient? = null
+
+    var naviHandler: Handler? = null
 
     override fun setContentView() {
         setContentView(R.layout.activity_trip)
@@ -93,9 +102,51 @@
         setTitleText("准备出发-去接客户-等待客户-服务中")
         tv_Right.text = "取消订单"
         callOrder()
+        initNaviSdk()
         initMineLocation()
         onclick()
         addSockectCancel()
+        naviHandler = object :Handler(Looper.getMainLooper()){
+            override fun handleMessage(msg: Message) {
+                when(msg.what){
+                    IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_START->{
+                        Log.e("mmp","算路开始")
+                    }
+                    IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_SUCCESS->{
+                        Log.e("mmp","算路成功")
+                    }
+                    IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_FAILED->{
+                        Log.e("mmp","算路失败")
+                    }
+                    IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_TO_NAVI->{
+                        Log.e("mmp","算路成功准备进入导航")
+                        startActivity<BaiduNaviActivity>()
+                    }
+                }
+            }
+        }
+    }
+
+    private fun initNaviSdk() {
+        val config = BNaviInitConfig.Builder().sdcardRootPath(PBitmapUtils.getPickerFileDirectory(this).absolutePath)
+            .naviInitListener(object :IBaiduNaviManager.INaviInitListener{
+                override fun onAuthResult(p0: Int, p1: String?) {
+                    Log.e("mmp","导航组件初始化onAuthResult(${p0}:${p1})")
+                }
+
+                override fun initStart() {
+                    Log.e("mmp","导航组件初始化开始")
+                }
+
+                override fun initSuccess() {
+                    Log.e("mmp","导航组件初始化成功")
+                }
+
+                override fun initFailed(p0: Int) {
+                    Log.e("mmp","导航组件初始化失败:$p0")
+                }
+            }).build()
+        BaiduNaviManagerFactory.getBaiduNaviManager().init(this, config)
     }
 
     private fun addSockectCancel() {
@@ -176,12 +227,7 @@
             orderBean.let {
                 when (it.data.orderState) {
                     2, 3 -> {
-//                        startAMapNavi(makeMarker!!)
-                        startActivity<GPSNaviActivity>(
-                            "start" to carMarker!!.position,
-                            "end" to makeMarker!!.position
-                        )
-
+                        startNavi(carMarker!!.position,makeMarker!!.position)
                     }
 
                     4 -> {
@@ -192,12 +238,12 @@
                         if (endMarker == null){
                             toast("暂无终点")
                         }else{
-                            startActivity<GPSNaviActivity>(
-                                "start" to carMarker!!.position,
-                                "end" to endMarker!!.position
-                            )
+                            startNavi(carMarker!!.position,endMarker!!.position)
+//                            startActivity<GPSNaviActivity>(
+//                                "start" to com.amap.api.maps.model.LatLng(carMarker!!.position.latitude,carMarker!!.position.longitude),
+//                                "end" to com.amap.api.maps.model.LatLng(endMarker!!.position.latitude,endMarker!!.position.longitude)
+//                            )
                         }
-
                     }
                     else -> {
 
@@ -226,23 +272,10 @@
                         }
                     }
                     5, 6 -> {
-                        it.data.orderState = 6
-                        when(orderType){
-                            "2" -> {
-                                showMoneyTypeDialog()
-                            }
-                            "1" -> {
-                                callStatue(6,{
-                                    startActivity<MajorSureMoneyActivity>(
-                                        "orderId" to orderId,
-                                        "orderType" to orderType
-                                    )
-                                    finish()
-                                }) {
-
-                                }
-                            }
-                        }
+                        if (it.data.payManner == 3){
+                            showMoneyTypeDialog()
+                        }else
+                            callorderMoney()
                     }
                 }
             }
@@ -251,6 +284,33 @@
         iv_phone.clickDelay {
             orderBean.let {
                 Utils.callPhone(this, it.data.phone)
+            }
+        }
+    }
+
+    /**
+     * 陈昆:结束订单前(state==5)需要计算费用
+     */
+    private fun callorderMoney() {
+        var map = getMapByAny()
+        map["orderId"] = orderId
+        map["orderType"] = orderType
+        callNet(false, Api.queryMoneyInfo, map) {
+            orderBean.data.orderState = 6
+            callStatue(6,{
+                if (orderBean.data.payManner == 2){
+                    startActivity<MajorSureMoneyOfflineActivity>(
+                        "orderId" to orderId,
+                        "orderType" to orderType
+                    )
+                }else
+                    startActivity<MajorSureMoneyActivity>(
+                        "orderId" to orderId,
+                        "orderType" to orderType
+                    )
+                finish()
+            }) {
+
             }
         }
     }
@@ -310,7 +370,7 @@
             val map = getMapByAny()
             map["orderId"] = orderId
             map["orderType"] = orderType
-            map["type"] = 2
+            map["type"] = 3
             callStatue(6,{
                 callNet(Api.confirmFees, map) {
                     finish()
@@ -353,39 +413,39 @@
 
     private fun changeCarThree(isMove: Boolean) {
         if (makeMarker != null && carMarker != null) {
-            AMapKit.initRouteLine(
-                this,
-                makeMarker!!.position,
-                carMarker!!.position,
-                object : (MutableList<LatLng>, Float, Long) -> Unit {
-                    override fun invoke(p1: MutableList<LatLng>, p2: Float, p3: Long) {
-                        var view = creatCarView("距预约点" + AMapKit.getTance(p2))
-                        carMarker!!.setIcon(getIcon(view))
-                        addline(p1)
-                        if (isMove)
-                            moveCamera(aMap, makeMarker!!.position, carMarker!!.position)
-                    }
-                })
+            BaiduUtils.initRouteLine(carMarker!!.position,makeMarker!!.position,object :BaiduUtils.Callback{
+                override fun onGetDrivingRouteResult(
+                    latLngs: ArrayList<LatLng>?,
+                    lineTance: Float,
+                    lineTime: Long
+                ) {
+                    var view = creatCarView("距预约点" + AMapKit.getTance(lineTance))
+                    carMarker!!.setIcon(getIcon(view))
+                    addline(latLngs?: arrayListOf())
+                    if (isMove)
+                        moveCamera(aMap, makeMarker!!.position, carMarker!!.position)
+                }
+            })
         }
     }
 
     private fun changeCarFive(isMove: Boolean) {
         if (carMarker != null && endMarker != null) {
-            AMapKit.initRouteLine(
-                this,
-                carMarker!!.position,
-                endMarker!!.position,
-                object : (MutableList<LatLng>, Float, Long) -> Unit {
-                    override fun invoke(p1: MutableList<LatLng>, p2: Float, p3: Long) {
-                        addline(p1)
-                        var view =
-                            creatCarView("剩余" + AMapKit.getTance(p2) + "\n" + "预计还需" + p3.toInt() + "分钟")
-                        carMarker!!.setIcon(getIcon(view))
-                        if (isMove) {
-                            moveCamera3(aMap, carMarker!!.position, endMarker!!.position,carMarker!!.position)
-                        }
+            BaiduUtils.initRouteLine(carMarker!!.position,endMarker!!.position,object :BaiduUtils.Callback{
+                override fun onGetDrivingRouteResult(
+                    latLngs: ArrayList<LatLng>,
+                    lineTance: Float,
+                    lineTime: Long
+                ) {
+                    addline(latLngs)
+                    var view =
+                        creatCarView("剩余" + AMapKit.getTance(lineTance) + "\n" + "预计还需" + lineTime.toInt() + "分钟")
+                    carMarker!!.setIcon(getIcon(view))
+                    if (isMove) {
+                        moveCamera3(aMap, carMarker!!.position, endMarker!!.position,carMarker!!.position)
                     }
-                })
+                }
+            })
         }else{
             var view =
                 creatCarView()
@@ -428,19 +488,19 @@
         if (makeMarker == null) {
             val view = createView(R.layout.item_map_market_make, this)
             view.iv_img.setImageResource(R.mipmap.trip_yuyue)
-            makeMarker = addMarker(aMap, it.data.startLat, it.data.startLon, view, "")
+            makeMarker = addMarker(aMap, it.data.startLat, it.data.startLon, view, "") as Marker
         }
         makeMarker!!.isVisible = false
         if (startMarker == null) {
             val view = createView(R.layout.item_map_market, this)
             view.iv_img.setImageResource(R.mipmap.starting_point)
-            startMarker = addMarker(aMap, it.data.startLat, it.data.startLon, view, "")
+            startMarker = addMarker(aMap, it.data.startLat, it.data.startLon, view, "") as Marker
         }
         startMarker!!.isVisible = false
-        if (endMarker == null) {
+        if (endMarker == null&&it.data.endLat!=0.0) {
             val view = createView(R.layout.item_map_market, this)
             view.iv_img.setImageResource(R.mipmap.end_point)
-            endMarker = addMarker(aMap, it.data.endLat, it.data.endLon, view, "")
+            endMarker = addMarker(aMap, it.data.endLat, it.data.endLon, view, "") as Marker
         }
         endMarker?.isVisible = false
         if (carMarker == null) {
@@ -451,7 +511,7 @@
                 MyApplication.getLocation().longitude,
                 carView,
                 ""
-            )
+            ) as Marker
         }
         carMarker!!.isVisible = false
         if (markerLine != null) {
@@ -577,6 +637,7 @@
         if (handler != null) {
             handler?.removeCallbacksAndMessages(null)
         }
+        naviHandler?.removeCallbacksAndMessages(null)
         closeTimeStart()
         MyApplication.removeOrderView(this)
         map_view.onDestroy()
@@ -593,11 +654,6 @@
         map_view.onResume()
     }
 
-    override fun onLowMemory() {
-        super.onLowMemory()
-        map_view.onLowMemory()
-    }
-
     override fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle) {
         super.onSaveInstanceState(outState, outPersistentState)
         map_view.onSaveInstanceState(outState)
@@ -606,7 +662,7 @@
 
 
 
-    private fun addline(allLine: MutableList<LatLng>) {
+    private fun addline(allLine: ArrayList<LatLng>) {
         closeLine()
         markerLine = AMapKit.drawLine(this, aMap, allLine)
     }
@@ -615,6 +671,24 @@
         if (markerLine != null) {
             markerLine!!.remove()
         }
+    }
+
+    private fun startNavi(start:LatLng,end:LatLng){
+        val list = arrayListOf<BNRoutePlanNode>()
+        val startNode = BNRoutePlanNode.Builder()
+            .longitude(start.longitude)
+            .latitude(start.latitude)
+            .build()
+        val endNode = BNRoutePlanNode.Builder()
+            .longitude(end.longitude)
+            .latitude(end.latitude)
+            .build()
+        list.add(startNode)
+        list.add(endNode)
+        BaiduNaviManagerFactory.getRoutePlanManager().routePlan(
+            list,
+            IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_DEFAULT,
+            bundleOf(), naviHandler)
     }
 
 
@@ -626,7 +700,6 @@
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         aMap = initMap(savedInstanceState, map_view)
-        map_view.onCreate(savedInstanceState)
     }
 
     override fun onEventMainThread(event: BaseEvent?) {

--
Gitblit v1.7.1