From f23be5d1086538d541281b84d8b093f95c545c47 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期一, 23 九月 2024 17:08:43 +0800
Subject: [PATCH] save

---
 app/src/main/java/com/future/driver/ui/main/TripActivity.kt |  152 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 103 insertions(+), 49 deletions(-)

diff --git a/app/src/main/java/com/future/driver/ui/main/TripActivity.kt b/app/src/main/java/com/future/driver/ui/main/TripActivity.kt
index 3c6eeb3..b2a19e2 100644
--- a/app/src/main/java/com/future/driver/ui/main/TripActivity.kt
+++ b/app/src/main/java/com/future/driver/ui/main/TripActivity.kt
@@ -5,11 +5,13 @@
 import android.os.CountDownTimer
 import android.os.Handler
 import android.os.Looper
+import android.util.Log
 import android.view.Gravity
 import android.view.View
 import cn.sinata.xldutils.utils.*
 import com.amap.api.location.AMapLocationListener
 import com.amap.api.maps.AMap
+import com.amap.api.maps.AMapUtils
 import com.amap.api.maps.model.LatLng
 import com.amap.api.maps.model.Marker
 import com.amap.api.maps.model.Polyline
@@ -40,6 +42,7 @@
 import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.disposables.Disposable
 import io.reactivex.schedulers.Schedulers
+import kotlinx.android.synthetic.main.activity_change_one.*
 import kotlinx.android.synthetic.main.activity_select_start_point.*
 import kotlinx.android.synthetic.main.activity_trip.*
 import kotlinx.android.synthetic.main.activity_trip.map_view
