add app upgrade

This commit is contained in:
lixiaopeng
2022-06-21 18:37:11 +08:00
committed by liujing
parent 53d8abc954
commit c814c59ca5
16 changed files with 596 additions and 3 deletions

View File

@@ -102,7 +102,6 @@ public class MoGoHandAdasMsgManager implements
public void onAutopilotBrakeLightData(boolean brakeLight) {
}
@Override
public void onAutopilotCarConfig(@NotNull MessagePad.CarConfigResp carConfigResp) {
if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.getMacAddress())) {

View File

@@ -0,0 +1,29 @@
package com.mogo.eagle.core.function.appupgrade.network;
import com.mogo.eagle.core.data.bindingcar.BindingcarInfo;
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo;
import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
/**
* @author lixiaopeng
* @description 绑定车辆
* @since: 6/20/22
*/
public interface UpgradeApiService {
/**
* 获取升级信息
*
* @return {@link UpgradeAppInfo}
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("pad/selectPadByMac")
Observable<UpgradeAppInfo> getUpgradeInfo(@Body RequestBody requestBody);
}

View File

@@ -0,0 +1,104 @@
package com.mogo.eagle.core.function.appupgrade.network;
import android.content.Context;
import android.util.Log;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.constants.SharedPrefsConstants;
import com.mogo.eagle.core.data.bindingcar.BindingcarInfo;
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo;
import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.utils.GsonUtil;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
import com.mogo.eagle.core.utilcode.util.AppUtils;
import com.mogo.eagle.core.utilcode.util.GsonUtils;
import com.mogo.module.common.constants.HostConst;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
/**
* @author lixiaopeng
* @description 获取升级信息
* @since: 3/25/22
*/
public class UpgradeAppNetWorkManager {
private static volatile UpgradeAppNetWorkManager requestNoticeManager;
private final UpgradeApiService mUpgradeApiService;
private static final String TAG = "UpgradeAppNetWorkManager";
private UpgradeAppNetWorkManager() {
mUpgradeApiService = MoGoRetrofitFactory.getInstance(HostConst.UPGRADE_APP_HOST)
.create(UpgradeApiService.class);
}
public static UpgradeAppNetWorkManager getInstance() {
if (requestNoticeManager == null) {
synchronized (UpgradeAppNetWorkManager.class) {
if (requestNoticeManager == null) {
requestNoticeManager = new UpgradeAppNetWorkManager();
}
}
}
return requestNoticeManager;
}
/**
* 获取app升级信息
*/
public void getAppUpgradeInfo(Context context, int screenType) {
String sn = "X20202203105S688HZ";
String versionCode = "2070000";
String versionName = "2.7.0";
int screenType1 = 1;
// String sn = MoGoAiCloudClientConfig.getInstance().getSn();
// String versionCode = AppUtils.getAppVersionCode();
// String versionName = AppUtils.getAppVersionName();
UpgradeAppRequest request = new UpgradeAppRequest("apps_control", sn, versionCode, versionName, screenType1);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mUpgradeApiService.getUpgradeInfo(requestBody)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<UpgradeAppInfo>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.d("liyz", "UpgradeAppInfo ------> ");
}
@Override
public void onNext(@NonNull UpgradeAppInfo info) {
if (info != null && info.getData() != null) {
Log.d("liyz", "UpgradeAppInfo url = " + info.getData().getApp_url() + "----code = " + info.getData().getVersion_code());
//TODO 弹框
}
}
@Override
public void onError(@NonNull Throwable e) {
CallerLogger.INSTANCE.e(TAG, "getBindingcarInfo onError e = " + e.toString() + "---e.getMessage = " + e.getMessage());
Log.e("liyz", "UpgradeAppInfo onError e = " + e.toString() + "---e.getMessage = " + e.getMessage());
}
@Override
public void onComplete() {
}
});
}
}

View File

