lmw
2024-09-23 f23be5d1086538d541281b84d8b093f95c545c47
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)
@@ -104,7 +108,7 @@
                data?.let {
                    when (it.orderType) {
                        1, 2, 3,7 -> {
                            if (it.status == 10 || it.status == 12) {
                            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 {
@@ -273,11 +277,21 @@
                            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++
@@ -433,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)
            }
        }
    }
@@ -499,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
@@ -627,7 +660,7 @@
                carMarker?.isVisible = true
                changeCarFive(true)
                setTitleText("服务中")
                slide_btn.changeButtonText("送达该乘客")
                slide_btn.changeButtonText("乘客已到达")
                if (!MyApplication.isRecording){
                    EventBus.getDefault().post(BaseEvent(BaseEvent.START_RECORD))
                }
@@ -676,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()