lmw
2024-02-23 be87b65cb6ac9a2352f09117c1fa82862aba73ff
猎鹰
11个文件已修改
320 ■■■■■ 已修改文件
.idea/gradle.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/zhaoyang/driver/base/MyApplication.kt 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/zhaoyang/driver/netUtls/Api.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/zhaoyang/driver/ui/main/MainActivity.kt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/zhaoyang/driver/ui/main/TripActivity.kt 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/zhaoyang/driver/ui/main/small_cargo/SmallCargoActivity.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/zhaoyang/driver/ui/mine/AddCarActivity.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/zhaoyang/driver/ui/pub/LoginActivity.kt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/zhaoyang/driver/ui/to_city/TripCityActivity.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_change_car.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_share.xml 5 ●●●● 补丁 | 查看 | 原始文档 | 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