diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index d74fa5a33a..a87ce7183e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -85,8 +85,8 @@ class DevaToolsProvider : IDevaToolsProvider { upgradeManager.getPackageUrls(versionName) } - override fun downLoadPackage(downLoadKey: String) { -// upgradeManager.downLoadPackage(mContext!!, downLoadKey) + override fun downLoadPackage(downloadKey: String,downloadUrl: String) { + upgradeManager.downLoadPackage(mContext!!, downloadKey,downloadUrl) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt index 83c51e470d..d1a5c94bfb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt @@ -36,14 +36,14 @@ class UpgradeManager : IDownload { }) } - fun downLoadPackage(context: Context, downLoadKey: String) { + fun downLoadPackage(context: Context, downloadKey: String,downloadUrl: 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", + downloadUrl, Config.downLoadPath, - downLoadKey, + downloadKey, 5, this ) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 94aa099d14..e9b4fc115e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -11,6 +11,7 @@ import android.view.View import androidx.annotation.RequiresApi import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.commons.AbsMogoApplication import com.mogo.commons.debug.DebugConfig @@ -23,6 +24,7 @@ import com.mogo.eagle.core.data.deva.scene.SceneModule import com.mogo.eagle.core.data.enums.TrafficTypeEnum import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.data.obu.ObuStatusInfo +import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity import com.mogo.eagle.core.function.api.autopilot.* import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener @@ -43,6 +45,7 @@ import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog import com.mogo.eagle.core.function.hmi.ui.tools.DockerRebootDialog +import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel @@ -58,6 +61,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.* import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import java.util.* +import kotlin.collections.ArrayList /** * @author xiaoyuzhou @@ -116,6 +120,16 @@ class DebugSettingView @JvmOverloads constructor( //OBU连接状态 private var obuConnectStatus: Boolean = false + //渠道包标签 + private var onlineSelected: Boolean = true + private var qaSelected: Boolean = true + + private var upgradeListAdapter: UpgradeListAdapter?=null + + private val upgradeVersionList by lazy{ + ArrayList() + } + private val mapUiController by lazy { CallerMapUIServiceManager.getMapUIController() } @@ -257,6 +271,9 @@ class DebugSettingView @JvmOverloads constructor( } } + /** + * 鹰眼参数配置 + */ tbEagleEyeController.setOnCheckedChangeListener { buttonView, isChecked -> if(isChecked){ buttonView.setCompoundDrawables(null, null, iconDown, null) @@ -345,7 +362,20 @@ class DebugSettingView @JvmOverloads constructor( } } - + /** + * 应用包管理中心 + */ + btnApkCenter.setOnCheckedChangeListener { buttonView, isChecked -> + if(isChecked){ + buttonView.setCompoundDrawables(null, null, iconDown, null) + //展示应用包管理中心 + apkCenterLayout.visibility = View.VISIBLE + } else { + buttonView.setCompoundDrawables(null, null, iconRight, null) + //隐藏应用包管理中心 + apkCenterLayout.visibility = View.GONE + } + } lastVisualAngleMode = mapUiController?.currentMapVisualAngle @@ -408,6 +438,8 @@ class DebugSettingView @JvmOverloads constructor( setHmiCheckedChangeListener() //日志中心事件点击监听 setLogCheckedChangeListener() + //APK包管理中心配置 + setApkCenterListener() //OBU配置信息 tvObuInfo.text = CallerObuListenerManager.getObuStatusInfoJsonString() @@ -1043,7 +1075,17 @@ class DebugSettingView @JvmOverloads constructor( } override fun upgradeVersionUrls(urls: Map?) { - + //版本信息更新 + urls?.let { + upgradeVersionList.clear() + it.iterator().forEach {map -> + val name = if(map.key.contains("{")) map.key.replace("{","") else map.key + val url = if(map.value.contains("}")) map.value.replace("}","") else map.value + upgradeVersionList.add(UpgradeVersionEntity(name,url)) + } + upgradeListAdapter?.setDada(dataFilter(upgradeVersionList)) + upgradeListAdapter?.notifyDataSetChanged() + } } }) @@ -1141,6 +1183,75 @@ class DebugSettingView @JvmOverloads constructor( } } + /** + * APK包管理 + */ + private fun setApkCenterListener(){ + val layoutManager: LinearLayoutManager = object : LinearLayoutManager(context, + VERTICAL, false) { + override fun canScrollVertically(): Boolean { + // 直接禁止垂直滑动 + return false + } + } + rvUpgradeVersionList.layoutManager =layoutManager + + upgradeListAdapter = UpgradeListAdapter(context,upgradeVersionList, + object:UpgradeListAdapter.ClickListener{ + override fun downloadApk(name: String,url: String) { + //下载包 + CallerDevaToolsManager.downLoadPackage(name,url) + ToastUtils.showLong("开始下载APK,稍后可前往downloads文件夹查看") + } + + }) + + rvUpgradeVersionList.adapter = upgradeListAdapter + + ivApkSearch.setOnClickListener { + val searchStr = etApkSearch.text.toString() + if(searchStr.isEmpty()){ + ToastUtils.showShort("请输入正确的搜索关键字") + }else{ + CallerDevaToolsManager.getUpgradeVersionUrls(searchStr) + } + + } + + //Online + cbApkOnline.setOnCheckedChangeListener { _, isChecked -> + onlineSelected = isChecked + upgradeListAdapter?.setDada(dataFilter(upgradeVersionList)) + upgradeListAdapter?.notifyDataSetChanged() + } + //QA + cbApkQa.setOnCheckedChangeListener { _, isChecked -> + qaSelected = isChecked + upgradeListAdapter?.setDada(dataFilter(upgradeVersionList)) + upgradeListAdapter?.notifyDataSetChanged() + } + + + } + + /** + * 数据包数据过滤器 + */ + private fun dataFilter(list: ArrayList): ArrayList { + val tempList = ArrayList() + list?.let { + it.iterator().forEach { entity-> + if(onlineSelected && entity.name.contains("online")){ + tempList.add(entity) + } + if(qaSelected && entity.name.contains("qa")){ + tempList.add(entity) + } + } + } + return tempList + } + private fun logViewDestroy() { logInfoView?.let { it.dismiss() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/upgrade/UpgradeListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/upgrade/UpgradeListAdapter.kt new file mode 100644 index 0000000000..cc6979fc34 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/upgrade/UpgradeListAdapter.kt @@ -0,0 +1,66 @@ +package com.mogo.eagle.core.function.hmi.ui.upgrade + + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView.Adapter +import androidx.recyclerview.widget.RecyclerView.ViewHolder +import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.ui.upgrade.UpgradeListAdapter.UpgradeListHolder + +/** + * @author XuXinChao + * @description APK升级包列表适配器 + * @since: 2022/3/25 + */ +class UpgradeListAdapter: Adapter { + + private var context: Context? = null + private var data:List? = null + private var clickListener: ClickListener? = null + + constructor( + context: Context, + data: List?, + clickListener: ClickListener? = null + ) { + this.context = context + this.data = data + this.clickListener = clickListener + } + + public fun setDada( data: List?){ + this.data = data + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UpgradeListHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_upgrade_version, parent, false) + return UpgradeListHolder(view) + } + + override fun onBindViewHolder(holder: UpgradeListHolder, position: Int) { + data?.let { + val upgradeVersionEntity = it[position] + holder.tvUpgradeApkName.text=upgradeVersionEntity.name + holder.tvUpgradeApkName.setOnClickListener { + clickListener?.downloadApk(upgradeVersionEntity.name,upgradeVersionEntity.url) + } + } + } + + override fun getItemCount() = data?.size ?: 0 + + class UpgradeListHolder(itemView: View) : ViewHolder(itemView) { + var tvUpgradeApkName: TextView = itemView.findViewById(R.id.tvUpgradeApkName) + } + + interface ClickListener{ + fun downloadApk(name:String,url:String) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_search.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_search.png new file mode 100644 index 0000000000..4f0b7e62c7 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_search.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_upgrade_version.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_upgrade_version.xml new file mode 100644 index 0000000000..cc593900b7 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_upgrade_version.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 4b615fc22f..9b16d22f5f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -118,7 +118,7 @@ - + + + + + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/upgrade/UpgradeVersionEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/upgrade/UpgradeVersionEntity.kt new file mode 100644 index 0000000000..4c96c19342 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/upgrade/UpgradeVersionEntity.kt @@ -0,0 +1,13 @@ +package com.mogo.eagle.core.data.upgrade + +/** + * @author XuXinChao + * @description 版本包下载实体类 + * @since: 2022/3/25 + */ +data class UpgradeVersionEntity( + var name: String, + var url: String +) { + +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index 1c49d1b112..4fbd4ab83d 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -88,5 +88,5 @@ interface IDevaToolsProvider : IProvider { /** * 下载指定包 */ - fun downLoadPackage(downLoadKey:String) + fun downLoadPackage(downloadKey:String,downloadUrl:String) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt index a5546484a0..785fdb9c1a 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt @@ -118,7 +118,7 @@ object CallerDevaToolsManager { /** * 下载指定包 */ - fun downLoadPackage(downLoadKey: String) { - devaToolsProviderApi?.downLoadPackage(downLoadKey) + fun downLoadPackage(downloadKey: String,downloadUrl: String) { + devaToolsProviderApi?.downLoadPackage(downloadKey,downloadUrl) } } \ No newline at end of file