From 48026236ea2cfcc53661734b903efb5a017812f7 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 17 Feb 2023 20:25:44 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[M2=20=E7=89=88=E6=9C=AC=E5=8F=B7=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E4=BD=8D=E5=9B=BA=E5=AE=9A1]=201.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 37794b3bc5..e511177c92 100644 --- a/gradle.properties +++ b/gradle.properties @@ -93,8 +93,8 @@ WEBSOCKET_VERSION=1.1.7 applicationId=com.mogo.launcer applicationName=IntelligentPilot # RoboBus司机端:2.5.1;RoboTaxi司机端:2.5.1;RoboTaxi乘客端:1.0.0 -versionCode=1002000 -versionName=1.0.2 +versionCode=1001000 +versionName=1.0.1 ################# 新架构模块Maven版本管理 ################# MOGO_CORE_FUNCTION_HMI_VERSION=0.0.58.10 From e05cff855952b2c66a82bcb806dedb17e46712db Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Mon, 20 Feb 2023 20:06:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[M2]=E8=A7=86=E9=A2=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/bus/passenger/ui/PM2BaseFragment.kt | 17 ++++- .../ui/widget/video/AdvanceGSYVideoPlayer.kt | 2 + .../ui/widget/video/AdvancePagerAdapter.kt | 10 +-- .../ui/widget/video/AdvanceVideoView.kt | 66 ++++++------------- 4 files changed, 42 insertions(+), 53 deletions(-) diff --git a/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2BaseFragment.kt b/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2BaseFragment.kt index 4a66ef787d..d6107cd423 100644 --- a/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2BaseFragment.kt +++ b/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2BaseFragment.kt @@ -1,5 +1,7 @@ package com.mogo.och.bus.passenger.ui +import android.provider.Settings +import android.view.Surface import com.mogo.commons.mvp.MvpFragment import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.presenter.PM2Presenter @@ -25,8 +27,21 @@ class PM2BaseFragment : } override fun initViews() { + //横竖屏 + setScreenDirection() + //隐藏小地图 - initFragment(); + initFragment() + } + + private fun setScreenDirection() { + var ro = Settings.System.getInt(context?.contentResolver, + Settings.System.USER_ROTATION,Surface.ROTATION_270) + if (ro != Surface.ROTATION_270){ + ro = Surface.ROTATION_270 + } + Settings.System.putInt(context?.contentResolver, + Settings.System.USER_ROTATION,ro) } /** diff --git a/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceGSYVideoPlayer.kt b/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceGSYVideoPlayer.kt index 8d1bf3c0b9..d6dd2227b8 100644 --- a/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceGSYVideoPlayer.kt +++ b/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceGSYVideoPlayer.kt @@ -64,5 +64,7 @@ class AdvanceGSYVideoPlayer: StandardGSYVideoPlayer { setViewShowState( mLockScreen, GONE ) + + setIsTouchWiget(false) } } \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvancePagerAdapter.kt b/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvancePagerAdapter.kt index ed7df77713..4164f09e74 100644 --- a/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvancePagerAdapter.kt +++ b/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvancePagerAdapter.kt @@ -85,7 +85,6 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter private fun addView(item: RotationItem) { if (item.type == 1) { // 表示视频 val videoView = AdvanceVideoView(mContext) - videoView.setCacheImageView(item.cacheImgPath) videoView.setVideoPath(item.path) viewList.add(videoView) } else { // 表示图片 @@ -129,7 +128,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter if (viewList[mViewPager.currentItem] is AdvanceVideoView) { val videoView = (viewList[mViewPager.currentItem] as AdvanceVideoView) - videoView.setCacheImageView(dataList[mViewPager.currentItem].cacheImgPath) + videoView.setCacheImageView() videoView.setVideo(gsySampleCallBack,mViewPager.currentItem) } else if (viewList[mViewPager.currentItem] is AdvanceImageView) { @@ -148,15 +147,16 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter Logger.d("onPageScrollStateChanged", "onPrepared") val videoView = (viewList[mViewPager.currentItem] as AdvanceVideoView) UiThreadHandler.postDelayed({ + Logger.d("onPageScrollStateChanged", "cacheImg gone") videoView.setCacheImageViewGone() - },2000) + },1000) } override fun onAutoComplete(url: String?, vararg objects: Any?) { Logger.d("onPageScrollStateChanged", "onAutoComplete()") val videoView = (viewList[mViewPager.currentItem] as AdvanceVideoView) videoView.onVideoReset() - videoView.setCacheImageView(dataList[mViewPager.currentItem].cacheImgPath) + videoView.setCacheImageView() goNextItemView() } @@ -165,7 +165,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter Logger.d("onPageScrollStateChanged", "onPlayError()") val videoView = (viewList[mViewPager.currentItem] as AdvanceVideoView) videoView.onVideoReset() - videoView.setCacheImageView(dataList[mViewPager.currentItem].cacheImgPath) + videoView.setCacheImageView() goNextItemView() } } diff --git a/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceVideoView.kt b/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceVideoView.kt index c9908a567a..842764ef4e 100644 --- a/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceVideoView.kt +++ b/OCH/mogo-och-bus-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/widget/video/AdvanceVideoView.kt @@ -7,7 +7,9 @@ import android.widget.ImageView import android.widget.RelativeLayout import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions +import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.util.BitmapHelper +import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.och.bus.passenger.R import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack @@ -63,28 +65,30 @@ class AdvanceVideoView @JvmOverloads constructor( fun setVideoPath(path: String) { this.path = path // BitmapHelper.getVideoThumbnail(path) /*获取第一帧图*/ - cacheImage?.let { - Glide.with(context).load(BitmapHelper.getVideoThumbnail(path)) - .apply(RequestOptions().placeholder(R.drawable.m2_p_video_holder).centerCrop()) - .into(it) -// it.setImageBitmap(BitmapHelper.getVideoThumbnail(path)) - } + cacheImage?.visibility = VISIBLE + Thread{ + var bitmap = BitmapHelper.getVideoThumbnail(path) + Logger.d("onPageScrollStateChanged", "setVideoPath") + ThreadUtils.runOnUiThread { + Logger.d("onPageScrollStateChanged", "bitmap加载") + cacheImage?.let { + Glide.with(context).load(bitmap) + .apply( + RequestOptions().placeholder(R.drawable.m2_p_video_holder).centerCrop() + ) + .into(it) + } + } + }.start() } @SuppressLint("CheckResult") - fun setCacheImageView(imgPath: String) { - -// cacheImage?.let { -// Glide.with(context) -// .load(imgPath) -// .apply(RequestOptions().placeholder(R.drawable.m2_p_video_holder).centerCrop()) -// .into(it) -// } - + fun setCacheImageView() { cacheImage?.visibility = VISIBLE } fun setVideo(onCompletionListener: GSYSampleCallBack,position: Int) { + Logger.d("onPageScrollStateChanged", "setVideoPlay") gsyVideoOptionBuilder = GSYVideoOptionBuilder() gsyVideoOptionBuilder?.setUrl(path) ?.setPlayTag(path + position) @@ -116,36 +120,4 @@ class AdvanceVideoView @JvmOverloads constructor( videoViewPlayer?.startPlayLogic() } } - - /** - * 加载首帧,作为视频缓存显示的图片 - */ -// private fun loadCacheImage(){ -// Thread { -// var retriever = MediaMetadataRetriever() -// var bitmap: Bitmap? = null -// try { -// if (path?.contains("http") == true){ -// retriever.setDataSource(path, HashMap()) -// }else{ -// retriever.setDataSource(path) -// } -// bitmap = retriever.frameAtTime -// }catch (ex: Exception){ -// ex.printStackTrace() -// }finally { -// try { -// retriever.release() -// }catch (e: RuntimeException){ -// e.printStackTrace() -// } -// } -// -// if (bitmap != null) { -// UiThreadHandler.post { -// setCacheImageView(bitmap) -// } -// } -// } -// } } \ No newline at end of file From 2ecf3e3ebd3aadd93d5265c59c6d14bac12ee20e Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 22 Feb 2023 11:13:05 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[m1]=20[1.1.2]=20=E5=8C=85=E8=BD=A6?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 8 ++- app/functions/och.gradle | 5 +- app/productFlavors/README.md | 17 +++--- app/productFlavors/flavorsFilterConfig.gradle | 22 +++++++- app/productFlavors/ochDriverM1.gradle | 52 +++++++++++++++++++ ...ssengerM1.gradle => ochPassengerM1.gradle} | 4 +- .../utilcode/mogo/AppIdentityModeUtils.kt | 32 ++++++++---- 7 files changed, 117 insertions(+), 23 deletions(-) create mode 100644 app/productFlavors/ochDriverM1.gradle rename app/productFlavors/{fOchBusPassengerM1.gradle => ochPassengerM1.gradle} (95%) diff --git a/app/build.gradle b/app/build.gradle index 2587488dc4..d7f0d4ff9a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -251,6 +251,10 @@ android { shuttle{ dimension "product" } + // 包车业务 + charter{ + dimension "product" + } // 配置网络环境,QA、线上、演示 qa { @@ -273,7 +277,6 @@ android { apply from: "./productFlavors/fOchShuttle.gradle" apply from: "./productFlavors/fOchTaxi.gradle" apply from: "./productFlavors/fOchBusPassenger.gradle" - apply from: "./productFlavors/fOchBusPassengerM1.gradle" apply from: "./productFlavors/fOchBusPassengerM2.gradle" apply from: "./productFlavors/fOchShuttlePassenger.gradle" apply from: "./productFlavors/fOchTaxiPassenger.gradle" @@ -281,6 +284,9 @@ android { apply from: "./productFlavors/fMultiDisplayOchBus.gradle" apply from: "./productFlavors/fMultiDisplayOchTaxi.gradle" apply from: "./productFlavors/flavorsFilterConfig.gradle" + //包车 + apply from: "./productFlavors/ochDriverM1.gradle" + apply from: "./productFlavors/ochPassengerM1.gradle" packagingOptions { exclude 'META-INF/io.netty.versions.properties' diff --git a/app/functions/och.gradle b/app/functions/och.gradle index 8388840e97..b2430e4a50 100644 --- a/app/functions/och.gradle +++ b/app/functions/och.gradle @@ -39,9 +39,12 @@ project.dependencies { fOchBusImplementation (project(':OCH:mogo-och-bus')) // Bus乘客端 fOchBusPassengerImplementation (project(':OCH:mogo-och-bus-passenger')) - fOchBusPassengerM1Implementation (project(':OCH:mogo-och-bus-passenger')) fOchBusPassengerM2Implementation (project(':OCH:mogo-och-bus-passenger')) + // 包车 + ochDriverM1Implementation (project(':OCH:mogo-och-bus')) + ochPassengerM1Implementation (project(':OCH:mogo-och-bus-passenger')) + // taxi司机端 fOchTaxiImplementation (project(':OCH:mogo-och-taxi')) // taxi乘客端 diff --git a/app/productFlavors/README.md b/app/productFlavors/README.md index 66b93ae8f2..99b243fa63 100644 --- a/app/productFlavors/README.md +++ b/app/productFlavors/README.md @@ -13,11 +13,12 @@ APP_IDENTITY_MODE规则: Van 开沃 FT 福田 已有: - taxi司机屏 Taxi_Driver_Base (东风、红旗司机端) - taxi乘客屏 Taxi_Passenger_Base (东风、红旗乘客端) - bus司机屏 Bus_Driver_Base (金旅小巴司机端) - Bus_Driver_Van (开沃小巴司机端) - bus乘客屏 Bus_Passenger_Base (金旅、开沃小巴乘客端) - Bus_Passenger_M1 (M1小巴乘客端) - Bus_Passenger_M2 (M2小巴乘客端) - 清扫车 Sweeper_Driver_FT (福田清扫车司机端) \ No newline at end of file + taxi司机屏 Taxi_Driver_DFHQ (东风、红旗司机端) + taxi乘客屏 Taxi_Passenger_DFHQ (东风、红旗乘客端) + bus司机屏 Bus_Driver_JLKV (金旅公交车司机端) + Bus_Driver_Van (开沃公交车司机端) + bus乘客屏 Bus_Passenger_JLKV (金旅、开沃公交车乘客端) + Bus_Passenger_M2 (M2公交车乘客端) + 清扫车 Sweeper_Driver_FT (福田清扫车司机端) + 包车 Charter_Driver_M1 (M1包车司机端) + Charter_Passenger_M1 (M1包车乘客端) \ No newline at end of file diff --git a/app/productFlavors/flavorsFilterConfig.gradle b/app/productFlavors/flavorsFilterConfig.gradle index 92ab21d059..27dce97c46 100644 --- a/app/productFlavors/flavorsFilterConfig.gradle +++ b/app/productFlavors/flavorsFilterConfig.gradle @@ -43,13 +43,22 @@ project.android.variantFilter { variant -> if (names.contains("fOchBus")) { } else if (names.contains("fOchBusPassenger")) { } else if (names.contains("fMultiDisplayOchBus")) { - } else if (names.contains("fOchBusPassengerM1")) { } else if (names.contains("fOchBusPassengerM2")) { } else { setIgnore(true) } } // endregion + // region 过滤charter 包车 的flavors + if (names.contains("charter")) { + //Gradle会忽略满足上述条件的所有变体 + if (names.contains("ochDriverM1")) { + } else if (names.contains("ochPassengerM1")) { + } else { + setIgnore(true) + } + } + // endregion } else if(names.contains("dali")){ // region 过滤noop 的flavors 不带och业务的 @@ -85,13 +94,22 @@ project.android.variantFilter { variant -> if (names.contains("fOchBus")) { } else if (names.contains("fOchBusPassenger")) { } else if (names.contains("fMultiDisplayOchBus")) { - } else if (names.contains("fOchBusPassengerM1")) { } else if (names.contains("fOchBusPassengerM2")) { } else { setIgnore(true) } } // endregion + // region 过滤charter 包车 的flavors + if (names.contains("charter")) { + //Gradle会忽略满足上述条件的所有变体 + if (names.contains("ochDriverM1")) { + } else if (names.contains("ochPassengerM1")) { + } else { + setIgnore(true) + } + } + // endregion } else { setIgnore(true) diff --git a/app/productFlavors/ochDriverM1.gradle b/app/productFlavors/ochDriverM1.gradle new file mode 100644 index 0000000000..84d2a1930b --- /dev/null +++ b/app/productFlavors/ochDriverM1.gradle @@ -0,0 +1,52 @@ +project.android.productFlavors { + // 衡阳-联想Pad-网约车-小巴车 + ochDriverM1 { + externalNativeBuild { + ndk { + // 设置支持的SO库架构 + abiFilters "armeabi-v7a", "arm64-v8a" + } + } + minSdkVersion rootProject.ext.android.minSdkVersionPadLenovo + targetSdkVersion rootProject.ext.android.targetSdkVersionPadLenovo + versionCode rootProject.versionCode as int + versionName rootProject.versionName + // 应用包名 + applicationId rootProject.ext.android.fLauncherApplicationId + dimension "vehicle" + matchingFallbacks = ['jinlvvan'] + + // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 + buildConfigField 'int', 'CAR_MACHINE_TYPE', '2' + // 配置AndroidManifest.xml中用到的参数 + manifestPlaceholders = [ + // 高德地图鉴权信息 + AMAP_API_VALUE : rootProject.ext.android.fLauncherAmapApiValue, + // BUGLY_APP_CHANNEL + CHANNEL_VALUE : "fOchBus", + // 在启动的时候把Task给清空 + ACTIVITY_ROOT : true, + // Activity的朝向 + SCREEN_ORIENTATION: "landscape" + ] + + // 是否需要实时上报坐标 + buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true' + // GPS数据提供源: 0-Android系统,1-工控机,2-OBU + buildConfigField 'int', 'GPS_PROVIDER', "1" + + // 构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则 + buildConfigField 'String', 'APP_IDENTITY_MODE', "\"Charter_Driver_M1\"" + // 连接的工控机IP地址 + buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.8.102\"" + // 构建的是否是演示(美化)模式 + buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' + // 是否需要重写状态栏 + buildConfigField 'boolean', 'IS_REPLACE_STATUSVIEW', 'false' + + // 构建 是否支持多屏异显异交互 + buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false' + } +} \ No newline at end of file diff --git a/app/productFlavors/fOchBusPassengerM1.gradle b/app/productFlavors/ochPassengerM1.gradle similarity index 95% rename from app/productFlavors/fOchBusPassengerM1.gradle rename to app/productFlavors/ochPassengerM1.gradle index 207c5b2b13..c60d13e0b5 100644 --- a/app/productFlavors/fOchBusPassengerM1.gradle +++ b/app/productFlavors/ochPassengerM1.gradle @@ -1,6 +1,6 @@ project.android.productFlavors { // 衡阳-联想Pad-网约车-小巴车-乘客端 - fOchBusPassengerM1 { + ochPassengerM1 { externalNativeBuild { ndk { // 设置支持的SO库架构 @@ -36,7 +36,7 @@ project.android.productFlavors { buildConfigField 'int', 'GPS_PROVIDER', "1" // 构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则 - buildConfigField 'String', 'APP_IDENTITY_MODE', "\"Bus_Passenger_M1\"" + buildConfigField 'String', 'APP_IDENTITY_MODE', "\"Charter_Passenger_M1\"" // 连接的工控机IP地址 buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.8.103\"" // 构建的是否是演示(美化)模式 diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/AppIdentityModeUtils.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/AppIdentityModeUtils.kt index 55e04731dc..88228b80ca 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/AppIdentityModeUtils.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/AppIdentityModeUtils.kt @@ -24,6 +24,7 @@ object AppIdentityModeUtils { private const val BUS = "Bus" private const val SWEEPER = "Sweeper" private const val SHUTTLE = "Shuttle" + private const val CHARTER = "Charter" // 车型 private const val M1 = "M1" @@ -106,15 +107,6 @@ object AppIdentityModeUtils { } return false } - - @JvmStatic - fun isM1(appIdentityMode: String): Boolean { - val (_, _, model) = getInfo(appIdentityMode) - if (model.isNotEmpty()) { - return model == M1 - } - return false - } @JvmStatic fun isM2(appIdentityMode: String): Boolean { val (_, _, model) = getInfo(appIdentityMode) @@ -204,5 +196,27 @@ object AppIdentityModeUtils { } + /** + * 是否包车 + */ + @JvmStatic + fun isCharter(appIdentityMode: String): Boolean { + val (bussness, _, _) = getInfo(appIdentityMode) + if (bussness.isNotEmpty()) { + return bussness == CHARTER + } + return false + } + @JvmStatic + fun isM1(appIdentityMode: String): Boolean { + val (_, _, model) = getInfo(appIdentityMode) + if (model.isNotEmpty()) { + return model == M1 + } + return false + } + + + }