Merge remote-tracking branch 'origin/dev_robotaxi-d-app-module_260_220304_2.6.0' into dev_robotaxi-d-app-module_260_220304_2.6.0

This commit is contained in:
donghongyu
2022-03-22 10:46:40 +08:00
348 changed files with 13708 additions and 307 deletions

View File

@@ -90,6 +90,14 @@ class MoGoAutopilotProvider :
override fun onChannelConnect(channel: Channel?) {
val socketAddress = channel?.remoteAddress().toString()
CallerLogger.d("$M_ADAS_IMPL$TAG", "Client ip is:${socketAddress}")
synchronized(this@MoGoAutopilotProvider) {
NSDNettyManager.getInstance().selectChannel(channel)
var byteArray = if(FunctionBuildConfig.isDemoMode) byteArrayOf(1) else byteArrayOf(0)
NSDNettyManager.getInstance().sendMogoProtocolMsgToClient(MogoProtocolMsg(3, byteArray.size, byteArray)
) {
CallerLogger.d("$M_ADAS_IMPL$TAG", "同步美化模式状态是否成功:${it.isSuccess}")
}
}
}
override fun onChannelDisConnect(channel: Channel?) {
@@ -113,7 +121,17 @@ class MoGoAutopilotProvider :
// 乘客端收到adas数据直接解析后续分发解析后的数据流程同司机端
try {
msg?.let {
AdasManager.getInstance().parseIPCData(it.body)
when(it.protocolType) {
NORMAL_DATA -> AdasManager.getInstance().parseIPCData(it.body)
3 -> {
FunctionBuildConfig.isDemoMode = when(it.body[0].toInt()) {
1 -> true
else -> false
}
setDemoMode(FunctionBuildConfig.isDemoMode)
}
else -> {}
}
}
} catch (e: Exception) {
e.printStackTrace()
@@ -305,6 +323,16 @@ class MoGoAutopilotProvider :
} else {
AdasManager.getInstance().sendDemoModeReq(0)
}
// 同步给乘客端
if (FunctionBuildConfig.appIdentityMode == 0) {
var byteArray = if (isEnable) byteArrayOf(1) else byteArrayOf(0)
if (NSDNettyManager.getInstance().isServerStart) {
NSDNettyManager.getInstance()
.sendMsgToAllClients(MogoProtocolMsg(3, byteArray.size, byteArray))
} else {
CallerLogger.d("$M_ADAS_IMPL$TAG", "同步美化模式状态时司机端Server未启动")
}
}
}
/**

View File

@@ -1,15 +1,21 @@
package com.mogo.eagle.core.function.autopilot.adapter;
import android.text.TextUtils;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotVehicleStateListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager;
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.module.common.drawer.IdentifyDataDrawer;
import com.zhidao.support.obu.ami.AmiClientManager;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import chassis.Chassis;
@@ -18,7 +24,8 @@ import record_cache.RecordPanelOuterClass;
public class MoGoHandAdasMsgManager implements
IMoGoAutopilotIdentifyListener,
IMoGoAutopilotVehicleStateListener {
IMoGoAutopilotVehicleStateListener,
IMoGoAutopilotCarConfigListener {
private final String TAG = "AdasEventManager";
@@ -82,4 +89,12 @@ public class MoGoHandAdasMsgManager implements
}
@Override
public void onAutopilotCarConfig(@NotNull MessagePad.CarConfigResp carConfigResp) {
if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.getMacAddress())) {
CallerBindingcarManager.getBindingcarProvider().getBindingcarInfo(carConfigResp.getMacAddress());
}
}
}

View File

@@ -5,10 +5,10 @@ import com.mogo.commons.context.ContextHolderUtil;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.function.autopilot.entity.AutonomousDriveStatusBean;
import com.mogo.eagle.core.function.autopilot.entity.ReportSiteBean;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.RequestOptions;
import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.constants.HostConst;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -30,7 +30,7 @@ public class AdasServiceModel {
private final IAdasApiService mAdasApiService;
private AdasServiceModel() {
this.mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IAdasApiService.class, HostConst.DATA_SERVICE_HOST);
this.mAdasApiService = MoGoRetrofitFactory.getInstance(HostConst.DATA_SERVICE_HOST).create(IAdasApiService.class);
}
public static AdasServiceModel getInstance() {

View File

@@ -2,6 +2,8 @@ package com.mogo.eagle.core.function.bindingcar;
import android.content.Context;
import com.mogo.eagle.core.function.bindingcar.network.BindingcarNetWorkManager;
/**
* @author lixiaopeng
* @description
@@ -21,6 +23,9 @@ public class BindingcarManager {
return mBindingcarManager;
}
private void requestBindingcarInfo() {
BindingcarNetWorkManager.getInstance().getBindingcarInfo("");
}
}

View File

@@ -1,6 +1,7 @@
package com.mogo.eagle.core.function.bindingcar;
import android.content.Context;
import android.util.Log;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
@@ -34,11 +35,23 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
}
/**
* TODO 获取
* @param macAddress
*/
@Override
public void getBindingcarInfo(String macAddress) {
// Log.d("liyz", "macAddress = " + macAddress);
// BindingcarNetWorkManager.getInstance().getBindingcarInfo(macAddress);
}
@Override
public void modifyCarInfo(BindingcarCallBack callBack) {
BindingcarNetWorkManager.getInstance().getBindingcarInfo("");
// BindingcarNetWorkManager.getInstance().modifyBindingcar(callBack);
BindingcarNetWorkManager.getInstance().modifyBindingcar(callBack);
}
}

View File

