From e58ae85710458f5862949d16b8f14b87835ba5a6 Mon Sep 17 00:00:00 2001 From: xuxinchao <13522809046@163.com> Date: Thu, 31 Mar 2022 17:27:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E8=AF=95=E7=AA=97=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加应用包管理中心 --- .../DevaToolsProvider.kt | 4 +- .../upgrade/UpgradeManager.kt | 6 +- .../hmi/ui/setting/DebugSettingView.kt | 115 +++++++++++++++++- .../hmi/ui/upgrade/UpgradeListAdapter.kt | 66 ++++++++++ .../main/res/drawable-xxhdpi/icon_search.png | Bin 0 -> 2193 bytes .../main/res/layout/item_upgrade_version.xml | 26 ++++ .../main/res/layout/view_debug_setting.xml | 100 ++++++++++++++- .../core/data/upgrade/UpgradeVersionEntity.kt | 13 ++ .../api/devatools/IDevaToolsProvider.kt | 2 +- .../call/devatools/CallerDevaToolsManager.kt | 4 +- 10 files changed, 324 insertions(+), 12 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/upgrade/UpgradeListAdapter.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xxhdpi/icon_search.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_upgrade_version.xml create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/upgrade/UpgradeVersionEntity.kt 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 0000000000000000000000000000000000000000..4f0b7e62c7a6a2a03bb6b9316244067d227714eb GIT binary patch literal 2193 zcmV;C2yXX@P)*%U&YSXQ2S6C@ynly&GYOtZIS~ZlWfzo#TD8C##{`JoE%(G_)Vmp~D zasPbx-0ytv-0z-y?jgo7{C>YWckbLow^CEZ;aCWA0l=F8Ob0MYL{bD!Lh-1WI4qP` z5{blHb{+<5l7+e)KWjR0=*`cAKo1IY0gj@v3tpFyJvlhe&F>w$IFQ-zeJzZU0 zr^{Mb#Hb|c)vH%e_;`K&W<|$xfqV*pbF5B9LJieN6u>H>m-Kc^)9qt4FG*Q{S13;D}PH#Idm8XFoPAh8}mZ64S#1wS_xwnd}S z<2^k+7fLy@em)wFPE{g{glY?c8F_0=0Bt1~! zmHZ+r2@y#Hd>IOxg2CXM<${i8w{G3KYLCaWnt}%b)MxDk*c(s8@7}s~>-**S$dT4{ zeG*N)2I7WH1VjYntI1UI-tO-1lIQpxCFZh+L!p0`LuRZtK26gBJ^*AgjTNN+WIDC9ySw|}rLZ!jH*VZ` zOO@005`a(J05Ks}7=~ee`$&eB|EErw(hKn0c3Kn>vnv=1wUu&6J6m{3Y{_06B4)4q znrnVI-a}W)X?DJ?t!YUYf_qX4Ga_NSou zl|Ufyk5Nhcbp06!?y?Qenvms&VeBi%VWn(zO@ETW_p`c&nD+)kp=U=Yt!YO9-fSDZ zk0cia!hyFdMW`H{_Ezm~QGCj_O#revU>KwBHg!!qOR&yfaO^_l;+*ZTCel{<04aLO(5LBEU6Hv7Avlqe^sSwp zohQq2Rw)}z)4r*|-`IF5K(+)7!(S|W?1x}+F5RTLB+wN&R4GE`;Aon5zXCHP1&Bf5 z4Tgff#j-~Lpl%xs5prLLVLV-qvr5_cH2p6C7T9=aA?AueDD>*6q%}?Zf&%|&8<-?| ztKIHqzu%v#6scl3o4nrXX@}FQ?6TF~dqT`J4CB2~NjEn)Ut3dEZN1a7H`1YaGVzU4 zMN6fANN>}BLgJ@6JdsxdAtP6dT*(hxT3XyyF4rRv++#n15@uS~7+oK|M7&<_bf?4l z2LiKga@O1K>%m}fcd?*k>S?`I{}vUV%r#&{2H{Y*1OnrG;+L}vR!KZ-`iym=7|cln z^7`8Y1E1^b>r0d*-O|$Xu_{;9J_1(f$R7Ol2PZ#Ry=&L5;c`ff)yC`f-sp0;_5hM; zQHV&=et7)06xRRVh^_k9sPH_18XF`=;=!R^ejizbWE8#OB=Gnfi=Fc7|ey5z> z&5^cWFn$u7^MKB!#neKfkR_dpjJCG6>l}1E4aj^T)047t^M^Fk%LARA*(_GnS3wKm z(krIwmmt5I*UqxuZhk2BNH7>YKVIgUpfon#0Fj*p?OwMshJ6@i8*4(@sw$97#tjYsq7ZQ z6`agc;IBx|&Cc0P$I}oTF)6*VSZsGGt^0hwSuo925H^8m%w~zpC|_!54hpd{7z`dP zwVR`MP22BluQxsB6C{=bC~O{DsN{ddOz#)r-w5_AnioXG1>q;?R5zJ|#RRMdq${6< z{SG|~!Ly_+6~VMzi%jISq_D&@$#b}vREqYeeLml0NvBs4ya(i*?7=A&i6ZlH0d|83 zyWQ@Ckw|2*L#Z7EtzF2DcVVX2_ZN{$$)>t>fEpSa8WgaSRLuY;kCn9D#5_pC7)~Y+ zgu~$vEsV_JoHp&VP>vT!PRV60;20q*J3^sMjXiRdB%QyYy}iBOOq$;%u>!<22;5c! zJtGT1k+k@wt%f_S<~c9~$YF}?ICK8|zMVUFTHh}lUaxnaOF8-kBcwts@pvwm%9u!J zy{%cZ##L8W*T^&*l|w#h3hPO+bZ?3<0>LRr>RmNF{I8B}+s>5Q8LO9QOXYEbGYh1m zxW2!?zaXoOi*zXx + + + + + + + + \ 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