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:
@@ -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未启动!")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
@@ -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("");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) }
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
)
|
||||
// }
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
}
|
||||
@@ -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 ?: "获取最新版本信息失败")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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
|
||||
* 道路事件触发后,切换到中景
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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)
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -79,4 +79,14 @@ interface IDevaToolsProvider : IMoGoFunctionServerProvider {
|
||||
* 展示反馈页面
|
||||
*/
|
||||
fun showFeedbackWindow(ctx: Context)
|
||||
|
||||
/**
|
||||
* 获取升级版本Urls
|
||||
*/
|
||||
fun getUpgradeVersionUrls(versionName: String)
|
||||
|
||||
/**
|
||||
* 下载指定包
|
||||
*/
|
||||
fun downLoadPackage(downLoadKey:String)
|
||||
}
|
||||
@@ -24,4 +24,9 @@ interface IMoGoDevaToolsListener {
|
||||
* 模块TAG更新回调
|
||||
*/
|
||||
fun moduleLogChanged(moduleTag: MutableMap<String, SceneModule>)
|
||||
|
||||
/**
|
||||
* 版本升级Urls
|
||||
*/
|
||||
fun upgradeVersionUrls(urls: Map<String, String>?)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
@@ -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";
|
||||
}
|
||||
@@ -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+
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -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 +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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":""}}]
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<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:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-data/src/debug/jniLibs"/></dataSet></merger>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<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:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-function-api/src/debug/shaders"/></dataSet></merger>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<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:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/admin/Android/ADAS/MoGoEagleEye/core/mogo-core-data/src/debug/assets"/></dataSet></merger>
|
||||
@@ -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
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<dimen name="path_width">40px</dimen>
|
||||
</resources>
|
||||
@@ -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>
|
||||
@@ -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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||
@@ -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
Reference in New Issue
Block a user