@@ -60,7 +60,7 @@ class VehicleMonitoringManager : ICheckProvider, IMogoStatusChangedListener {
}
override fun checkMonitor(context: Context) {
checkNetWork(context, object : ICheckResultCallBack {
checkNetWork( context, object : ICheckResultCallBack {
override fun callBackWithCheckData(data: CheckResultData) {
updateMonitoringStatus(MogoReceiver.ACTION_CHECK_VEHICLE_MONITORING, data.data.vehicle.state)
if (data.data.vehicle.state == 1) {

View File

@@ -1,11 +1,7 @@
package com.mogo.eagle.core.function.check.net;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.module.common.constants.HostConst;
import com.mogo.service.network.IMogoNetwork;
/**
* @author liujing
@@ -18,18 +14,15 @@ public class CheckApiServiceFactory {
/**
* 获取指定域名下的 API 服务
*/
public static CheckApiServices getApiService(Context context, String netHost) {
IMogoNetwork network = (IMogoNetwork) ARouter.getInstance()
.build(MogoServicePaths.PATH_SERVICES_NETWORK)
.navigation(context);
return network.create(CheckApiServices.class, netHost);
public static CheckApiServices getApiService(String netHost) {
return MoGoRetrofitFactory.getInstance(netHost).create(CheckApiServices.class);
}
public static CheckApiServices getDataApiService(Context context) {
public static CheckApiServices getDataApiService() {
if (mDataApiService == null) {
synchronized (CheckApiServiceFactory.class) {
if (mDataApiService == null) {
mDataApiService = getApiService(context, HostConst.DATA_SERVICE_HOST);
mDataApiService = getApiService(HostConst.DATA_SERVICE_HOST);
}
}
}

View File

@@ -21,23 +21,23 @@ object CheckNetWork {
//网络请求,获取自车检测结果(工控机上报云端)
fun checkNetWork(context: Context, callbackFlow: ICheckResultCallBack) {
val params = ParamsBuilder.of(false)
.append("sn", MoGoAiCloudClientConfig.getInstance().sn)
.build()
.append("sn", MoGoAiCloudClientConfig.getInstance().sn)
.build()
CheckApiServiceFactory.getDataApiService(context).loadMonitorDetail(params)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : SubscribeImpl<CheckResultData>(RequestOptions.create(context)) {
override fun onSuccess(o: CheckResultData) {
super.onSuccess(o)
ThreadUtils.runOnUiThread { callbackFlow?.callBackWithCheckData(o) }
}
CheckApiServiceFactory.getDataApiService().loadMonitorDetail(params)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : SubscribeImpl<CheckResultData>(RequestOptions.create(context)) {
override fun onSuccess(o: CheckResultData) {
super.onSuccess(o)
ThreadUtils.runOnUiThread { callbackFlow?.callBackWithCheckData(o) }
}
override fun onError(message: String, code: Int) {
super.onError(message, code)
ThreadUtils.runOnUiThread { callbackFlow?.callBackWithError(message,code) }
}
})
override fun onError(message: String, code: Int) {
super.onError(message, code)
ThreadUtils.runOnUiThread { callbackFlow?.callBackWithError(message, code) }
}
})
}
}

View File

@@ -14,6 +14,7 @@ import com.zhjt.mogo_core_function_devatools.feedback.FeedbackManager
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager
import com.zhjt.mogo_core_function_devatools.trace.TraceManager.Companion.traceManager
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.upgradeManager
import record_cache.RecordPanelOuterClass
@Route(path = MogoServicePaths.PATH_DEVA_TOOLS)
@@ -23,10 +24,13 @@ class DevaToolsProvider : IDevaToolsProvider {
const val MODULE_NAME = "DevaTools"
}
private var mContext: Context? = null
override val functionName: String
get() = "DevaToolsProvider"
override fun init(context: Context) {
mContext = context
traceManager.init(context)
MogoLogCatchManager.init(context)
}
@@ -80,6 +84,14 @@ class DevaToolsProvider : IDevaToolsProvider {
FeedbackManager.showFeedbackWindow(ctx)
}
override fun getUpgradeVersionUrls(versionName: String) {
upgradeManager.getPackageUrls(versionName)
}
override fun downLoadPackage(downLoadKey: String) {
// upgradeManager.downLoadPackage(mContext!!, downLoadKey)
}
override fun onDestroy() {
MogoLogCatchManager.onDestroy()
}

View File

@@ -24,7 +24,6 @@ import com.zhjt.mogo_core_function_devatools.feedback.biz.bean.Feedback.BadCase
import com.zhjt.mogo_core_function_devatools.feedback.biz.impl.FeedbackPresenter
import com.zhjt.mogo_core_function_devatools.feedback.callback.IFeedbackCallback
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import record_cache.RecordPanelOuterClass
import java.lang.IllegalStateException
import kotlin.Result.Companion
@@ -35,15 +34,6 @@ internal object FeedbackManager {
private var hideFloat: (() -> Unit)? = null
private val presenter by lazy { FeedbackPresenter() }
@OptIn(ExperimentalCoroutinesApi::class)
private var autoPilotCallback = Channel<AutoPilotRecord>(Channel.RENDEZVOUS)
@Synchronized
get() = if (field.isClosedForReceive || field.isClosedForSend) {
field = Channel(Channel.RENDEZVOUS)
field
} else field
fun showFeedbackWindow(ctx: Context) {
CallerHmiManager.showFloatWindow("Feedback", FeedBackView(ctx).also { itx ->
itx.registerCallback(object : IFeedbackCallback {
@@ -79,20 +69,32 @@ internal object FeedbackManager {
val listener = object : IMoGoAutopilotIdentifyListener {
override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) {
super.onAutopilotRecordResult(recordPanel)
val newRecord = recordPanel.toRecord()
Log.d(TAG, "-- 收到工控机录制任务回调 -- $recordPanel")
if (newRecord.type == 1 && newRecord.id == taskId) {
if (newRecord.stat == 100 || newRecord.stat == 101) {
Log.d(TAG, "录制Bag完成, 触发结束录制全量日志 ...")
stopRecordLog(newRecord)
launch {
send(newRecord)
launch {
val newRecord = recordPanel.toRecord()
Log.d(TAG, "-- 收到工控机录制任务回调 -- $recordPanel")
if (newRecord.type == 1 && newRecord.id == taskId) {
when(newRecord.stat) {
100, 101 -> {
//成功结束录制
stopRecordLog(newRecord)
launch {
val ret = upload(record.context, badCase, checked, newRecord)
if (!ret) {
record.text = "开始录制"
record.setTag(R.id.feed_back_badcase_tag, 0)
}
}
}
300 -> {
//开始录制
startRecordLog(newRecord)
}
200 -> {
TipToast.shortTip("录制失败")
hideFloat?.invoke()
}
}
}
if (newRecord.stat == 300) {
Log.d(TAG, "录制Bag开始, 触发录制全量日志 ...")
startRecordLog(newRecord)
}
}
}
}
@@ -104,27 +106,36 @@ internal object FeedbackManager {
record.text = "结束录制"
record.setTag(R.id.feed_back_badcase_tag, 1)
record.setTag(R.id.feed_back_badcase_taskid_tag, taskId)
recordBag(1, taskId, 20)
Log.d(TAG, "延时20秒开始....")
delay(20000) //延时20秒
Log.d(TAG, "延时20秒结束....")
stopRecordBag(1, taskId)
upload(record.context, badCase, checked)
}.also {
record.setTag(R.id.feed_back_badcase_job, it)
recordBag(1, taskId)
launch {
Log.d(TAG, "延时20秒开始....")
delay(20000) //延时20秒
Log.d(TAG, "延时20秒结束....")
stopRecordBag(1, taskId)
}.also { itx ->
itx.invokeOnCompletion {
if (it is CancellationException) {
Log.d(TAG, "延时任务取消")
}
}
record.setTag(R.id.feed_back_badcase_job, itx)
}
}
}
override fun onStopBadCaseRecord(record: TextView) {
val data = itx.adapter.data ?: return
val badCase = data.firstOrNull() as? BadCase ?: return
val checked = badCase.reasons.find { it.isChecked } ?: throw IllegalStateException("这种状态不存在")
val tag = (record.getTag(R.id.feed_back_badcase_tag) as? Int) ?: throw IllegalStateException("这个状态不存在")
if (tag == 2) {
TipToast.shortTip("正在结束录制,请稍候...")
return
}
val taskId = (record.getTag(R.id.feed_back_badcase_taskid_tag) as? Int) ?: throw IllegalStateException("TaskId 不存在")
val oldJob = record.getTag(R.id.feed_back_badcase_job) as? Job
record.text = "正在结束录制"
record.setTag(R.id.feed_back_badcase_tag, 2)
oldJob?.safeCancel()
record.scope.launch {
stopRecordBag(1, taskId)
oldJob?.safeCancel()
upload(record.context, badCase, checked)
}
}
})
@@ -135,50 +146,49 @@ internal object FeedbackManager {
}
private fun startRecordLog(record: AutoPilotRecord) {
//val fileName = record.fileName
//添加全量日志开始录制
Log.d(TAG, "录制Bag开始, 触发录制全量日志 ...")
CallerDevaToolsManager.startCatchLog(1,record.fileName)
}
private fun stopRecordLog(newRecord: AutoPilotRecord) {
//val fileName = record.fileName
//添加全量日志结束录制
Log.d(TAG, "录制Bag完成, 触发结束录制全量日志 ...")
CallerDevaToolsManager.startCatchLog()
}
private suspend fun upload(ctx: Context, badCase: BadCase, checked: Reason) {
val result = receive()
val remark = badCase.remark.text
presenter.upload(mutableMapOf<String, String>().also { itx ->
itx["carLicense"] = MoGoAiCloudClientConfig.getInstance().sn
itx["filename"] = result.fileName ?: ""
itx["filesize"] = result.total.toString()
itx["key"] = result.key ?: ""
itx["reason"] = checked.reason ?: ""
itx["duration"] = result.duration.toInt().toString()
itx["timestamp"] = result.timestamp
itx["channel"] = "1"
if (!TextUtils.isEmpty(remark)) {
itx["remark"] = remark.toString()
}
}).also {
if (it == null || it.code != 200) {
ctx.toast("上报失败")
} else {
ctx.toast("上报成功")
hideFloat?.invoke()
private suspend fun upload(ctx: Context, badCase: BadCase, checked: Reason, record: AutoPilotRecord): Boolean {
try {
val remark = badCase.remark.text
return presenter.upload(mutableMapOf<String, String>().also { itx ->
itx["carLicense"] = MoGoAiCloudClientConfig.getInstance().sn
itx["filename"] = record.fileName ?: ""
itx["filesize"] = record.total.toString()
itx["key"] = record.key ?: ""
itx["reason"] = checked.reason ?: ""
itx["duration"] = record.duration.toInt().toString()
itx["timestamp"] = record.timestamp
itx["channel"] = "1"
if (!TextUtils.isEmpty(remark)) {
itx["remark"] = remark.toString()
}
}).let {
if (it == null || it.code != 200) {
ctx.toast("上报失败")
false
} else {
ctx.toast("上报成功")
hideFloat?.invoke()
true
}
}
} catch (t: Throwable) {
return false
}
}
private suspend fun send(record: AutoPilotRecord) = autoPilotCallback.send(record)
private suspend fun receive(): AutoPilotRecord = autoPilotCallback.receive()
private suspend fun recordBag(type: Int, id: Int, duration: Int) = suspendCancellableCoroutine<Unit> {
private suspend fun recordBag(type: Int, id: Int) = suspendCancellableCoroutine<Unit> {
val future = ThreadUtils.getIoPool().submit {
try {
CallerAutoPilotManager.recordPackage(type, id, duration)
CallerAutoPilotManager.recordPackage(type, id)
it.resumeWith(Result.success(Unit))
} catch (t: Throwable) {
it.resumeWith(Companion.failure(t))

View File

@@ -0,0 +1,49 @@
package com.zhjt.mogo_core_function_devatools.upgrade
import android.content.Context
import com.mogo.commons.context.ContextHolderUtil
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
import com.mogo.eagle.core.utilcode.breakpoint.Config
import com.mogo.eagle.core.utilcode.breakpoint.utils.DownloadUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.zhjt.mogo_core_function_devatools.upgrade.network.UpgradeVersionNetWorkModel
class UpgradeManager {
companion object {
const val TAG = "UpgradeManager"
val upgradeManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
UpgradeManager()
}
}
private val upgradeVersionNetWorkModel = UpgradeVersionNetWorkModel()
private var map: Map<String, String>? = null
private var version: String? = null
fun getPackageUrls(version: String) {
this.version = version
upgradeVersionNetWorkModel.requestUpgradeVersionUrls(version, onSuccess = {
map = it
CallerDevaToolsListenerManager.invokeDevaToolsUpgradeVersionUrls(map)
}, onError = {
CallerLogger.e("$M_DEVA$TAG", " getPackageUrls error: $it")
})
}
fun downLoadPackage(context: Context, downLoadKey: String) {
// val downLoadUrl = map?.get(downLoadKey)
// downLoadUrl?.let {
DownloadUtils.downLoad(
context,
"https://scm-1255510688.cos.ap-beijing.myqcloud.com/test/com.mogo.launcher.f/2.5.1.1009/IntelligentPilot_v2.5.1.1009_20220216_[fPadLenovoOchTaxi-launcher-online]_debug.apk",
Config.downLoadPath,
downLoadKey,
5
)
// }
}
}

View File

@@ -0,0 +1,22 @@
package com.zhjt.mogo_core_function_devatools.upgrade.network
import com.mogo.commons.debug.DebugConfig
class HostConst {
companion object {
private const val HOST_DEV = "http://myflow.ee-private-dev.myghost.zhidaoauto.com"
private const val HOST_RELEASE = "https://myflow.zhidaoauto.com"
fun getBaseUrl(): String {
return when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV -> HOST_DEV
DebugConfig.NET_MODE_QA -> HOST_DEV
DebugConfig.NET_MODE_DEMO -> HOST_RELEASE
DebugConfig.NET_MODE_RELEASE -> HOST_RELEASE
else -> HOST_RELEASE
}
}
}
}

View File

@@ -0,0 +1,12 @@
package com.zhjt.mogo_core_function_devatools.upgrade.network
import com.mogo.eagle.core.data.Response
import retrofit2.http.GET
import retrofit2.http.Query
interface UpgradeVersionApiService {
@GET("/backend/app/getApkInfo")
suspend fun getUpgradeVersion(@Query("fileName") versionName: String): Response<Any>
}

View File

@@ -0,0 +1,49 @@
package com.zhjt.mogo_core_function_devatools.upgrade.network
import com.mogo.eagle.core.data.Response
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiResponseCall
import com.mogo.eagle.core.network.request
import com.mogo.module.common.constants.HostConst
import com.zhjt.mogo_core_function_devatools.upgrade.network.HostConst.Companion.getBaseUrl
class UpgradeVersionNetWorkModel {
private fun getNetWorkApi(baseUrl: String = HostConst.CITY_HOST): UpgradeVersionApiService {
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(UpgradeVersionApiService::class.java)
}
fun requestUpgradeVersionUrls(
versionName: String,
onSuccess: ((Map<String, String>) -> Unit),
onError: ((String) -> Unit)
) {
request<Response<Any?>> {
loader {
apiResponseCall {
getNetWorkApi(getBaseUrl()).getUpgradeVersion(
versionName
)
}
}
onSuccess {
if (it.data != null) {
val jsonData = it.data.toString()
val map = mutableMapOf<String, String>()
jsonData.split(",").forEach { data ->
val array = data.split("=")
map[array[0]] = array[1]
}
onSuccess.invoke(map)
} else {
onError.invoke("没有获取到最新版本信息")
}
}
onError {
onError.invoke(it.message ?: "获取最新版本信息失败")
}
}
}
}

View File

@@ -9,6 +9,7 @@ import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatus;
import com.mogo.eagle.core.data.dispatch.ReportDispatchResult;
import com.mogo.eagle.core.data.dispatch.ReportedRoute;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.RequestOptions;
import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.network.utils.GsonUtil;
@@ -34,7 +35,7 @@ public class DispatchServiceModel {
private final IDispatchAdasApiService mAdasApiService;
private DispatchServiceModel() {
mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IDispatchAdasApiService.class, DATA_SERVICE_HOST);
mAdasApiService = MoGoRetrofitFactory.getInstance(DATA_SERVICE_HOST).create(IDispatchAdasApiService.class);
}
public static DispatchServiceModel getInstance() {

View File

@@ -3,10 +3,12 @@ package com.mogo.eagle.core.function.hmi.ui.setting
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Color
import android.os.Build
import android.text.Html
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.annotation.RequiresApi
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import com.mogo.cloud.passport.MoGoAiCloudClient
@@ -145,6 +147,8 @@ class DebugSettingView @JvmOverloads constructor(
CallerAutopilotIdentifyListenerManager.addListener(TAG, this)
// 添加 规划路径相关回调 监听
CallerAutopilotPlanningListenerManager.addListener(TAG, this)
// 添加 工控机基础信息回调 监听
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
if (logInfoView != null) {
logInfoView!!.onEnterForeground()
}
@@ -890,6 +894,10 @@ class DebugSettingView @JvmOverloads constructor(
override fun moduleLogChanged(moduleTag: MutableMap<String, SceneModule>) {
//todo 模块日志 tag 发生变化,需要更新对应 UI
}
override fun upgradeVersionUrls(urls: Map<String, String>?) {
//todo 版本信息更新
}
})
/**
@@ -1145,6 +1153,7 @@ class DebugSettingView @JvmOverloads constructor(
mGnssInfo = gnssInfo
}
@RequiresApi(Build.VERSION_CODES.N)
override fun onAutopilotIdentifyDataUpdate(trafficData: List<MessagePad.TrackedObject>?) {
// 重制数据
mIdentifyDataSize = 0

View File

@@ -10,12 +10,12 @@ import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.RequestOptions;
import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.module.common.MogoApisHandler;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
@@ -79,8 +79,7 @@ public class DelayCheckUtil implements Handler.Callback {
private void startEmptyRequest() {
requestTime = SystemClock.elapsedRealtime();
requestStartSystemTime = System.currentTimeMillis();
MogoApisHandler.getInstance().getApis().getNetworkApi()
.create(DelayCheckApiServices.class, DelayCheckHttpConstant.getBaseUrl())
MoGoRetrofitFactory.getInstance(DelayCheckHttpConstant.getBaseUrl()).create(DelayCheckApiServices.class)
.emptyInterface().subscribeOn(Schedulers.io()).observeOn(Schedulers.io())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(context)) {
@Override
@@ -128,8 +127,7 @@ public class DelayCheckUtil implements Handler.Callback {
RequestBody params = RequestBody.create(MediaType.get("application/json"), GsonUtil.jsonFromObject(request));
MogoApisHandler.getInstance().getApis().getNetworkApi()
.create(DelayCheckApiServices.class, DelayCheckHttpConstant.getBaseUrl())
MoGoRetrofitFactory.getInstance(DelayCheckHttpConstant.getBaseUrl()).create(DelayCheckApiServices.class)
.uploadDelayCheckData(params).observeOn(Schedulers.io()).subscribeOn(Schedulers.io())
.subscribe(new SubscribeImpl<DelayCheckResponse>(RequestOptions.create(context)) {
@Override

View File

@@ -6,10 +6,11 @@ import android.os.Looper
import android.os.Message
import com.mogo.eagle.core.data.camera.CameraEntity
import com.mogo.eagle.core.data.camera.ReqLiveCarBean
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MONITOR
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.function.monitoring.net.CameraListServices
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MONITOR
import com.mogo.map.MogoLocationClient
import com.mogo.module.common.MogoApisHandler
import com.mogo.module.common.constants.HostConst
@@ -58,7 +59,8 @@ class CronTaskManager(private var context: Context?) {
@Deprecated("已废弃", ReplaceWith("requestDeviceList()"), DeprecationLevel.WARNING)
private fun requestCameraList() {
// 衡阳可直播的摄像头有限先写死roadId便于调试
disposable = netWork.create(CameraListServices::class.java, HostConst.CAMERA_STREAM_HOST)
disposable = MoGoRetrofitFactory.getInstance(HostConst.CAMERA_STREAM_HOST)
.create(CameraListServices::class.java)
.getCameraList("10849")
.subscribeOn(Schedulers.io())
.map { cameraListInfo ->
@@ -88,7 +90,8 @@ class CronTaskManager(private var context: Context?) {
*/
private fun requestDeviceList() {
MogoLocationClient.getInstance(context).lastKnowLocation?.let { location ->
disposable = netWork.create(CameraListServices::class.java, HostConst.CITY_HOST)
disposable = MoGoRetrofitFactory.getInstance(HostConst.CITY_HOST)
.create(CameraListServices::class.java)
.getDeviceList(location.longitude, location.latitude, 500)
.subscribeOn(Schedulers.io())
.map { cameraListInfo ->
@@ -121,32 +124,32 @@ class CronTaskManager(private var context: Context?) {
private fun requestCarCameraList() {
MogoLocationClient.getInstance(context).lastKnowLocation?.let { location ->
carDisposable =
netWork.create(CameraListServices::class.java, HostConst.CITY_HOST)
.getCarCameraList(ReqLiveCarBean(location.longitude, location.latitude))
.subscribeOn(Schedulers.io())
.map { liveCarCameraInfo ->
liveCarCameraInfo.result?.liveCamera?.filter { liveCarCamera ->
!liveCarCamera.videoSn.isNullOrEmpty()
}?.map { cameraInfo ->
CameraEntity(
sn = cameraInfo.videoSn,
street = cameraInfo.street,
township = cameraInfo.township
)
} ?: ArrayList()
}
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
carCameraList = it
// CallerLogger.d("$M_MONITOR$TAG", "requestCarCameraList返回结果为$it")
}, {
CallerLogger.e(
"$M_MONITOR$TAG",
"message is:${it.message}, cause is:${it.cause}"
carDisposable = MoGoRetrofitFactory.getInstance(HostConst.CITY_HOST)
.create(CameraListServices::class.java)
.getCarCameraList(ReqLiveCarBean(location.longitude, location.latitude))
.subscribeOn(Schedulers.io())
.map { liveCarCameraInfo ->
liveCarCameraInfo.result?.liveCamera?.filter { liveCarCamera ->
!liveCarCamera.videoSn.isNullOrEmpty()
}?.map { cameraInfo ->
CameraEntity(
sn = cameraInfo.videoSn,
street = cameraInfo.street,
township = cameraInfo.township
)
it.printStackTrace()
})
} ?: ArrayList()
}
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
carCameraList = it
// CallerLogger.d("$M_MONITOR$TAG", "requestCarCameraList返回结果为$it")
}, {
CallerLogger.e(
"$M_MONITOR$TAG",
"message is:${it.message}, cause is:${it.cause}"
)
it.printStackTrace()
})
} ?: run {
CallerLogger.e("$M_MONITOR$TAG", "CurrentLocation is null!")
}
@@ -160,26 +163,26 @@ class CronTaskManager(private var context: Context?) {
streamDisposable?.let {
if (!it.isDisposed) it.dispose()
}
streamDisposable =
netWork.create(CameraListServices::class.java, HostConst.OPEN_CAMERA_STREAM_HOST)
.openCameraStream(cameraIp)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
CallerLogger.d("$M_MONITOR$TAG", "openCameraStream返回结果为$it")
it.result?.let { streamResult ->
if (!streamResult.flvUrl.isNullOrEmpty()) CallerHmiManager.startRoadCameraLive(
streamResult.flvUrl!!
)
}
}, {
CallerLogger.e(
"$M_MONITOR$TAG",
"openCameraStream&message is:${it.message}, cause is:${it.cause}"
streamDisposable = MoGoRetrofitFactory.getInstance(HostConst.OPEN_CAMERA_STREAM_HOST)
.create(CameraListServices::class.java)
.openCameraStream(cameraIp)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
CallerLogger.d("$M_MONITOR$TAG", "openCameraStream返回结果为$it")
it.result?.let { streamResult ->
if (!streamResult.flvUrl.isNullOrEmpty()) CallerHmiManager.startRoadCameraLive(
streamResult.flvUrl!!
)
CallerHmiManager.showNoSignalView()
it.printStackTrace()
})
}
}, {
CallerLogger.e(
"$M_MONITOR$TAG",
"openCameraStream&message is:${it.message}, cause is:${it.cause}"
)
CallerHmiManager.showNoSignalView()
it.printStackTrace()
})
}
/**
@@ -189,7 +192,8 @@ class CronTaskManager(private var context: Context?) {
streamDisposable?.let {
if (!it.isDisposed) it.dispose()
}
streamDisposable = netWork.create(CameraListServices::class.java, HostConst.CITY_HOST)
streamDisposable = MoGoRetrofitFactory.getInstance(HostConst.CITY_HOST)
.create(CameraListServices::class.java)
.reqOpenCameraStream(cameraIp)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@@ -1,11 +1,7 @@
package com.mogo.eagle.core.function.v2x.events.network;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.module.common.constants.HostConst;
import com.mogo.service.network.IMogoNetwork;
/**
* 应对不同接口对应不同服务域名的工厂累
@@ -16,54 +12,52 @@ public class V2XApiServiceFactory {
private static V2XApiService mGeoFenceCarServiceApiService;
private static V2XApiService mRealtimeLocationApiService;
private static V2XApiService mDataServiceApiService;
/**
* 获取指定域名下的 API 服务
*/
public static V2XApiService getApiService(Context context, String netHost) {
IMogoNetwork network = (IMogoNetwork) ARouter.getInstance()
.build(MogoServicePaths.PATH_SERVICES_NETWORK)
.navigation(context);
return network.create(V2XApiService.class, netHost);
public static V2XApiService getApiService(String netHost) {
return MoGoRetrofitFactory.getInstance(netHost).create(V2XApiService.class);
}
public static V2XApiService getDevaApiService(Context context) {
public static V2XApiService getDevaApiService() {
if (mDevaApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mDevaApiService == null) {
mDevaApiService = getApiService(context, HostConst.DEVA_HOST);
mDevaApiService = getApiService(HostConst.DEVA_HOST);
}
}
}
return mDevaApiService;
}
public static V2XApiService getGeoFenceCarServiceApiService(Context context) {
public static V2XApiService getGeoFenceCarServiceApiService() {
if (mGeoFenceCarServiceApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mGeoFenceCarServiceApiService == null) {
mGeoFenceCarServiceApiService = getApiService(context, HostConst.GEOFENCE_HOST);
mGeoFenceCarServiceApiService = getApiService(HostConst.GEOFENCE_HOST);
}
}
}
return mGeoFenceCarServiceApiService;
}
public static V2XApiService getRealtimeLocationApiService(Context context) {
public static V2XApiService getRealtimeLocationApiService() {
if (mRealtimeLocationApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mRealtimeLocationApiService == null) {
mRealtimeLocationApiService = getApiService(context, HostConst.REALTIME_LOCATION_HOST);
mRealtimeLocationApiService = getApiService(HostConst.REALTIME_LOCATION_HOST);
}
}
}
return mRealtimeLocationApiService;
}
public static V2XApiService getStrategyPushApiService(Context context) {
public static V2XApiService getStrategyPushApiService() {
if (mDataServiceApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mDataServiceApiService == null) {
mDataServiceApiService = getApiService(context, HostConst.STRATEGY_PUSH_HOST);
mDataServiceApiService = getApiService(HostConst.STRATEGY_PUSH_HOST);
}
}
}

View File

@@ -57,7 +57,7 @@ public class V2XRefreshModel {
public void giveLikeLiveVideo(final V2XRefreshCallback callback, String snStr) {
final Map<String, Object> query = new ParamsProvider.Builder(mContext).build();
query.put("data", "{\"sn\":" + snStr + "}");
V2XApiServiceFactory.getGeoFenceCarServiceApiService(mContext).giveLikeLiveVideo(query)
V2XApiServiceFactory.getGeoFenceCarServiceApiService().giveLikeLiveVideo(query)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {
@@ -92,7 +92,7 @@ public class V2XRefreshModel {
okhttp3.MediaType.parse("application/json; charset=utf-8"),
"{\"sn\":\"" + sn + "\"}");
V2XApiServiceFactory.getRealtimeLocationApiService(mContext).queryUserInfoBySn(body)
V2XApiServiceFactory.getRealtimeLocationApiService().queryUserInfoBySn(body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<V2XUserInfoRes>(RequestOptions.create(mContext)) {
@@ -142,7 +142,7 @@ public class V2XRefreshModel {
dataStr.append("}");
query.put("data", dataStr.toString());
V2XApiServiceFactory.getRealtimeLocationApiService(mContext).queryNearbyVehicleLiveByLocation(query)
V2XApiServiceFactory.getRealtimeLocationApiService().queryNearbyVehicleLiveByLocation(query)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<V2XLiveCarRes>(RequestOptions.create(mContext)) {
@@ -182,7 +182,7 @@ public class V2XRefreshModel {
.append(0)
.append("}").toString();
map.put("data", json);
V2XApiServiceFactory.getRealtimeLocationApiService(mContext).sendHelpSignal(map).subscribeOn(Schedulers.io())
V2XApiServiceFactory.getRealtimeLocationApiService().sendHelpSignal(map).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {
@Override
@@ -225,7 +225,7 @@ public class V2XRefreshModel {
.append("\"sn\":").append(MoGoAiCloudClientConfig.getInstance().getSn())
.append("}").toString();
map.put("data", json);
V2XApiServiceFactory.getDevaApiService(mContext).addPoiInfoFabulous(map).subscribeOn(Schedulers.io())
V2XApiServiceFactory.getDevaApiService().addPoiInfoFabulous(map).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {
@Override
@@ -263,7 +263,7 @@ public class V2XRefreshModel {
.append("\"enthusiasticSn\":").append(MoGoAiCloudClientConfig.getInstance().getSn())
.append("}").toString();
map.put("data", json);
V2XApiServiceFactory.getDevaApiService(mContext).respondingToHelp(map).subscribeOn(Schedulers.io())
V2XApiServiceFactory.getDevaApiService().respondingToHelp(map).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {
@Override
@@ -290,7 +290,7 @@ public class V2XRefreshModel {
final Map<String, Object> map = new ParamsProvider.Builder(mContext).build();
String json = "{" + "\"id\":\"" + id + "\"," + "\"sn\":\"" + MoGoAiCloudClientConfig.getInstance().getSn() + "\"," + "\"status\":" + status + "," + "\"helpId\":\"" + helpId + "\"}";
map.put("data", json);
V2XApiServiceFactory.getDevaApiService(mContext).manualMarkingTrafficJam(map).subscribeOn(Schedulers.io())
V2XApiServiceFactory.getDevaApiService().manualMarkingTrafficJam(map).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {
@Override
@@ -309,7 +309,7 @@ public class V2XRefreshModel {
* 根据名称获取策略详情
*/
public void getStrategyPush(V2XRefreshCallback<V2XStrategyPushRes> callback) {
V2XApiServiceFactory.getStrategyPushApiService(mContext).getStrategyPush().subscribeOn(Schedulers.io())
V2XApiServiceFactory.getStrategyPushApiService().getStrategyPush().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<V2XStrategyPushRes>(RequestOptions.create(mContext)) {
@Override
@@ -341,7 +341,7 @@ public class V2XRefreshModel {
public void getHelpSignal(V2XRefreshCallback<V2XSeekHelpRes> callback) {
final Map<String, Object> map = new ParamsProvider.Builder(mContext).build();
map.put("sn", MoGoAiCloudClientConfig.getInstance().getSn());
V2XApiServiceFactory.getRealtimeLocationApiService(mContext).queryHelpSignal(map).subscribeOn(Schedulers.io())
V2XApiServiceFactory.getRealtimeLocationApiService().queryHelpSignal(map).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<V2XSeekHelpRes>(RequestOptions.create(mContext)) {
@Override

View File

@@ -104,7 +104,7 @@ public class V2XShareNetworkModel {
builder.append("data", GsonUtil.jsonFromObject(hashMap));
Map<String, Object> parameters = builder.build();
//热心指数
V2XApiServiceFactory.getDevaApiService(mContext).getEnthusiasmIndex(parameters)
V2XApiServiceFactory.getDevaApiService().getEnthusiasmIndex(parameters)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create((mContext))) {
@@ -148,7 +148,7 @@ public class V2XShareNetworkModel {
builder.append("data", GsonUtil.jsonFromObject(hashMap));
Map<String, Object> parameters = builder.build();
V2XApiServiceFactory.getDevaApiService(mContext).getShareEventList(parameters)
V2XApiServiceFactory.getDevaApiService().getShareEventList(parameters)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {

View File

@@ -58,7 +58,6 @@ public class V2XScenarioManager implements IV2XScenarioManager {
ThreadUtils.runOnUiThread(() -> {
// 提取之前存储的场景
if (v2XMessageEntity != null) {
sceneChange();
// 广播给应用内部其它模块
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
@@ -69,9 +68,11 @@ public class V2XScenarioManager implements IV2XScenarioManager {
mV2XScenario = new V2XRoadEventScenario();
break;
case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_VR_SHOW:
sceneChange();
mV2XScenario = new V2XOptimalRouteVREventScenario();
break;
case V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_WEAKNESS:
sceneChange();
boolean isVrMode1 = false;
IMogoStatusManager statusManager1 = BridgeApi.INSTANCE.statusManager();
if (statusManager1 != null) {
@@ -101,6 +102,7 @@ public class V2XScenarioManager implements IV2XScenarioManager {
}
}
/**
* http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=52833468
* 道路事件触发后,切换到中景

View File

@@ -4,19 +4,17 @@ import com.google.gson.Gson
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.trafficlight.*
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.cancel
import com.mogo.eagle.core.network.request
import com.mogo.module.common.MogoApisHandler
import com.mogo.module.common.constants.HostConst.CITY_HOST
class TrafficLightNetWorkModel {
private fun getNetWorkApi(baseUrl: String = CITY_HOST): TrafficLightApiService {
return MogoApisHandler.getInstance().apis.networkApi.createNoCallAdapter(
TrafficLightApiService::class.java, baseUrl
)
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(TrafficLightApiService::class.java)
}
fun requestRoadID(
@@ -86,10 +84,10 @@ class TrafficLightNetWorkModel {
}
}
onSuccess {
if(it.result!=null){
if (it.result != null) {
onSuccess.invoke(it.result)
}else{
onError.invoke(it.msg?:"返回result数据为null")
} else {
onError.invoke(it.msg ?: "返回result数据为null")
}
}
onError {
@@ -115,7 +113,8 @@ class TrafficLightNetWorkModel {
request<BaseResponse<Any>> {
val map = hashMapOf<String, String>()
start {
val trafficLightRequestData = ChangeLightRequestData(lightId, crossingNo, heading, controlTime)
val trafficLightRequestData =
ChangeLightRequestData(lightId, crossingNo, heading, controlTime)
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["data"] = Gson().toJson(trafficLightRequestData)
}

View File

@@ -3,18 +3,17 @@ package com.mogo.eagle.core.function.v2x.vip.network
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.v2x.VipRequest
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.request
import com.mogo.module.common.MogoApisHandler
import com.mogo.module.common.constants.HostConst.DATA_SERVICE_HOST
class VipNetWorkModel {
private fun getNetWorkApi(baseUrl: String = DATA_SERVICE_HOST): VipApiService {
return MogoApisHandler.getInstance().apis.networkApi.createNoCallAdapter(
VipApiService::class.java, baseUrl
)
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(VipApiService::class.java)
}
fun requestVip(onSuccess: ((VipRequest) -> Unit), onError: ((String) -> Unit)) {

View File

@@ -1,3 +1,5 @@
package com.mogo.eagle.core.data
class BaseResponse<out T>(val code: Int, val msg: String, val result: T)
class Response<out T>(val code: Int, val msg: String, val data: T)

View File

@@ -9,4 +9,5 @@ import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider;
*/
public interface IMoGoBindingcarProvider extends IMoGoFunctionServerProvider {
void modifyCarInfo(BindingcarCallBack callBack);
void getBindingcarInfo(String macAddress);
}

View File

@@ -79,4 +79,14 @@ interface IDevaToolsProvider : IMoGoFunctionServerProvider {
* 展示反馈页面
*/
fun showFeedbackWindow(ctx: Context)
/**
* 获取升级版本Urls
*/
fun getUpgradeVersionUrls(versionName: String)
/**
* 下载指定包
*/
fun downLoadPackage(downLoadKey:String)
}

View File

@@ -24,4 +24,9 @@ interface IMoGoDevaToolsListener {
* 模块TAG更新回调
*/
fun moduleLogChanged(moduleTag: MutableMap<String, SceneModule>)
/**
* 版本升级Urls
*/
fun upgradeVersionUrls(urls: Map<String, String>?)
}

View File

@@ -65,11 +65,18 @@ object CallerDevaToolsListenerManager {
}
}
fun invokeDevaToolsModuleLogChanges(moduleTag: MutableMap<String, SceneModule>){
fun invokeDevaToolsModuleLogChanges(moduleTag: MutableMap<String, SceneModule>) {
M_DEVA_TOOLS_LISTENER.forEach {
val listener = it.value
listener.moduleLogChanged(moduleTag)
}
}
fun invokeDevaToolsUpgradeVersionUrls(urls: Map<String, String>?) {
M_DEVA_TOOLS_LISTENER.forEach {
val listener = it.value
listener.upgradeVersionUrls(urls)
}
}
}

View File

@@ -103,4 +103,18 @@ object CallerDevaToolsManager {
fun showFeedbackView(ctx: Context) {
devaToolsProviderApi?.showFeedbackWindow(ctx)
}
/**
* 获取升级版本Urls
*/
fun getUpgradeVersionUrls(versionName: String) {
devaToolsProviderApi?.getUpgradeVersionUrls(versionName)
}
/**
* 下载指定包
*/
fun downLoadPackage(downLoadKey: String) {
devaToolsProviderApi?.downLoadPackage(downLoadKey)
}
}

View File

@@ -59,13 +59,7 @@ object CallerVisualAngleManager {
private var roadId = ""
override fun onRoadIdInfo(roadId: String) {}
override fun onStopLineInfo(info: StopLine) {
if (!hasCrossRoad && info.distanceOfCarToStopLine <= 30.0) {
hasCrossRoad = true
changeVisualAngle(CrossRoad)
}
override fun onRoadIdInfo(roadId: String) {
val oldRoadId = this.roadId
if (oldRoadId != roadId) {
if (hasCrossRoad) {
@@ -73,7 +67,14 @@ object CallerVisualAngleManager {
changeVisualAngle(Default())
}
}
this.roadId = info.roadId
this.roadId = roadId
}
override fun onStopLineInfo(info: StopLine) {
if (!hasCrossRoad && info.distanceOfCarToStopLine <= 30.0) {
hasCrossRoad = true
changeVisualAngle(CrossRoad)
}
}
})
}
@@ -177,10 +178,12 @@ object CallerVisualAngleManager {
@OptIn(InternalCoroutinesApi::class)
fun changeVisualAngle(scene: Scene) {
val triggerTime = TimeUnit.MILLISECONDS.toSeconds(SystemClock.elapsedRealtime())
val triggerTime = SystemClock.elapsedRealtime()
scope.launch {
Log.d("XXX", "--- 1 -----")
val displayed = getDisplayed()
if (displayed == null) {
Log.d("XXX", "--- 2 -----")
val top = getTop() //堆顶
if (top != null && top.target.priority > scene.priority) {
doChangeAngle(top)
@@ -190,27 +193,36 @@ object CallerVisualAngleManager {
}
Log.d(TAG, "没有正在展示的视角,当前要展示的视角: $scene")
} else {
if (scene.javaClass == displayed.javaClass) {
Log.d("XXX", "--- 3 -----")
if (scene.javaClass == displayed.target.javaClass) {
Log.d("XXX", "--- 4 -----")
Log.d(TAG, "同一种场景不需要重复展示")
defaultDelayJob?.safeCancel()
return@launch
}
if (scene is Default) {
Log.d("XXX", "--- 5 -----")
Log.d(TAG, "恢复到默认视图,之前展示的视图:$displayed")
heap -= displayed
defaultDelayJob?.safeCancel()
launch {
val delay = scene.unit.toMillis(scene.delay)
Log.d(TAG, "默认视图开启延时倒计时, 倒计时时间:${delay} ms.")
delay(delay)
Log.d(TAG, "默认视图结束倒计时,开始展示...")
doChangeAngle(Record(scene, triggerTime = triggerTime))
heap -= displayed
}.also { defaultDelayJob = it }
} else {
Log.d("XXX", "--- 6 -----")
defaultDelayJob?.safeCancel()
val delta = triggerTime - displayed.triggerTime
if (delta >= MaxDisplayThreshold) {
Log.d("XXX", "--- 6-1 -----")
Log.d(TAG, "场景: $scene 触发展示,满足条件开始展示...")
doChangeAngle(Record(scene, triggerTime = triggerTime))
} else {
Log.d(TAG, "场景: $scene 触发展示但是在20s内丢弃...")
Log.d("XXX", "--- 6-2 -----")
Log.d(TAG, "场景: $scene 触发展示但是在30s内丢弃...")
}
}
}
@@ -220,14 +232,13 @@ object CallerVisualAngleManager {
@OptIn(InternalCoroutinesApi::class)
private fun doChangeAngle(record: Record) {
CallerMapUIServiceManager.getMapUIController()?.also {
record.isDisplay = true
synchronized(heap) {
heap += record
if (record.target !is Default) {
record.isDisplay = true
synchronized(heap) {
heap += record
}
}
val target = record.target
if (target !is Default) {
defaultDelayJob?.safeCancel()
}
if (target is LowSpeed) {
it.changeMapVisualAngle(record.target.angle, MogoLatLng(target.lat, target.lon))
} else {

View File

@@ -2,6 +2,7 @@ package com.mogo.eagle.core.network
import androidx.lifecycle.LifecycleOwner
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.Response
import com.mogo.eagle.core.network.exception.ApiException
import com.mogo.eagle.core.network.exception.CommonException.Companion.NETWORK_EXCEPTION
import com.mogo.eagle.core.network.exception.CommonException.Companion.NULL_EXCEPTION
@@ -65,7 +66,13 @@ class Request<T> {
}
val result = deferred.await()
if (result != null && result is BaseResponse<*>) {
if (result != null && (result is BaseResponse<*>)) {
if (result.code == 0 || result.code == 200) {
onSuccess?.invoke(result)
} else {
throw ApiException(result.code, result.msg)
}
} else if (result is Response<*>) {
if (result.code == 0 || result.code == 200) {
onSuccess?.invoke(result)
} else {
@@ -114,3 +121,8 @@ fun cancel(requestKey: String) {
suspend fun <T : Any> apiCall(call: suspend () -> BaseResponse<T>): BaseResponse<T> {
return call.invoke()
}
suspend fun <T : Any> apiResponseCall(call: suspend () -> Response<T>): Response<T> {
return call.invoke()
}

View File

@@ -2,6 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.eagle.core.utilcode.util">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
<application>
@@ -35,5 +36,9 @@
<action android:name="${applicationId}.messenger" />
</intent-filter>
</service>
<service android:name="com.mogo.eagle.core.utilcode.breakpoint.services.DownloadService"/>
<receiver android:name=".NetworkUtils$NetworkChangedReceiver"/>
</application>
</manifest>

View File

@@ -0,0 +1,17 @@
package com.mogo.eagle.core.utilcode.breakpoint;
import android.os.Environment;
/**
* Created by kun on 2016/11/10.
* 配置类
*/
public class Config {
/**
* 文件下载地址
*/
public final static String downLoadPath = Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/downloads/";
public final static String DOWN_LOAD_TAG = "Package-DownLoad";
}

View File

@@ -0,0 +1,100 @@
package com.mogo.eagle.core.utilcode.breakpoint.bean;
import java.io.Serializable;
public class FileBean implements Serializable {
private int id;
private String savePath;
private String fileName;
private String url;
private int length;
private int finished;
private int threadCount;
public FileBean() {
}
public FileBean(int id, String fileName, String url, int finished) {
this.id = id;
this.fileName = fileName;
this.url = url;
this.finished = finished;
}
public FileBean(int id, String savePath,String fileName, String url, int finished) {
this.id = id;
this.savePath = savePath;
this.fileName = fileName;
this.url = url;
this.finished = finished;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getFinished() {
return finished;
}
public void setFinished(int finished) {
this.finished = finished;
}
public int getThreadCount() {
return threadCount;
}
public void setThreadCount(int threadCount) {
this.threadCount = threadCount;
}
@Override
public String toString() {
int progress = (int) (finished*1.0f/length *100);
return "FileBean{" +
"id=" + id +
", fileName='" + fileName + '\'' +
", length=" + length +
", finished=" + finished +
"progress="+progress+
'}';
}
}

View File

@@ -0,0 +1,77 @@
package com.mogo.eagle.core.utilcode.breakpoint.bean;
import java.io.Serializable;
/**
* Created by kun on 2016/11/10.
*/
public class ThreadBean implements Serializable{
private int id;
private String url;
private int start;
private int end;
private int finished;
public ThreadBean() {
}
public ThreadBean(int id, String url, int start, int end, int finished) {
this.id = id;
this.url = url;
this.start = start;
this.end = end;
this.finished = finished;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getFinished() {
return finished;
}
public void setFinished(int finished) {
this.finished = finished;
}
@Override
public String toString() {
return "ThreadBean{" +
"id=" + id +
", url='" + url + '\'' +
", start=" + start +
", end=" + end +
", finished=" + finished +
'}';
}
}

View File

@@ -0,0 +1,27 @@
package com.mogo.eagle.core.utilcode.breakpoint.callback;
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean;
/**
* Created by kun on 2016/11/11.
* 下载进度回调
*/
public interface DownloadCallBack {
/**
* 暂停回调
* @param threadBean
*/
void pauseCallBack(ThreadBean threadBean);
/**
* 下载进度
* @param length
*/
void progressCallBack(int length);
/**
* 线程下载完毕
* @param threadBean
*/
void threadDownLoadFinished(ThreadBean threadBean);
}

View File

@@ -0,0 +1,35 @@
package com.mogo.eagle.core.utilcode.breakpoint.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by kun on 2016/11/10.
*/
public class DBHelper extends SQLiteOpenHelper{
private static final String DB_NAME = "download.db";
private static DBHelper dbHelper = null;
public static DBHelper getInstance(Context context){
if(dbHelper==null) dbHelper = new DBHelper(context);
return dbHelper;
}
private DBHelper(Context context) {
super(context, DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table thread_info (_id integer primary key autoincrement," +
"thread_id integer,url text,start integer,ends integer,finished integer)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}

View File

@@ -0,0 +1,43 @@
package com.mogo.eagle.core.utilcode.breakpoint.db.dao;
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean;
import java.util.List;
public interface ThreadDao {
/**
* 插入下载线程信息
* @param threadBean
*/
void insertThread(ThreadBean threadBean);
/**
* 更新下载线程信息
* @param url
* @param thread_id
* @param finished
*/
void updateThread(String url, int thread_id, int finished);
/**
* 删除下载线程
* @param url
*/
void deleteThread(String url);
/**
* 获取下载线程
* @param url
* @return
*/
List<ThreadBean> getThreads(String url);
/**
* 判断下载线程是否存在
* @param url
* @param thread_id
* @return
*/
boolean isExists(String url, int thread_id);
}

View File

@@ -0,0 +1,73 @@
package com.mogo.eagle.core.utilcode.breakpoint.db.impl;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean;
import com.mogo.eagle.core.utilcode.breakpoint.db.DBHelper;
import com.mogo.eagle.core.utilcode.breakpoint.db.dao.ThreadDao;
import java.util.ArrayList;
import java.util.List;
public class ThreadDaoImpl implements ThreadDao {
private DBHelper dbHelper;
public ThreadDaoImpl(Context context){
dbHelper = DBHelper.getInstance(context);
}
@Override
public synchronized void insertThread(ThreadBean threadBean) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("insert into thread_info ( thread_id, url, start, ends, finished) values (?,?,?,?,?)"
,new Object[]{threadBean.getId(),threadBean.getUrl(),threadBean.getStart(),threadBean.getEnd(),threadBean.getFinished()});
db.close();
}
@Override
public synchronized void updateThread(String url, int thread_id, int finished) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("update thread_info set finished = ? where url = ? and thread_id = ?"
,new Object[]{finished,url,thread_id});
db.close();
}
@Override
public void deleteThread(String url) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("delete from thread_info where url = ?",new Object[]{url});
db.close();
}
@Override
public List<ThreadBean> getThreads(String url) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from thread_info where url = ?",new String[]{url});
List<ThreadBean> threadBeanList = new ArrayList<>();
while (cursor.moveToNext()){
ThreadBean bean = new ThreadBean();
bean.setId(cursor.getInt(cursor.getColumnIndex("thread_id")));
bean.setUrl(cursor.getString(cursor.getColumnIndex("url")));
bean.setStart(cursor.getInt(cursor.getColumnIndex("start")));
bean.setEnd(cursor.getInt(cursor.getColumnIndex("ends")));
bean.setFinished(cursor.getInt(cursor.getColumnIndex("finished")));
threadBeanList.add(bean);
}
cursor.close();
db.close();
return threadBeanList;
}
@Override
public boolean isExists(String url, int thread_id) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from thread_info where url = ? and thread_id = ?", new String[]{url,thread_id+""});
boolean exists = cursor.moveToNext();
cursor.close();
db.close();
return exists;
}
}

View File

@@ -0,0 +1,52 @@
package com.mogo.eagle.core.utilcode.breakpoint.event;
/**
* Created by G40-70M on 2016/11/16.
*/
public class DownloadData {
private String url;
private int progress;
private int length;
private String msg;
private String filePath;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getProgress() {
return progress;
}
public void setProgress(int progress) {
this.progress = progress;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
}

View File

@@ -0,0 +1,171 @@
package com.mogo.eagle.core.utilcode.breakpoint.services;
import static com.mogo.eagle.core.utilcode.breakpoint.Config.DOWN_LOAD_TAG;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.IBinder;
import android.util.Log;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean;
import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData;
import com.mogo.eagle.core.utilcode.breakpoint.thread.DownloadTask;
import com.mogo.eagle.core.utilcode.breakpoint.thread.InitThread;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 下载服务
*/
public class DownloadService extends Service implements InitThread.InitCallBack {
public static final String ACTION_START = "ACTION_START";
public static final String ACTION_PAUSE = "ACTION_PAUSE";
/**
* 下载任务集合
*/
private final List<DownloadTask> downloadTasks = new ArrayList<>();
public static ExecutorService executorService = Executors.newCachedThreadPool();
private NetConnectionReceiver netConnectionReceiver;
@Override
public void onCreate() {
super.onCreate();
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
netConnectionReceiver = new NetConnectionReceiver();
registerReceiver(netConnectionReceiver, filter);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null) {
Log.e(DOWN_LOAD_TAG, "onStartCommand intent is null");
return Service.START_NOT_STICKY;
}
String action = intent.getAction();
if (action == null) {
Log.e(DOWN_LOAD_TAG, "onStartCommand action is null");
return Service.START_NOT_STICKY;
}
if (action.equals(ACTION_START)) {
Log.d(DOWN_LOAD_TAG, "ACTION_START");
FileBean fileBean = (FileBean) intent.getSerializableExtra("FileBean");
if (downloadTasks.size() > 0) {
for (DownloadTask downloadTask : downloadTasks) {
if (downloadTask.getFileBean().getUrl().equals(fileBean.getUrl())) {
//如果下载任务中以后该文件的下载任务 则直接返回
DownloadData downloadData = new DownloadData();
downloadData.setUrl(fileBean.getUrl());
downloadData.setMsg("下载任务已存在");
// EventMessage eventMessage = new EventMessage(EventMessage.TYPE_ERROR, downloadData);
// EventBus.getDefault().post(eventMessage);
return super.onStartCommand(intent, flags, startId);
}
}
}
executorService.execute(new InitThread(fileBean, this));
} else if (intent.getAction().equals(ACTION_PAUSE)) {
FileBean fileBean = (FileBean) intent.getSerializableExtra("FileBean");
DownloadTask pauseTask = null;
if (downloadTasks.size() > 0) {
for (DownloadTask downloadTask : downloadTasks) {
if (downloadTask.getFileBean().getUrl().equals(fileBean.getUrl())) {
downloadTask.pauseDownload();
pauseTask = downloadTask;
break;
}
}
//将下载任务移除
downloadTasks.remove(pauseTask);
}
}
return super.onStartCommand(intent, flags, startId);
}
//下载线程初始化完毕
@Override
public void initSuccess(FileBean fileBean) {
Log.d(DOWN_LOAD_TAG, "length:" + fileBean.getLength());
DownloadData downloadData = new DownloadData();
downloadData.setUrl(fileBean.getUrl());
downloadData.setMsg("开始下载");
downloadData.setLength(fileBean.getLength());
// EventMessage eventMsg = new EventMessage(EventMessage.TYPE_START, downloadData);
// EventBus.getDefault().post(eventMsg);
//开始下载
DownloadTask downloadTask = new DownloadTask(this, fileBean, fileBean.getThreadCount());
downloadTasks.add(downloadTask);
}
@Override
public void initFailed(DownloadData downloadData) {
Log.e(DOWN_LOAD_TAG, "initFailed : " + downloadData.getMsg());
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(netConnectionReceiver);
}
private class NetConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mobNetInfo == null || wifiNetInfo == null) {
return;
}
if (downloadTasks.size() == 0) {
return;
}
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
//网络连接已断开
for (DownloadTask downloadTask : downloadTasks) {
downloadTask.pauseDownload();//暂停所有下载任务
//发送下载完成事件
DownloadData downloadData = new DownloadData();
downloadData.setUrl(downloadTask.getFileBean().getUrl());
downloadData.setLength(downloadTask.getFileBean().getLength());
downloadData.setMsg("网络断开暂停下载");
// EventMessage message = new EventMessage(EventMessage.TYPE_PAUSE, downloadData);
// EventBus.getDefault().post(message);
}
} else {
//网络连接已连接
for (DownloadTask downloadTask : downloadTasks) {
downloadTask.startDownload();//继续所有下载任务
DownloadData downloadData = new DownloadData();
downloadData.setUrl(downloadTask.getFileBean().getUrl());
downloadData.setLength(downloadTask.getFileBean().getLength());
downloadData.setMsg("网络恢复继续下载");
// EventMessage message = new EventMessage(EventMessage.TYPE_START, downloadData);
// EventBus.getDefault().post(message);
}
}
}
}
}

View File

@@ -0,0 +1,149 @@
package com.mogo.eagle.core.utilcode.breakpoint.thread;
import static com.mogo.eagle.core.utilcode.breakpoint.Config.DOWN_LOAD_TAG;
import android.content.Context;
import android.util.Log;
import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean;
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean;
import com.mogo.eagle.core.utilcode.breakpoint.callback.DownloadCallBack;
import com.mogo.eagle.core.utilcode.breakpoint.db.dao.ThreadDao;
import com.mogo.eagle.core.utilcode.breakpoint.db.impl.ThreadDaoImpl;
import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData;
import com.mogo.eagle.core.utilcode.breakpoint.services.DownloadService;
import java.util.ArrayList;
import java.util.List;
/**
* 下载任务
*/
public class DownloadTask implements DownloadCallBack {
private FileBean fileBean;
private int downloadThreadCount;
private ThreadDao dao;
/**
* 总下载完成进度
*/
private int finishedProgress = 0;
/**
* 下载线程信息集合
*/
private List<ThreadBean> threads;
/**
* 下载线程集合
*/
private final List<DownloadThread> downloadThreads = new ArrayList<>();
public DownloadTask(Context context, FileBean fileBean, int downloadThreadCount) {
this.fileBean = fileBean;
this.downloadThreadCount = downloadThreadCount;
dao = new ThreadDaoImpl(context);
//初始化下载线程
initDownThreads();
}
private void initDownThreads() {
//查询数据库中的下载线程信息
threads = dao.getThreads(fileBean.getUrl());
if(threads.size()==0){//如果列表没有数据 则为第一次下载
Log.w(DOWN_LOAD_TAG,"第一次下载");
//根据下载的线程总数平分各自下载的文件长度
int length = fileBean.getLength()/downloadThreadCount;
for(int i = 0; i<downloadThreadCount; i++){
ThreadBean thread = new ThreadBean(i,fileBean.getUrl(),i * length,
(i + 1) * length -1,0);
if(i == downloadThreadCount-1){
thread.setEnd(fileBean.getLength());
}
//将下载线程保存到数据库
dao.insertThread(thread);
threads.add(thread);
}
}
//创建下载线程开始下载
for(ThreadBean thread : threads){
finishedProgress+= thread.getFinished();
DownloadThread downloadThread = new DownloadThread(fileBean, thread, this);
DownloadService.executorService.execute(downloadThread);
downloadThreads.add(downloadThread);
}
Log.w(DOWN_LOAD_TAG," 开始下载:"+finishedProgress);
}
/**
* 开始下载
*/
public void startDownload() {
finishedProgress = 0;
threads.clear();
downloadThreads.clear();
initDownThreads();
}
/**
* 暂停下载
*/
public void pauseDownload(){
for(DownloadThread downloadThread : downloadThreads){
if (downloadThread!=null) {
downloadThread.setPause(true);
}
}
}
@Override
public void pauseCallBack(ThreadBean threadBean) {
//保存下载进度到数据库
Log.w(DOWN_LOAD_TAG,"保存数据:"+threadBean.toString());
dao.updateThread(threadBean.getUrl(),threadBean.getId(),threadBean.getFinished());
}
private long curTime = 0;
@Override
public void progressCallBack(int length) {
finishedProgress += length;
//每500毫秒发送刷新进度事件
if(System.currentTimeMillis() - curTime >500 || finishedProgress==fileBean.getLength()){
fileBean.setFinished(finishedProgress);
DownloadData downloadData = new DownloadData();
downloadData.setUrl(fileBean.getUrl());
downloadData.setProgress((int) (finishedProgress*1.0/fileBean.getLength()*100));
downloadData.setLength(fileBean.getLength());
downloadData.setMsg("下载进度回调");
// EventMessage message = new EventMessage(EventMessage.TYPE_PROGRESS,downloadData);
// EventBus.getDefault().post(message);
curTime = System.currentTimeMillis();
}
}
@Override
public synchronized void threadDownLoadFinished(ThreadBean threadBean) {
for(ThreadBean bean:threads){
if(bean.getId() == threadBean.getId()){
//从列表中将已下载完成的线程信息移除
threads.remove(bean);
break;
}
}
if(threads.size()==0){//如果列表size为0 则所有线程已下载完成
//删除数据库中的信息
dao.deleteThread(fileBean.getUrl());
//发送下载完成事件
DownloadData downloadData = new DownloadData();
downloadData.setUrl(fileBean.getUrl());
downloadData.setMsg("下载完成");
downloadData.setFilePath(fileBean.getSavePath()+fileBean.getFileName());
// EventMessage message = new EventMessage(EventMessage.TYPE_FINISHED,downloadData);
// EventBus.getDefault().post(message);
}
}
public FileBean getFileBean() {
return fileBean;
}
}

View File

@@ -0,0 +1,96 @@
package com.mogo.eagle.core.utilcode.breakpoint.thread;
import com.mogo.eagle.core.utilcode.breakpoint.Config;
import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean;
import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean;
import com.mogo.eagle.core.utilcode.breakpoint.callback.DownloadCallBack;
import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData;
import java.io.File;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* 下载线程
*/
public class DownloadThread extends Thread {
private FileBean fileBean;
private ThreadBean threadBean;
private DownloadCallBack callback;
private Boolean isPause = false;
public DownloadThread(FileBean fileBean, ThreadBean threadBean, DownloadCallBack callback) {
this.fileBean = fileBean;
this.threadBean = threadBean;
this.callback = callback;
}
public void setPause(Boolean pause) {
isPause = pause;
}
@Override
public void run() {
HttpURLConnection connection = null;
RandomAccessFile raf = null;
InputStream inputStream = null;
try {
URL url = new URL(threadBean.getUrl());
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(10000);
connection.setRequestMethod("GET");
//设置下载起始位置
int start = threadBean.getStart() + threadBean.getFinished();
connection.setRequestProperty("Range","bytes="+start+"-"+threadBean.getEnd());
//设置写入位置
File file = new File(Config.downLoadPath,fileBean.getFileName());
raf = new RandomAccessFile(file,"rwd");
raf.seek(start);
//开始下载
if(connection.getResponseCode() == HttpURLConnection.HTTP_PARTIAL){
inputStream = connection.getInputStream();
byte[] bytes = new byte[1024];
int len = -1;
while ((len = inputStream.read(bytes))!=-1){
raf.write(bytes,0,len);
//将加载的进度回调出去
callback.progressCallBack(len);
//保存进度
threadBean.setFinished(threadBean.getFinished()+len);
//在下载暂停的时候将下载进度保存到数据库
if(isPause){
callback.pauseCallBack(threadBean);
return;
}
}
//下载完成
callback.threadDownLoadFinished(threadBean);
}
} catch (Exception e) {
e.printStackTrace();
DownloadData downloadData = new DownloadData();
downloadData.setUrl(fileBean.getUrl());
downloadData.setMsg(e.getMessage());
// EventMessage eventMessage = new EventMessage(EventMessage.TYPE_ERROR,downloadData);
// EventBus.getDefault().post(eventMessage);
} finally {
try {
inputStream.close();
raf.close();
connection.disconnect();
}catch (Exception e){
e.printStackTrace();
DownloadData downloadData = new DownloadData();
downloadData.setUrl(fileBean.getUrl());
downloadData.setMsg(e.getMessage());
// EventMessage eventMessage = new EventMessage(EventMessage.TYPE_ERROR,downloadData);
// EventBus.getDefault().post(eventMessage);
}
}
}
}

View File

@@ -0,0 +1,66 @@
package com.mogo.eagle.core.utilcode.breakpoint.thread;
import static com.mogo.eagle.core.utilcode.breakpoint.Config.DOWN_LOAD_TAG;
import android.util.Log;
import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean;
import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData;
import java.io.File;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* 初始化线程
*/
public class InitThread extends Thread{
private final FileBean fileBean;
private InitCallBack initCallBack;
public InitThread(FileBean fileBean,InitCallBack initCallBack) {
this.fileBean = fileBean;
this.initCallBack = initCallBack;
}
public interface InitCallBack{
void initSuccess(FileBean fileBean);
void initFailed(DownloadData downloadData);
}
@Override
public void run() {
HttpURLConnection connection ;
RandomAccessFile randomAccessFile ;
try {
URL url = new URL(fileBean.getUrl());
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(10000);
connection.setRequestMethod("GET");
int fileLength = -1;
if(connection.getResponseCode() == HttpURLConnection.HTTP_OK){
fileLength = connection.getContentLength();
}
if(fileLength<=0) return;
File dir = new File(fileBean.getSavePath());
if(!dir.exists()){
dir.mkdir();
}
File file = new File(dir,fileBean.getFileName());
randomAccessFile = new RandomAccessFile(file,"rwd");
randomAccessFile.setLength(fileLength);
fileBean.setLength(fileLength);
this.initCallBack.initSuccess(fileBean);
}catch (Exception e){
DownloadData downloadData = new DownloadData();
downloadData.setUrl(fileBean.getUrl());
downloadData.setMsg(e.getMessage());
this.initCallBack.initFailed(downloadData);
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,28 @@
package com.mogo.eagle.core.utilcode.breakpoint.utils;
import android.content.Context;
import android.content.Intent;
import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean;
import com.mogo.eagle.core.utilcode.breakpoint.services.DownloadService;
public class DownloadUtils {
public static void downLoad(Context context,String url,String savePath,String fileName,int downloadThreadCount){
FileBean fileBean = new FileBean(0,savePath,fileName,url,0);
fileBean.setThreadCount(downloadThreadCount);
Intent startIntent = new Intent(context, DownloadService.class);
startIntent.setAction(DownloadService.ACTION_START);
startIntent.putExtra("FileBean", fileBean);
context.startService(startIntent);
}
public static void pauseDownLoad(Context context,String url){
FileBean fileBean = new FileBean(0,null,null,url,0);
Intent pauseIntent = new Intent(context, DownloadService.class);
pauseIntent.setAction(DownloadService.ACTION_PAUSE);
pauseIntent.putExtra("FileBean", fileBean);
context.startService(pauseIntent);
}
}

View File

@@ -82,7 +82,7 @@ MOGO_LOCATION_VERSION=1.3.32
MOGO_TELEMATIC_VERSION=1.3.32
######## MogoAiCloudSDK Version ########
# 自研地图
MAP_SDK_VERSION=2.0.9.1
MAP_SDK_VERSION=2.0.9.2
MAP_SDK_OPERATION_VERSION=1.0.12
# websocket
WEBSOCKET_VERSION=1.1.7

View File

@@ -0,0 +1,18 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.mogo.map.impl.custom;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String LIBRARY_PACKAGE_NAME = "com.mogo.map.impl.custom";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "com.mogo.map.impl.custom";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "2.1.16.10";
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.mogo.map.impl.custom.CustomMapApiBuilder;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Group$$mogomap implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/mogomap/api", RouteMeta.build(RouteType.PROVIDER, CustomMapApiBuilder.class, "/mogomap/api", "mogomap", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IProviderGroup;
import com.mogo.map.impl.custom.CustomMapApiBuilder;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Providers$$mapcustom implements IProviderGroup {
@Override
public void loadInto(Map<String, RouteMeta> providers) {
providers.put("com.mogo.map.IMogoMapApiBuilder", RouteMeta.build(RouteType.PROVIDER, CustomMapApiBuilder.class, "/mogomap/api", "mogomap", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,17 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.alibaba.android.arouter.facade.template.IRouteRoot;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Root$$mapcustom implements IRouteRoot {
@Override
public void loadInto(Map<String, Class<? extends IRouteGroup>> routes) {
routes.put("mogomap", ARouter$$Group$$mogomap.class);
}
}

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.map.impl.custom"
android:versionCode="1"
android:versionName="2.1.16.10" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<application>
</application>
</manifest>

View File

@@ -0,0 +1 @@
[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"2.1.16.10","enabled":true,"outputFile":"map-custom-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"com.mogo.map.impl.custom","split":""}}]

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-data/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-data/src/debug/jniLibs"/></dataSet></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-function-api/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-function-api/src/debug/shaders"/></dataSet></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-data/src/main/assets"/><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-data/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-data/src/debug/assets"/></dataSet></merger>

View File

@@ -0,0 +1,230 @@
#Thu Mar 17 17:43:16 CST 2022
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_26.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_26.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_7.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_7.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_54.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_54.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir10.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir10.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_17.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_17.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/live_exit.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/live_exit.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_15.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_15.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/not_join_checkbox_bg.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/not_join_checkbox_bg.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_68.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_68.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_6.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_6.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_endpoint.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_endpoint.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_66.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_66.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_34.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_34.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir4.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir4.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_55.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_55.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_85.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_85.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_23.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_23.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_21.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_21.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/ic_snapshot_ph.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/ic_snapshot_ph.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_35.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_35.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_12.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_12.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/main_solid_left_page_up_press.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/main_solid_left_page_up_press.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_10.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_10.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_28.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_28.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_61.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_61.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/map_location_press.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/map_location_press.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_24.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_24.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_22.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_22.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_0_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_0_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_3.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_3.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_17.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_17.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_50.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_50.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_68.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_68.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_13.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_13.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_11.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_11.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_2.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_2.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_41.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_41.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_62.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_62.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_57.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_57.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir13.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir13.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/public_arrow_back_iv.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/public_arrow_back_iv.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_18.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_18.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_30.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_30.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_9.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_9.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_51.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_51.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_69.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_69.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_42.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_42.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/main_solid_right_page_up_normal.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/main_solid_right_page_up_normal.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_37.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_37.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_58.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_58.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir7.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir7.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_1_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_1_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_31.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_31.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_26.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_26.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_24.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_24.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_20.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_20.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_38.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_38.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_15.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_15.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_13.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_13.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_64.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_64.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_27.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_27.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_25.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_25.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_6.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_6.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_53.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_53.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_16.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_16.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_14.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_14.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_2_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_2_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_5.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_5.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/search_information_press.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/search_information_press.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_44.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_44.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_65.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_65.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_start.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_start.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_3_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_3_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir16.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir16.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_33.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_33.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_54.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_54.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir3.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir3.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_84.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_84.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_22.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_22.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_20.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_20.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_34.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_34.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_11.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_11.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_27.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_27.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_85.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_85.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/ic_refresh.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/ic_refresh.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/blue.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/blue.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_60.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_60.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_23.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_23.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_4_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_4_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_21.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_21.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_2.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_2.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_16.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_16.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_67.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_67.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_12.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_12.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_10.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_10.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_28.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_28.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_1.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_1.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_9.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_9.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_40.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_40.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_61.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_61.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_56.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_56.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir12.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir12.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_bus.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_bus.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_17.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_17.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_8.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_8.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_50.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_50.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_68.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_68.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/app_icon.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/app_icon.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_41.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_41.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_36.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_36.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_57.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_57.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir6.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir6.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_man.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_man.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_5_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_5_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/marker_blue.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/marker_blue.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_30.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_30.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_25.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_25.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_23.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_23.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/location_city_image.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/location_city_image.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_37.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_37.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_14.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_14.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_12.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_12.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir_start.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir_start.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_63.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_63.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_through.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_through.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_26.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_26.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_24.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_24.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir_station.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir_station.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_5.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_5.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_19.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_19.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/red.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/red.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_52.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_52.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_car.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_car.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_15.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_15.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_13.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_13.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_6_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_6_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_4.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_4.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_43.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_43.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_64.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_64.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_59.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_59.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir15.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir15.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_32.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_32.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_53.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_53.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir2.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir2.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/main_solid_right_page_up_press.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/main_solid_right_page_up_press.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_44.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_44.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_21.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_21.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_39.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_39.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir9.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir9.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/map_api_ic_current_location2.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/video_loading_img.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/video_loading_img.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_33.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_33.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_10.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_10.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_28.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_28.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_26.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_26.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_84.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_84.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_7_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_7_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_22.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_22.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_20.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_20.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_17.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_17.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_1.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_1.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/main_solid_left_page_up_normal.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/main_solid_left_page_up_normal.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_15.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_15.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_68.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_68.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_66.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_66.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_11.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_11.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_27.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_27.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_8.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_8.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_60.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_60.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_55.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_55.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-mdpi/map_api_ic_current_location2.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-mdpi-v4/map_api_ic_current_location2.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir11.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir11.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_16.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_16.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir_end.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir_end.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_7.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_7.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_67.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_67.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_40.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_40.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_35.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_35.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir5.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir5.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_8_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_8_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_56.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_56.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_endpoint.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_endpoint.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_route_color_texture_9_arrow.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_route_color_texture_9_arrow.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_24.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_24.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_22.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_22.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_36.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_36.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_13.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_13.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_11.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_11.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_end.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_end.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_62.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_62.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_25.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_25.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_23.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_23.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_4.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_4.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_18.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_18.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_51.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_51.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_69.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_69.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/mainpage_location_img.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/mainpage_location_img.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_14.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_14.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_12.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_12.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_42.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_42.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_63.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_63.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/join_checkbox_bg.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/join_checkbox_bg.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_58.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_58.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir14.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir14.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/amap_ride.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/amap_ride.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_19.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_19.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_31.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_31.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_52.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_52.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir1.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir1.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/map_location_normal.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/map_location_normal.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_43.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_43.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_20.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_20.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_38.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_38.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/ic_59.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/ic_59.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/dir8.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/dir8.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/map_custom_ic_current_location2.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/map_custom_ic_current_location2.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/map_api_ic_current_location2.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/map_api_ic_current_location2.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_32.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_32.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/default_image.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/default_image.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_27.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_27.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_25.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_25.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable/search_information_normal.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable/search_information_normal.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_21.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_21.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_39.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_39.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/tc_16.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/tc_16.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_14.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_14.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-xhdpi/ic_65.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/ic_65.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_10.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_10.png
/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/src/main/res/drawable-ldpi/tc_28.png=/Users/admin/Android/ADAS/MoGoEagleEye/libraries/map-custom/build/intermediates/packaged_res/debug/drawable-ldpi-v4/tc_28.png

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="path_width">40px</dimen>
</resources>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_map_amap_my_location_bg_size">360px</dimen>
<dimen name="module_map_amap_my_location_icon_height">96px</dimen>
<dimen name="module_map_amap_my_location_icon_width">63px</dimen>
</resources>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_map_amap_my_location_bg_size">194px</dimen>
<dimen name="module_map_amap_my_location_icon_height">53px</dimen>
<dimen name="module_map_amap_my_location_icon_width">36px</dimen>
<dimen name="path_width">60px</dimen>
<string name="app_name">map-amap</string>
</resources>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.map.impl.custom"
android:versionCode="1"
android:versionName="2.1.16.10" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<application>
</application>
</manifest>

View File

@@ -0,0 +1,151 @@
R_DEF: Internal format may change without notice
local
dimen module_map_amap_my_location_bg_size
dimen module_map_amap_my_location_icon_height
dimen module_map_amap_my_location_icon_width
dimen path_width
drawable amap_bus
drawable amap_car
drawable amap_end
drawable amap_man
drawable amap_ride
drawable amap_route_color_texture_0_arrow
drawable amap_route_color_texture_1_arrow
drawable amap_route_color_texture_2_arrow
drawable amap_route_color_texture_3_arrow
drawable amap_route_color_texture_4_arrow
drawable amap_route_color_texture_5_arrow
drawable amap_route_color_texture_6_arrow
drawable amap_route_color_texture_7_arrow
drawable amap_route_color_texture_8_arrow
drawable amap_route_color_texture_9_arrow
drawable amap_start
drawable amap_through
drawable app_icon
drawable blue
drawable default_image
drawable dir1
drawable dir10
drawable dir11
drawable dir12
drawable dir13
drawable dir14
drawable dir15
drawable dir16
drawable dir2
drawable dir3
drawable dir4
drawable dir5
drawable dir6
drawable dir7
drawable dir8
drawable dir9
drawable dir_end
drawable dir_start
drawable dir_station
drawable ic_1
drawable ic_10
drawable ic_11
drawable ic_12
drawable ic_13
drawable ic_14
drawable ic_15
drawable ic_16
drawable ic_17
drawable ic_18
drawable ic_19
drawable ic_2
drawable ic_20
drawable ic_21
drawable ic_22
drawable ic_23
drawable ic_24
drawable ic_25
drawable ic_26
drawable ic_27
drawable ic_28
drawable ic_3
drawable ic_4
drawable ic_5
drawable ic_50
drawable ic_51
drawable ic_52
drawable ic_53
drawable ic_54
drawable ic_55
drawable ic_56
drawable ic_57
drawable ic_58
drawable ic_59
drawable ic_6
drawable ic_60
drawable ic_61
drawable ic_62
drawable ic_63
drawable ic_64
drawable ic_65
drawable ic_66
drawable ic_67
drawable ic_68
drawable ic_69
drawable ic_7
drawable ic_8
drawable ic_9
drawable ic_endpoint
drawable ic_refresh
drawable ic_snapshot_ph
drawable join_checkbox_bg
drawable live_exit
drawable location_city_image
drawable main_solid_left_page_up_normal
drawable main_solid_left_page_up_press
drawable main_solid_right_page_up_normal
drawable main_solid_right_page_up_press
drawable mainpage_location_img
drawable map_api_ic_current_location2
drawable map_custom_ic_current_location2
drawable map_location_normal
drawable map_location_press
drawable marker_blue
drawable not_join_checkbox_bg
drawable public_arrow_back_iv
drawable red
drawable search_information_normal
drawable search_information_press
drawable tc_10
drawable tc_11
drawable tc_12
drawable tc_13
drawable tc_14
drawable tc_15
drawable tc_16
drawable tc_17
drawable tc_20
drawable tc_21
drawable tc_22
drawable tc_23
drawable tc_24
drawable tc_25
drawable tc_26
drawable tc_27
drawable tc_28
drawable tc_30
drawable tc_31
drawable tc_32
drawable tc_33
drawable tc_34
drawable tc_35
drawable tc_36
drawable tc_37
drawable tc_38
drawable tc_39
drawable tc_40
drawable tc_41
drawable tc_42
drawable tc_43
drawable tc_44
drawable tc_68
drawable tc_84
drawable tc_85
drawable video_loading_img
string app_name

Some files were not shown because too many files have changed in this diff Show More