.idea/gradle.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/zhaoyang/driver/base/MyApplication.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/zhaoyang/driver/netUtls/Api.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/zhaoyang/driver/ui/main/MainActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/zhaoyang/driver/ui/main/TripActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/zhaoyang/driver/ui/main/small_cargo/SmallCargoActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/zhaoyang/driver/ui/mine/AddCarActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/zhaoyang/driver/ui/pub/LoginActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/zhaoyang/driver/ui/to_city/TripCityActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/activity_change_car.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/activity_share.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
.idea/gradle.xml
@@ -21,6 +21,5 @@ <option name="useQualifiedModuleNames" value="true" /> </GradleProjectSettings> </option> <option name="offlineMode" value="true" /> </component> </project> app/src/main/java/com/zhaoyang/driver/base/MyApplication.kt
@@ -14,10 +14,9 @@ import com.amap.api.location.AMapLocation import com.amap.api.track.AMapTrackClient import com.amap.api.track.ErrorCode import com.amap.api.track.OnTrackLifecycleListener import com.amap.api.track.TrackParam import com.amap.api.track.query.model.AddTerminalRequest import com.amap.api.track.query.model.QueryTerminalRequest import com.amap.api.track.query.model.QueryTerminalResponse import com.amap.api.track.query.model.* import com.zhaoyang.driver.base.gaode.gpsnav.util.TTSController import com.zhaoyang.driver.base.local.OnTripTrackLifecycleListener import com.zhaoyang.driver.base.local.OnTripTrackListener @@ -51,7 +50,8 @@ /** * Created by Administrator on 2018/1/17. */ class MyApplication : BaseApplication(), Application.ActivityLifecycleCallbacks { class MyApplication : BaseApplication(), Application.ActivityLifecycleCallbacks, OnTrackListener, OnTrackLifecycleListener { //设置debug模式 var isDebug = false var heartHandler: Handler? = null @@ -80,7 +80,7 @@ PlatformConfig.setQQZone("102047428", "qcBXgbJo6B2f5HF0") //qq互联 // CrashReport.initCrashReport(getApplicationContext(), "444bb776ed", false); LogUtils.OpenLog(true) initUpPoint() // initUpPoint() initSocket() JPushInterface.setDebugMode(true) JPushInterface.init(this) @@ -296,24 +296,24 @@ super.onQueryTerminalCallback(queryTerminalResponse) if (p0.isSuccess) { // 创建完成,开启猎鹰服务 sysErr("创建完成,开启猎鹰服务" + p0.errorMsg) var terminalId = queryTerminalResponse!!.tid; sysErr("创建完成,开启猎鹰服务" + p0.errorMsg+",tid:${p0.tid}") terminalId = queryTerminalResponse!!.tid aMapTrackClient.startTrack( TrackParam( serviceId, terminalId ), onTrackLifecycleListener ); ) } else { // 请求失败 sysErr("请求失败" + p0.getErrorMsg()) } } }); }) } else { // terminal已经存在,直接开启猎鹰服务 var terminalId = p0.tid sysErr("创建完成,开启猎鹰服务" + p0.errorMsg) terminalId = p0.tid sysErr("terminal已经存在,直接开启猎鹰服务" + p0.errorMsg+",tid:${p0.tid}") aMapTrackClient.startTrack( TrackParam(serviceId, terminalId), onTrackLifecycleListener @@ -326,7 +326,26 @@ }) } // fun stopTrack(){ // var serviceIdS = CacheKey.getServerId() // if (serviceIdS == "") // return // var serviceId = serviceIdS.toLong() // var terminalName = CacheKey.getTerminalName() // 唯一标识某个用户或某台设备的名称 // aMapTrackClient.stopTrack(TrackParam(serviceId, terminalId), // onTrackLifecycleListener) // } fun createTrack(){ val serviceIdS = CacheKey.getServerId() if (serviceIdS == "") return aMapTrackClient.addTrack(AddTrackRequest(serviceIdS.toLong(), terminalId), this)//创建行程轨迹id } lateinit var aMapTrackClient: AMapTrackClient private var terminalId = 0L var onTrackLifecycleListener = object : OnTripTrackLifecycleListener() { override fun onStartGatherCallback(p0: Int, p1: String?) { if (p0 == ErrorCode.TrackListen.START_GATHER_SUCEE || @@ -481,7 +500,6 @@ private var showNum = 0 override fun onActivityPaused(activity: Activity?) { } override fun onActivityResumed(activity: Activity?) { @@ -512,5 +530,73 @@ activities.add(activity) } override fun onQueryTerminalCallback(p0: QueryTerminalResponse?) { } override fun onCreateTerminalCallback(p0: AddTerminalResponse?) { } override fun onDistanceCallback(p0: DistanceResponse?) { } override fun onLatestPointCallback(p0: LatestPointResponse?) { } override fun onHistoryTrackCallback(p0: HistoryTrackResponse?) { } override fun onQueryTrackCallback(p0: QueryTrackResponse?) { } override fun onAddTrackCallback(p0: AddTrackResponse?) { if (p0?.isSuccess == true) { val trackId = p0.trid sysErr("轨迹创建成功,轨迹Id:$trackId") var serviceIdS = CacheKey.getServerId() val trackParam = TrackParam(serviceIdS.toLong(), terminalId) trackParam.trackId = trackId aMapTrackClient.startTrack(trackParam, this) //开始采集位置 } else { sysErr("轨迹创建失败") } } override fun onParamErrorCallback(p0: ParamErrorResponse?) { } override fun onBindServiceCallback(p0: Int, p1: String?) { sysErr("onBindServiceCallback") } override fun onStartGatherCallback(p0: Int, p1: String?) { if (p0 == ErrorCode.TrackListen.START_GATHER_SUCEE || p0 == ErrorCode.TrackListen.START_GATHER_ALREADY_STARTED ) { sysErr( "定位采集开启成功!") } else { sysErr( "定位采集启动异常!") } } override fun onStartTrackCallback(p0: Int, p1: String?) { if (p0 == ErrorCode.TrackListen.START_TRACK_SUCEE || p0 == ErrorCode.TrackListen.START_TRACK_SUCEE_NO_NETWORK || p0 == ErrorCode.TrackListen.START_TRACK_ALREADY_STARTED ) { // 服务启动成功,继续开启收集上报 aMapTrackClient.startGather(this) } else { sysErr( "轨迹上报服务服务启动异常!") } } override fun onStopGatherCallback(p0: Int, p1: String?) { sysErr("onStopGatherCallback:关闭定位采集") } override fun onStopTrackCallback(p0: Int, p1: String?) { sysErr("onStopTrackCallback") } } app/src/main/java/com/zhaoyang/driver/netUtls/Api.java
@@ -10,7 +10,7 @@ //39.108.148.228 测试服务器 public static final String BASE_URL = "https://www.zycx.ztrbkj.com/driver/"; // public static final String BASE_URL = "http://192.168.110.50:80/driver/"; // public static final String BASE_URL = "https://0ifzoxq2516g.guyubao.com/driver/"; public static final String SOCKET_SERVER = "47.108.137.172"; // public static final String SOCKET_SERVER = "192.168.110.50"; @@ -18,8 +18,8 @@ public static final int SUCCESS = 200; public static final String strShare = "https://www.zycx.ztrbkj.com/share/shareIndex.html"; public static final String strShareDriver = "http://122.9.134.230:8080/driverShare/qr.html"; public static final int WXLAUID = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE; public static final String strShareDriver = "https://www.zycx.ztrbkj.com/share_qr/shareIndex.html"; public static final int WXLAUID = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE; // public static final String strShare = "http://39.108.148.228:8080/share/shareIndex.html"; // public static final String strShareDriver = "http://39.108.148.228:8080/driverShare/qr.html"; @@ -68,6 +68,7 @@ public static String queryCityOrderInfo = "api/orderCrossCity/queryOrderInfo"; //api/orderCrossCity/queryOrderInfo 获取订单跨城详情 public static String setOrderCrossCitySort = "api/orderCrossCity/setOrderCrossCitySort"; ///api/orderCrossCity/setOrderCrossCitySort 修改订单顺序(跨城) public static String getInviteList = "api/driver/getInviteList"; ///api/driver/getInviteList 获取邀请司机/乘客列表 public static String getTrackId = "api/order/getTrackId"; //司机流程中创建猎鹰轨迹-接收轨迹id /*** * 消息 app/src/main/java/com/zhaoyang/driver/ui/main/MainActivity.kt
@@ -70,8 +70,7 @@ callcarAll() toastTo() callTime("1") // MyApplication.getInstance()!!.initUpPoint() } override fun onRestart() { app/src/main/java/com/zhaoyang/driver/ui/main/TripActivity.kt
@@ -3,6 +3,7 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.util.Log import android.view.View import cn.sinata.xldutils.utils.* import com.amap.api.location.AMapLocationListener @@ -15,6 +16,12 @@ import com.amap.api.navi.AmapNaviParams import com.amap.api.navi.AmapNaviType import com.amap.api.navi.AmapPageType import com.amap.api.track.AMapTrackClient import com.amap.api.track.ErrorCode import com.amap.api.track.OnTrackLifecycleListener import com.amap.api.track.TrackParam import com.amap.api.track.query.entity.DriveMode import com.amap.api.track.query.model.* import com.zhaoyang.driver.R import com.zhaoyang.driver.base.BaseEvent import com.zhaoyang.driver.base.MyApplication @@ -38,6 +45,7 @@ import com.zhaoyang.driver.utils.MyUtils import com.google.gson.Gson import com.trello.rxlifecycle3.android.ActivityEvent import com.zhaoyang.driver.utils.Cache.CacheKey import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -54,7 +62,7 @@ import java.util.concurrent.TimeUnit class TripActivity : MyBaseActivity() { class TripActivity : MyBaseActivity(), OnTrackListener, OnTrackLifecycleListener { /*** * // 流程操作状态(3=开始出发预约点,4=到达预约点,5=开始服务,6=服务结束) @@ -69,7 +77,6 @@ } var isTimeStart = false //限制计时器 var makeMarker: Marker? = null var startMarker: Marker? = null var endMarker: Marker? = null @@ -79,6 +86,18 @@ lateinit var orderBean: OrderBean var graylist = arrayListOf<LatLng>() // 灰色轨迹 var grayline:Polyline? = null private lateinit var aMapTrackClient: AMapTrackClient private val terminalName by lazy {//终端名 "Driver-${CacheKey.getUserId()}" // 唯一标识某个用户或某台设备的名称 } private val serviceIdS by lazy {//服务号 val sid = CacheKey.getServerId() if (sid.isNullOrEmpty()) 0L else sid.toLong() } private var terminalId = 0L//终端id private val TAG_TRACK = "猎鹰Log" override fun setContentView() { setContentView(R.layout.activity_trip) @@ -91,7 +110,20 @@ initMineLocation() onclick() addSockectCancel() MyApplication.getInstance()!!.initUpPoint() initTrack() } /** * 初始化猎鹰 */ private fun initTrack() { if (serviceIdS == 0L) return aMapTrackClient = AMapTrackClient(applicationContext) aMapTrackClient.queryTerminal( QueryTerminalRequest(serviceIdS, terminalName), this ) //查询终端是否已注册 } private fun addSockectCancel() { @@ -215,7 +247,6 @@ when (it.data.orderState) { 2, 3 -> { startNavi(carMarker!!.position.latitude,carMarker!!.position.longitude,makeMarker!!.position.latitude,makeMarker!!.position.longitude) } 4 -> { @@ -247,6 +278,7 @@ callStatue(num, it.data.orderState,{ MyApplication.getTTsManager().setVideoText("乘客您好,为了您的安全,上车请系好安全带,谢谢配合!") showStatueMapUI(it) aMapTrackClient.addTrack(AddTrackRequest(serviceIdS, terminalId), this)//创建轨迹id }) { it.data.orderState-- } @@ -272,6 +304,7 @@ "orderType" to orderType ) finish() aMapTrackClient.stopGather(this) //停止轨迹采集 } } } @@ -402,6 +435,7 @@ graylist.add(LatLng(it.latitude, it.longitude)) grayline?.remove() grayline = AMapKit.drawLine(this,aMap,graylist,R.color.gray) // queryTrack() //debug调用 } orderBean.let { when (it.data.orderState) { @@ -414,6 +448,32 @@ } } }) } //查询猎鹰轨迹 private fun queryTrack() { if (orderBean.data.trackId.isNullOrEmpty()) return val queryTrackRequest = QueryTrackRequest( serviceIdS, terminalId, orderBean.data.trackId.toLong(), // 轨迹id,传-1表示查询所有轨迹 // 1260L, // debug轨迹id // 0L, //开始服务时间 System.currentTimeMillis() - 12 * 60 * 60 * 1000, //debug开始时间 System.currentTimeMillis(), 0, // 0不启用去噪 1:去噪 0, // 1绑路 0不绑路 0, // 0不进行精度过滤 1过滤 DriveMode.DRIVING, 1, // 距离补偿 1补偿 0不补偿 5000, // 距离补偿,只有超过5km的点才启用距离补偿 1, // 结果应该包含轨迹点信息 1, // 返回第1页数据,由于未指定轨迹,分页将失效 100 // 一页不超过100条 ) aMapTrackClient.queryTerminalTrack(queryTrackRequest, this) } private fun changeCarThree(isMove: Boolean) { @@ -593,6 +653,12 @@ changeCarFive(true) setTitleText("服务中") slide_btn.changeButtonText("送达该乘客") if (!orderBean.data.trackId.isNullOrEmpty()){ Log.e(TAG_TRACK, "已有轨迹id:${orderBean.data.trackId}") val trackParam = TrackParam(serviceIdS, terminalId) trackParam.trackId = orderBean.data.trackId.toLong() aMapTrackClient.startTrack(trackParam, this) //开始采集位置 } } } } @@ -664,6 +730,15 @@ }) } private fun setTrack(trackId:String) { var map = getMapByAny() map["orderId"] = orderId map["orderType"] = orderType map["trackId"] = trackId callNet(Api.getTrackId, map) { } } override fun setOnclick() { } @@ -687,4 +762,104 @@ } } } override fun onQueryTerminalCallback(p0: QueryTerminalResponse?) { if (p0?.isSuccess == true) { if (p0.tid <= 0) { // terminal还不存在,先创建 aMapTrackClient.addTerminal( AddTerminalRequest(terminalName, serviceIdS), this ) } else { // terminal已经存在 terminalId = p0.tid Log.e(TAG_TRACK, "终端已存在,terminalId:$terminalId") } } else { //请求失败 Log.e(TAG_TRACK, "终端查询失败") } } override fun onCreateTerminalCallback(p0: AddTerminalResponse?) { if (p0?.isSuccess == true) { terminalId = p0.tid Log.e(TAG_TRACK, "终端创建成功,terminalId:$terminalId") } else { //请求失败 Log.e(TAG_TRACK, "终端创建失败") } } override fun onDistanceCallback(p0: DistanceResponse?) { Log.e(TAG_TRACK, "onLatestPointCallback") } override fun onLatestPointCallback(p0: LatestPointResponse?) { Log.e(TAG_TRACK, "onLatestPointCallback") } override fun onHistoryTrackCallback(p0: HistoryTrackResponse?) { Log.e(TAG_TRACK, "onHistoryTrackCallback") } override fun onQueryTrackCallback(p0: QueryTrackResponse?) { if (p0?.isSuccess == true) { val tracks = p0.tracks Log.e(TAG_TRACK, "轨迹查询结果:${tracks.firstOrNull()?.points?.map { LatLng(it.lat, it.lng) }?.joinToString("\n") { "${it.latitude},${it.longitude}" }}") } else Log.e(TAG_TRACK, "轨迹查询失败,code:${p0?.errorCode},reason:${p0?.errorMsg},detail:${p0?.errorDetail}") } override fun onAddTrackCallback(p0: AddTrackResponse?) { if (p0?.isSuccess == true) { orderBean.data.trackId = p0.trid.toString() Log.e(TAG_TRACK, "轨迹创建成功,轨迹Id:${orderBean.data.trackId}") setTrack(orderBean.data.trackId) val trackParam = TrackParam(serviceIdS, terminalId) trackParam.trackId = orderBean.data.trackId.toLong() aMapTrackClient.startTrack(trackParam, this) //开始采集位置 } else { Log.e(TAG_TRACK, "轨迹创建失败") } } override fun onParamErrorCallback(p0: ParamErrorResponse?) { Log.e(TAG_TRACK, "onParamErrorCallback") } override fun onBindServiceCallback(p0: Int, p1: String?) { Log.e(TAG_TRACK, "onBindServiceCallback") } override fun onStartGatherCallback(p0: Int, p1: String?) { if (p0 == ErrorCode.TrackListen.START_GATHER_SUCEE || p0 == ErrorCode.TrackListen.START_GATHER_ALREADY_STARTED ) { Log.e(TAG_TRACK, "定位采集开启成功!") } else { Log.e(TAG_TRACK, "定位采集启动异常!") } } override fun onStartTrackCallback(p0: Int, p1: String?) { if (p0 == ErrorCode.TrackListen.START_TRACK_SUCEE || p0 == ErrorCode.TrackListen.START_TRACK_SUCEE_NO_NETWORK || p0 == ErrorCode.TrackListen.START_TRACK_ALREADY_STARTED ) { // 服务启动成功,继续开启收集上报 aMapTrackClient.startGather(this) } else { Log.e(TAG_TRACK, "轨迹上报服务服务启动异常!") } } override fun onStopGatherCallback(p0: Int, p1: String?) { Log.e(TAG_TRACK, "onStopGatherCallback:关闭定位采集") } override fun onStopTrackCallback(p0: Int, p1: String?) { Log.e(TAG_TRACK, "onStopTrackCallback") } } app/src/main/java/com/zhaoyang/driver/ui/main/small_cargo/SmallCargoActivity.kt
@@ -106,7 +106,7 @@ initMineLocation() onclick() addSockectCancel() MyApplication.getInstance()!!.initUpPoint() MyApplication.getInstance()!!.createTrack() } private fun addSockectCancel() { app/src/main/java/com/zhaoyang/driver/ui/mine/AddCarActivity.kt
@@ -75,7 +75,7 @@ } override fun initView() { setTitleText("添加车辆") setTitleText("更换车辆") et_name.transformationMethod = InputCapLowerToUpper() } app/src/main/java/com/zhaoyang/driver/ui/pub/LoginActivity.kt
@@ -44,7 +44,6 @@ override fun setOnclick() { tv_driver.setOnClickListener { startActivity<BecomeDriverActivity>() } @@ -55,10 +54,10 @@ iv_eye.setOnClickListener { callHtml { } showEye(iv_eye,et_login_pwd) } tv_login.setOnClickListener { if (et_login_phone.getString().isEmpty()){ toast("请输入手机号") app/src/main/java/com/zhaoyang/driver/ui/to_city/TripCityActivity.kt
@@ -110,7 +110,7 @@ initMineLocation() onclick() addSockectCancel() MyApplication.getInstance()!!.initUpPoint() MyApplication.getInstance()!!.createTrack() } private fun addSockectCancel() { app/src/main/res/layout/activity_change_car.xml
@@ -72,7 +72,7 @@ android:layout_marginBottom="14dp" android:background="@drawable/bg_login" android:gravity="center" android:text="添加车辆" android:text="更换车辆" android:textColor="#ffffffff" android:textSize="14sp" /> app/src/main/res/layout/activity_share.xml
@@ -57,14 +57,11 @@ android:layout_weight="1" android:gravity="center" android:text="分享二维码" android:visibility="gone" android:textColor="@color/white" android:background="@drawable/car_get_start" android:textSize="14sp" android:textStyle="bold" /> <View android:layout_width="50dp" android:layout_height="wrap_content"/> <TextView