@@ -55,7 +58,6 @@
 
 
 class TripActivity : MyBaseActivity() {
-
     /***
      * //    流程操作状态(3=开始出发预约点,4=到达预约点,5=开始服务,6=服务结束)
      * 页面一共4个marker 1:预约地点 2:起点 3终点 4:司机点
@@ -78,6 +80,8 @@
     var markerLine: Polyline? = null
     lateinit var aMap: AMap
     lateinit var orderBean: OrderBean
+
+    var autoExitNavi = false //是否自动退出过,只自动退出一次即可
 
     private val rxPermissions by lazy {
         RxPermissions(this)
@@ -102,9 +106,9 @@
         MyApplication.addOrderView(object : MyApplication.OrderStatueView {
             override fun orderInfo(data: OrderSimpleData?) {
                 data?.let {
-                    when(it.orderType){
-                        1,2,3 -> {
-                            if (it.status == 10 || it.status == 12) {
+                    when (it.orderType) {
+                        1, 2, 3,7 -> {
+                            if ((it.status == 10 || it.status == 12)&&MyApplication.currentOrderId.isNotEmpty()&&it.orderId.toString() == orderId) {
                                 Handler(Looper.getMainLooper()).post {
                                     toast("用户已取消订单")
                                     MyApplication.getTTsManager().setVideoText("用户已取消订单")
@@ -134,7 +138,7 @@
             orderSimpleData?.let {
                 if (it.status == 10 || it.status == 12) {
                     Handler(Looper.getMainLooper()).post {
-                        toast("用户已取消订单")
+//                        toast("用户已取消订单")
                         MyApplication.getTTsManager().setVideoText("用户已取消订单")
                         MyApplication.currentOrderType = ""
                         MyApplication.currentOrderId = ""
@@ -171,7 +175,7 @@
                         "orderType" to orderType
                     )
                 } else {
-                    DialogUtil.getDelAndSureDialog(
+                    val d = DialogUtil.getDelAndSureDialog(
                         this,
                         "现在改派将收取" + data.data.amount + "元改派费,您是否要进行改派?",
                         {},
@@ -183,9 +187,9 @@
                                 "money" to data.data.amount.toString()
                             )
                         })
+                    val view = DialogUtil.getView(d)
+                    view.tv_view_two_base.gravity = Gravity.CENTER
                 }
-
-
             }
         }
         iv_move.setOnClickListener {
@@ -198,9 +202,9 @@
                         moveCamera(aMap, carMarker!!.position)
                     }
                     5, 6 -> {
-                        if (endMarker == null){
+                        if (endMarker == null) {
                             moveCamera(aMap, carMarker!!.position)
-                        }else{
+                        } else {
                             moveCamera(aMap, carMarker!!.position, endMarker!!.position)
                         }
                     }
@@ -230,9 +234,9 @@
                     }
 
                     5, 6 -> {
-                        if (endMarker == null){
+                        if (endMarker == null) {
                             toast("暂无终点")
-                        }else{
+                        } else {
                             startActivity<GPSNaviActivity>(
                                 "start" to carMarker!!.position,
                                 "end" to endMarker!!.position
@@ -259,13 +263,13 @@
                             toast("只能在预约时间的半小时内出行")
                             return@let
                         }
-                        if (it.data.orderState == 4&& !rxPermissions.isGranted(Manifest.permission.RECORD_AUDIO)&& !rxPermissions.isGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)){
+                        if (it.data.orderState == 4&& (!rxPermissions.isGranted(Manifest.permission.RECORD_AUDIO) || !rxPermissions.isGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE))){
                             DialogUtil.getDelAndSureDialog(this,"去授权","取消","根据平台规则,为了保证司乘安全,我们将会对行程进行录音,因此需要获取录音和文件存储权限",{
                             }){
                                 rxPermissions.request(Manifest.permission.RECORD_AUDIO,Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe {
                                     if (it){
 
-                                    }else{
+                                    } else {
                                         toast("请前往应用设置页面打开录音和文件存储权限")
                                     }
                                 }
@@ -273,17 +277,27 @@
                             return@let
                         }
                         if (it.data.endAddress.isNullOrEmpty()&&it.data.orderState == 4){
-                            DialogUtil.getDelAndSureDialog(this,"去填写","取消","乘客未填写目的地,请代乘客填写目的地后开始行程",{
-                            }){
+                            val delAndSureDialog = DialogUtil.getDelAndSureDialog(
+                                this,
+                                "去填写",
+                                "取消",
+                                "乘客未填写目的地,请代乘客填写目的地后开始行程",
+                                {
+                                }) {
                                 byChangeEnd = true
-                                startActivity<SearchSiteActivity>("currentCityName" to (MyApplication.aMapLocation?.city?:""),"type" to "3")
+                                startActivity<SearchSiteActivity>(
+                                    "currentCityName" to (MyApplication.aMapLocation?.city ?: ""),
+                                    "type" to "3"
+                                )
                             }
+                            val view = DialogUtil.getView(delAndSureDialog)
+                            view.tv_view_two_base.gravity = Gravity.CENTER
                             return@let
                         }
                         it.data.orderState++
-                        callStatue(it.data.orderState,{
+                        callStatue(it.data.orderState, {
                             showStatueMapUI(it)
-                            if (it.data.orderState == 5){
+                            if (it.data.orderState == 5) {
                                 showRecordDialog()
                             }
                         }) {
@@ -292,12 +306,12 @@
                     }
                     5, 6 -> {
                         it.data.orderState = 6
-                        when(orderType){
+                        when (orderType) {
                             "2" -> {
                                 showMoneyTypeDialog()
                             }
-                            "1" -> {
-                                callStatue(6,{
+                            "1","7" -> {
+                                callStatue(6, {
                                     startActivity<MajorSureMoneyActivity>(
                                         "orderId" to orderId,
                                         "orderType" to orderType
@@ -331,7 +345,7 @@
         view.tv_view_two_base.gravity = Gravity.CENTER
         view.view_hint_close_base.visibility = View.INVISIBLE
         view.tv_count_timer.visible()
-        val timer = object:CountDownTimer(3000,1000){
+        val timer = object:CountDownTimer(3000, 1000){
             override fun onTick(millisUntilFinished: Long) {
                 view.tv_count_timer.text = "${(millisUntilFinished/1000)+1}S"
             }
@@ -343,6 +357,7 @@
         onlySureDialog.setOnDismissListener {
             timer.cancel()
         }
+        EventBus.getDefault().post(BaseEvent(BaseEvent.START_RECORD))
     }
 
     private fun callStatue(i: Int, click: () -> Unit, clickFail: () -> Unit) {
@@ -352,7 +367,7 @@
         map["state"] = i
         map["lat"] = MyApplication.getLocation().latitude
         map["lon"] = MyApplication.getLocation().longitude
-        callNet(Api.process, map,{
+        callNet(Api.process, map, {
             click()
         }) {
             clickFail()
@@ -370,7 +385,7 @@
         pop.contentView.tv_ok.setOnClickListener {
             pop.dismiss()
             if (payType == 1) {
-                callStatue(6,{
+                callStatue(6, {
                     startActivity<FillOutActivity>("orderId" to orderId, "orderType" to orderType)
                     finish()
                 }) {
@@ -383,7 +398,7 @@
                     map["orderId"] = orderId
                     map["orderType"] = orderType
                     map["type"] = payType
-                    callStatue(6,{
+                    callStatue(6, {
                         callNet(Api.confirmFees, map) {
                             finish()
                             startActivity<OrderOverActivity>(
@@ -432,25 +447,43 @@
                         changeCarFive(false)
                     }
                 }
+                if (it.data.orderState == 3){
+                    val calculateLineDistance = AMapUtils.calculateLineDistance(
+                        carMarker!!.position,
+                        LatLng(it.data.startLat, it.data.startLon)
+                    )
+                    if (calculateLineDistance<80&&!autoExitNavi){
+                        EventBus.getDefault().post(BaseEvent(BaseEvent.EXIT_NAVI))
+                    }
+                }
             }
         })
     }
 
     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)
-                    }
-                })
+            val calculateLineDistance = AMapUtils.calculateLineDistance(makeMarker!!.position, carMarker!!.position)
+            Log.e("mmp","两点直线距离:${calculateLineDistance}m")
+            if (calculateLineDistance>100) //大于100米才规划路径
+                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)
+                        }
+                    })
+            else{
+                var view = creatCarView("距预约点" + AMapKit.getTance(calculateLineDistance))
+                carMarker!!.setIcon(getIcon(view))
+                if (isMove)
+                    moveCamera(aMap, makeMarker!!.position, carMarker!!.position)
+            }
         }
     }
 
@@ -484,6 +517,8 @@
     private fun callOrder() {
         MyApplication.currentOrderId = orderId
         MyApplication.currentOrderType = orderType
+        MyApplication.recordOrderId = orderId
+        MyApplication.recordOrderType = orderType
         var map = getMapByAny()
         map["orderId"] = orderId
         map["orderType"] = orderType
@@ -496,6 +531,7 @@
     private fun showUi(orderBean: OrderBean?) {
         orderBean?.let {
             tv_name.text = orderBean.data.nickName
+            tv_passenger_phone.text = orderBean.data.phone
             tv_car_num.text = it.data.historyNum.toString() + "次乘车"
             tv_time.text = it.data.travelTime_
             tv_start_address.text = it.data.startAddress
@@ -506,7 +542,7 @@
                 tv_end_address.text = it.data.endAddress
                 tv_change_end.gone()
             }
-            if (orderType == "1"){
+            if (orderType == "1"||orderType == "7"){
                 tv_red_money.gone()
             }
             tv_red_money.text = it.data.tipMoney.toString() + "元红包"
@@ -532,7 +568,7 @@
             view.iv_img.setImageResource(R.mipmap.end_point)
             endMarker = addMarker(aMap, it.data.endLat, it.data.endLon, view, "")
         }else if (endMarker?.position?.latitude == 0.0){
-            endMarker?.position = LatLng(orderBean.data.endLat,orderBean.data.endLon)
+            endMarker?.position = LatLng(orderBean.data.endLat, orderBean.data.endLon)
         }
         endMarker?.isVisible = false
         if (carMarker == null) {
@@ -572,7 +608,7 @@
         val carView = createView(R.layout.item_map_market, this)
         carView.iv_img.setImageResource(R.mipmap.car_trip)
         carView.tv_hint.visible()
-        carView.tv_hint.setColorBuild(this,content,R.color.main_yellow_qia,4,content.length)
+        carView.tv_hint.setColorBuild(this, content, R.color.main_yellow_qia, 4, content.length)
         return carView
     }
 
@@ -582,7 +618,7 @@
         tv_Right.visible()
         when (it.data.orderState) {
             2, 3 -> {
-                if (it.data.reassign == 1){
+                if (it.data.reassign == 1) {
                     tv_Right.gone()
                 }
                 iv_to_gd.visible()
@@ -600,7 +636,7 @@
             }
             4 -> {
                 iv_to_gd.gone()
-                if (it.data.reassign == 1){
+                if (it.data.reassign == 1) {
                     tv_Right.gone()
                 }
                 closeLine()
@@ -624,7 +660,10 @@
                 carMarker?.isVisible = true
                 changeCarFive(true)
                 setTitleText("服务中")
-                slide_btn.changeButtonText("送达该乘客")
+                slide_btn.changeButtonText("乘客已到达")
+                if (!MyApplication.isRecording){
+                    EventBus.getDefault().post(BaseEvent(BaseEvent.START_RECORD))
+                }
             }
         }
     }
@@ -670,8 +709,23 @@
             handler?.removeCallbacksAndMessages(null)
         }
         closeTimeStart()
+        map_view.onDestroy()
     }
 
+    override fun onPause() {
+        super.onPause()
+        map_view.onPause()
+    }
+
+    override fun onLowMemory() {
+        super.onLowMemory()
+        map_view.onLowMemory()
+    }
+
+    override fun onResume() {
+        super.onResume()
+        map_view.onResume()
+    }
 
     private fun addline(allLine: MutableList<LatLng>) {
         closeLine()
@@ -717,17 +771,17 @@
                 mapByAny["lon"] = lon
                 mapByAny["endAddress"] = name
                 mapByAny["orderId"] = orderId
-                callNet(Api.setEnd,mapByAny){
+                callNet(Api.setEnd, mapByAny) {
                     orderBean.data.endAddress = name
                     orderBean.data.endLat = lat
                     orderBean.data.endLon = lon
                     tv_end_address.text = name
                     tv_change_end.gone()
-                    if (byChangeEnd){
+                    if (byChangeEnd) {
                         orderBean.data.orderState++
-                        callStatue(orderBean.data.orderState,{
-                            showStatueMapUI(orderBean)
+                        callStatue(orderBean.data.orderState, {
                             showRecordDialog()
+                            showStatueMapUI(orderBean)
                         }) {
                             orderBean.data.orderState--
                         }

--
Gitblit v1.7.1