@@ -0,0 +1,72 @@
package com.mogo.eagle.core.function.appupgrade.network;
/**
* @author lixiaopeng
* @description 获取app升级信息
* @since: 11/15/21
*/
public class UpgradeAppRequest {
private String resources;
private String sn;
private String version_code;
private String version_name;
private int screen_type;
public UpgradeAppRequest(String resources, String sn, String versionCode, String versionName, int type) {
this.resources = resources;
this.sn = sn;
this.version_code = versionCode;
this.version_name = versionName;
this.screen_type = type;
}
public String getResources() {
return resources;
}
public void setResources(String resources) {
this.resources = resources;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public String getVersion_code() {
return version_code;
}
public void setVersion_code(String version_code) {
this.version_code = version_code;
}
public String getVersion_name() {
return version_name;
}
public void setVersion_name(String version_name) {
this.version_name = version_name;
}
public int getScreen_type() {
return screen_type;
}
public void setScreen_type(int screen_type) {
this.screen_type = screen_type;
}
@Override
public String toString() {
return "UpgradeAppRequest{" +
"sn='" + sn + '\'' +
", version_code='" + version_code + '\'' +
", version_name='" + version_name + '\'' +
", screen_type=" + screen_type +
'}';
}
}

View File

@@ -9,6 +9,7 @@ import com.mogo.eagle.core.data.config.HmiBuildConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack;
import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingcarProvider;
import com.mogo.eagle.core.function.appupgrade.network.UpgradeAppNetWorkManager;
import com.mogo.eagle.core.function.bindingcar.network.BindingcarNetWorkManager;
import com.mogo.eagle.core.function.ipcupgrade.IPCUpgradeManager;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
@@ -127,5 +128,12 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
return screenType;
}
/**
* 查询app是否需要升级
*/
@Override
public void queryAppUpgrade() {
UpgradeAppNetWorkManager.getInstance().getAppUpgradeInfo(mContext, getScreenType());
}
}

View File

@@ -46,6 +46,7 @@ import com.mogo.eagle.core.function.hmi.notification.WarningFloat
import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
import com.mogo.eagle.core.function.hmi.ui.bindingcar.ModifyBindingCarDialog
import com.mogo.eagle.core.function.hmi.ui.bindingcar.ToBindingCarDialog
import com.mogo.eagle.core.function.hmi.ui.bindingcar.UpgradeAppDialog
import com.mogo.eagle.core.function.hmi.ui.camera.CameraListView
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeBannerView
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeNormalBannerView
@@ -965,6 +966,7 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
private var modifyBindingCarDialog: ModifyBindingCarDialog? = null
private var toBindingCarDialog: ToBindingCarDialog? = null
private var upgradeAppDialog: UpgradeAppDialog? = null
override fun showToBindingcarDialog() {
if (toBindingCarDialog == null) {
@@ -978,7 +980,16 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
modifyBindingCarDialog = ModifyBindingCarDialog(requireContext())
}
modifyBindingCarDialog!!.showModifyBindingcarDialog()
}
/**
* 升级app弹框
*/
override fun showUpgradeDialog(name: String, url: String) {
if (upgradeAppDialog == null) {
upgradeAppDialog = UpgradeAppDialog(requireContext())
}
upgradeAppDialog!!.showUpgradeAppDialog(name, url)
}
/**

View File

@@ -0,0 +1,75 @@
package com.mogo.eagle.core.function.hmi.ui.bindingcar
import android.content.Context
import android.util.Log
import android.widget.TextView
import androidx.lifecycle.LifecycleObserver
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.module.common.dialog.BaseFloatDialog
import com.mogo.service.IMogoServiceApis
import com.mogo.service.statusmanager.IMogoStatusChangedListener
import com.mogo.service.statusmanager.StatusDescriptor
/**
* @brief APP升级提示弹框
* @author lixiaopeng
*/
class UpgradeAppDialog(context: Context) : BaseFloatDialog(context), LifecycleObserver{
private val TAG = "UpgradeAppDialog"
private var confirmTv: TextView? = null
private var cancleTv: TextView? = null
private var tag: String? = null
private var downloarUrl: String? = null
private var mServiceApis: IMogoServiceApis? = null
private val statusChangedListenerForCheckNotice = IMogoStatusChangedListener { descriptor, isTrue ->
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
dismiss()
}
}
init {
setContentView(R.layout.dialog_upgrade_app)
setCanceledOnTouchOutside(true)
confirmTv = findViewById(R.id.tv_upgrade_confirm)
cancleTv = findViewById(R.id.tv_upgrade_cancel)
confirmTv?.setOnClickListener {
downloadApp()
}
cancleTv?.setOnClickListener {
dismiss()
}
}
/**
* 去下载 TODO 成功或者失败
*/
fun downloadApp() {
tag?.let { downloarUrl?.let { it1 -> CallerDevaToolsManager.downLoadPackage(it, it1) } }
dismiss()
}
override fun dismiss() {
super.dismiss()
}
fun showUpgradeAppDialog(name: String, url: String) {
if (isShowing) {
return
}
tag = name
downloarUrl = url
Log.d("liyz", "tag = $tag ---- downloarUrl = $downloarUrl")
show()
}
}

