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