View File

@@ -5,16 +5,19 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.bindingcar.AdUpgradeStateHelper
import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingCarListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingCarListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
@@ -58,7 +61,13 @@ class SystemVersionView @JvmOverloads constructor(
//鹰眼版本视图点击事件
ivPadVersion.setOnClickListener {
CallerLogger.i("$M_HMI$$TAG", "pad version view clicked")
// CallerBindingcarManager.getBindingcarProvider().queryAppUpgrade()
Logger.d("liyz", "ivPadVersion --click ")
}
//工控机版本视图点击事件
ivAdVersion.setOnClickListener {
CallerLogger.i("$M_HMI$$TAG", "ad version view clicked")

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="840px"
android:layout_height="470px"
android:background="@color/dialog_bg_color"
app:roundLayoutRadius="32px">
<TextView
android:id="@+id/tv_upgrade_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50px"
android:text="@string/application_upgrade"
android:textColor="#FFFFFFFF"
android:textSize="56px"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_upgrade_tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50px"
android:text="@string/application_upgrade_confirm"
android:textColor="#FFFFFFFF"
android:textSize="43px"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_bindingcar_title" />
<View
android:id="@+id/view_horizontal_line"
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_marginTop="80px"
android:background="#66B8BFE8"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_bindingcar_tips" />
<View
android:id="@+id/view_vertical_line"
android:layout_width="3px"
android:layout_height="0dp"
android:background="#66B8BFE8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/view_horizontal_line" />
<TextView
android:id="@+id/tv_upgrade_confirm"
android:layout_width="400px"
android:layout_height="100px"
android:gravity="center"
android:text="@string/confirm"
android:textColor="#FFFFFFFF"
android:textSize="46px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/view_vertical_line"
app:layout_constraintTop_toBottomOf="@id/view_horizontal_line" />
<TextView
android:id="@+id/tv_upgrade_cancel"
android:layout_width="400px"
android:layout_height="100px"
android:gravity="center"
android:text="@string/cancel"
android:textColor="#FFFFFFFF"
android:textSize="46px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/view_vertical_line"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/view_horizontal_line" />
</com.mogo.eagle.core.widget.RoundConstraintLayout>

View File

@@ -0,0 +1,137 @@
package com.mogo.eagle.core.data.bindingcar;
import java.io.Serializable;
/**
* @author lixiaopeng
* @description
* @since 6/21/22
*/
public class AppInfo implements Serializable {
private IdInfo _id;
private String bk_inst_id;
private String bk_inst_name;
private String bk_supplier_account;
private int screen_type; //1司机屏2乘客屏
private String sn;
private long last_time;
private String app_url;
private String bk_obj_id;
private String version_code;
private String version_name;
private long create_time;
public IdInfo get_id() {
return _id;
}
public void set_id(IdInfo _id) {
this._id = _id;
}
public String getBk_inst_id() {
return bk_inst_id;
}
public void setBk_inst_id(String bk_inst_id) {
this.bk_inst_id = bk_inst_id;
}
public String getBk_inst_name() {
return bk_inst_name;
}
public void setBk_inst_name(String bk_inst_name) {
this.bk_inst_name = bk_inst_name;
}
public String getBk_supplier_account() {
return bk_supplier_account;
}
public void setBk_supplier_account(String bk_supplier_account) {
this.bk_supplier_account = bk_supplier_account;
}
public int getScreen_type() {
return screen_type;
}
public void setScreen_type(int screen_type) {
this.screen_type = screen_type;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public long getLast_time() {
return last_time;
}
public void setLast_time(long last_time) {
this.last_time = last_time;
}
public String getApp_url() {
return app_url;
}
public void setApp_url(String app_url) {
this.app_url = app_url;
}
public String getBk_obj_id() {
return bk_obj_id;
}
public void setBk_obj_id(String bk_obj_id) {
this.bk_obj_id = bk_obj_id;
}
public String getVersion_code() {
return version_code;
}
public void setVersion_code(String version_code) {
this.version_code = version_code;
}
public String getVersion_name() {
return version_name;
}
public void setVersion_name(String version_name) {
this.version_name = version_name;
}
public long getCreate_time() {
return create_time;
}
public void setCreate_time(long create_time) {
this.create_time = create_time;
}
@Override
public String toString() {
return "AppInfo{" +
"_id=" + _id +
", bk_inst_id='" + bk_inst_id + '\'' +
", bk_inst_name='" + bk_inst_name + '\'' +
", bk_supplier_account='" + bk_supplier_account + '\'' +
", screen_type=" + screen_type +
", sn='" + sn + '\'' +
", last_time=" + last_time +
", app_url='" + app_url + '\'' +
", bk_obj_id='" + bk_obj_id + '\'' +
", version_code='" + version_code + '\'' +
", version_name='" + version_name + '\'' +
", create_time=" + create_time +
'}';
}
}

View File

@@ -0,0 +1,16 @@
package com.mogo.eagle.core.data.bindingcar;
import java.io.Serializable;
import java.util.List;
/**
* @author lixiaopeng
* @description
* @since 6/21/22
*/
public class IdInfo implements Serializable {
private String timestamp;
private String date;
}

View File

@@ -0,0 +1,27 @@
package com.mogo.eagle.core.data.bindingcar;
import com.mogo.eagle.core.data.BaseData;
/**
* @author lixiaopeng
* @description app升级管理
* @since: 6/21/22
*/
public class UpgradeAppInfo extends BaseData {
public AppInfo data;
public AppInfo getData() {
return data;
}
public void setData(AppInfo data) {
this.data = data;
}
@Override
public String toString() {
return "UpgradeAppInfo{" +
"data=" + data +
'}';
}
}

View File

@@ -10,7 +10,17 @@ import java.util.List;
* @since: 3/15/22
*/
public interface IMoGoBindingcarProvider extends IMoGoFunctionServerProvider {
/**
* 修改工控机的绑定关系
* @param callBack
*/
void modifyCarInfo(BindingcarCallBack callBack);
/**
* 获取车辆的信息
* @param macAddress
* @param widevineIDWithMd5
*/
void getBindingcarInfo(String macAddress, String widevineIDWithMd5);
/**
@@ -27,4 +37,10 @@ public interface IMoGoBindingcarProvider extends IMoGoFunctionServerProvider {
* @param dockerVersion 当前工控机版本
*/
void queryContainers(String padSn,String dockerVersion);
/**
* 查询app是否有更新
*/
void queryAppUpgrade();
}

View File

@@ -205,6 +205,11 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy {
*/
fun showModifyBindingcarDialog()
/**
* 展示升级app弹框
*/
fun showUpgradeDialog(name: String, url: String)
/**
* 呈现工控机升级确认框
*/

View File

@@ -269,6 +269,10 @@ object CallerHmiManager : CallerBase() {
waringProviderApi?.showModifyBindingcarDialog()
}
fun showUpgradeDialog(name: String, url: String) {
waringProviderApi?.showUpgradeDialog(name, url)
}
/**
* 呈现工控机升级确认框
*/

View File

@@ -22,5 +22,6 @@ public class HostConst {
public static final String BINDING_SN_HOST = "https://mygateway.zhidaozhixing.com/cmdbapi/"; //中台提供的接口服务
public static final String BINDING_SN_HOST_TEST = "https://mygateway.zhidaozhixing.com/cmdbapitest/"; //中台提供的接口服务测试
public static final String UPGRADE_APP_HOST = "http://10.0.200.12:32423/unify/selectResources/";
}