From 33340fa94f38ef0ae164961758aa29f01a28190a Mon Sep 17 00:00:00 2001 From: donghongyu Date: Thu, 24 Oct 2024 12:53:04 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=8CUpdate=E3=80=8D=201=E3=80=81=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=8F=AA=E9=92=88=E5=AF=B9video=5F=E5=BC=80=E5=A4=B4?= =?UTF-8?q?=E7=9A=84raw=E6=96=87=E4=BB=B6=E7=9A=84=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E5=92=8C=E5=BC=95=E7=94=A8=E6=9B=BF=E6=8D=A2=E3=80=82=202?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E7=9A=AE=E8=82=A4=E5=8C=85=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E5=9B=9E=E8=B0=83=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/cloud/MainActivity.java | 27 ++++++++++------ ..._bus_bg.mp4 => video_biz_login_bus_bg.mp4} | Bin gradle.properties | 2 +- .../main/java/com/mogo/skin/SkinManager.java | 29 ++++++++++++++++-- .../java/com/mogo/skin/utils/FileUtils.java | 11 ++++--- 5 files changed, 52 insertions(+), 17 deletions(-) rename app/src/main/res/raw/{biz_login_bus_bg.mp4 => video_biz_login_bus_bg.mp4} (100%) diff --git a/app/src/main/java/com/mogo/cloud/MainActivity.java b/app/src/main/java/com/mogo/cloud/MainActivity.java index 85fea2c..8d3d7b6 100644 --- a/app/src/main/java/com/mogo/cloud/MainActivity.java +++ b/app/src/main/java/com/mogo/cloud/MainActivity.java @@ -23,7 +23,6 @@ import com.mogo.skin.Skin; import com.mogo.skin.SkinManager; import com.mogo.skin.utils.FileUtils; import com.mogo.skin.utils.SkinPreference; -import com.mogo.skin.utils.SkinResources; import com.mogo.v2x.V2XManager; import com.mogo.v2x.callback.IV2XCallback; import com.mogo.v2x.config.V2XConfig; @@ -87,13 +86,23 @@ public class MainActivity extends AppCompatActivity { Skin skin; if (isCheck) { skin = new Skin( - "9b69f8c4a2b3b953e1600930eda6a099", - "YiXin-skin_v1_2024_10_23.zip", - "https://carlife-static-1255510688.cos.ap-beijing.myqcloud.com/MoGoEagleEye/YiXin-skin_v1_2024_10_23.zip" + "88a7b397d6a03966aa332aea17f5210a", + "YiXin-skin_v1_2024_10_24.apk", + "https://carlife-static-1255510688.cos.ap-beijing.myqcloud.com/MoGoEagleEye/YiXin-skin_v1_2024_10_24.apk" ); //换肤 - SkinManager.getInstance().downloadSkin(this, skin); + SkinManager.getInstance().downloadSkin(this, skin, new SkinManager.SkinLoadListener() { + @Override + public void onLoadSuccess() { + FileUtils.copyVideoRawToFile(MainActivity.this, R.raw.class.getFields()); + } + + @Override + public void onLoadFailed(Exception e) { + + } + }); } else { SkinManager.getInstance().loadSkin(""); @@ -103,10 +112,10 @@ public class MainActivity extends AppCompatActivity { btnJumpLocation = findViewById(R.id.btnJumpLocation); btnJumpLocation.setOnClickListener(v -> { -// FileUtils.copyRawToFile(R.raw.biz_login_bus_bg, FileUtils.getExternalAppDirectory(getApplicationContext()).getAbsolutePath() + "/raw/"); - FileUtils.copyAppRawToFile(this, R.raw.class.getFields()); -// Intent intent = new Intent(MainActivity.this, LocationActivity.class); -// startActivity(intent); +//// FileUtils.copyRawToFile(R.raw.biz_login_bus_bg, FileUtils.getExternalAppDirectory(getApplicationContext()).getAbsolutePath() + "/raw/"); +// FileUtils.copyVideoRawToFile(this, R.raw.class.getFields()); + Intent intent = new Intent(MainActivity.this, LocationActivity.class); + startActivity(intent); }); btnJumpRoadCondition = findViewById(R.id.btnJumpRoadcondition); diff --git a/app/src/main/res/raw/biz_login_bus_bg.mp4 b/app/src/main/res/raw/video_biz_login_bus_bg.mp4 similarity index 100% rename from app/src/main/res/raw/biz_login_bus_bg.mp4 rename to app/src/main/res/raw/video_biz_login_bus_bg.mp4 diff --git a/gradle.properties b/gradle.properties index bc5e24d..2a973c7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -58,4 +58,4 @@ MOGO_TELEMATIC_VERSION=1.4.7.42 # v2x MOGO_V2X_VERSION=1.4.7.42 # SKIN -MOGO_SKIN_VERSION=1.4.7.49.10-debug +MOGO_SKIN_VERSION=1.4.7.49.11-debug diff --git a/libraries/mogo-skin/src/main/java/com/mogo/skin/SkinManager.java b/libraries/mogo-skin/src/main/java/com/mogo/skin/SkinManager.java index d58ea2f..12d966b 100644 --- a/libraries/mogo-skin/src/main/java/com/mogo/skin/SkinManager.java +++ b/libraries/mogo-skin/src/main/java/com/mogo/skin/SkinManager.java @@ -30,6 +30,11 @@ public class SkinManager extends Observable { private static Application mApplication; private static SkinManager instance; + + /** + * 皮肤加载回调监听 + */ + private SkinLoadListener mSkinLoadListener; /** * Activity生命周期回调 */ @@ -136,7 +141,7 @@ public class SkinManager extends Observable { /** * 下载皮肤包 */ - public void downloadSkin(Context context, Skin skin) { + public void downloadSkin(Context context, Skin skin, SkinLoadListener skinLoadListener) { File theme = new File(FileUtils.getExternalAppDirectory(context), "theme"); if (theme.exists() && theme.isFile()) { theme.delete(); @@ -151,13 +156,13 @@ public class SkinManager extends Observable { return; } Log.e(TAG, "皮肤不存在,开始下载……skin=" + skin); - DownloadManager manager = getDownloadManager(skin, theme); + DownloadManager manager = getDownloadManager(skin, theme, skinLoadListener); // 启动文件下载 manager.startDownload(); } - private static DownloadManager getDownloadManager(Skin skin, File themeDirectory) { + private static DownloadManager getDownloadManager(Skin skin, File themeDirectory, SkinLoadListener skinLoadListener) { DownloadManager.DownloadListener downloadListener = new DownloadManager.DownloadListener() { @Override public void onProgressUpdate(int progress) { @@ -179,14 +184,19 @@ public class SkinManager extends Observable { Log.d(TAG, "DownloadManager 校验成功,修改文件名。"); // 加载指定皮肤包 SkinManager.getInstance().loadSkin(skin.getPathLocal()); + // 回调给使用方成功 + skinLoadListener.onLoadSuccess(); // 校验文件签名没问题后删除其他主题 deleteFilesExcept(themeDirectory, skin.getSkinFileName()); } else { + // 回调给使用方成功 + skinLoadListener.onLoadFailed(new Exception("皮肤文件校验出错,本地文件MD5 与云端文件MD5 不一致。")); Log.e(TAG, "DownloadManager 皮肤文件校验出错,本地文件MD5 与云端文件MD5 不一致。"); Toast.makeText(mApplication, "皮肤文件校验出错,本地文件MD5 与云端文件MD5 不一致。", Toast.LENGTH_SHORT).show(); // TODO 删除本地皮肤文件,并重新下载(这个操作比较危险,需要严格保证配置文件中的md5与实际皮肤包一致,否则将是灾难) } } catch (Exception e) { + skinLoadListener.onLoadFailed(e); e.printStackTrace(); } } @@ -195,6 +205,7 @@ public class SkinManager extends Observable { public void onDownloadFailed(Exception e) { // 下载失败后的处理 Log.e(TAG, "DownloadManager onDownloadFailed"); + skinLoadListener.onLoadFailed(e); e.printStackTrace(); } @@ -202,6 +213,7 @@ public class SkinManager extends Observable { public void onAlreadyDownloading(String url) { // 处理重复下载的情况 Log.w(TAG, "DownloadManager onAlreadyDownloading url=" + url); + skinLoadListener.onLoadFailed(new Exception("DownloadManager onAlreadyDownloading url=" + url)); } }; @@ -240,4 +252,15 @@ public class SkinManager extends Observable { // 尝试重命名文件 return oldFile.renameTo(newFile); } + + + /** + * 皮肤加载回调 + */ + public interface SkinLoadListener { + void onLoadSuccess(); + + void onLoadFailed(Exception e); + } + } diff --git a/libraries/mogo-skin/src/main/java/com/mogo/skin/utils/FileUtils.java b/libraries/mogo-skin/src/main/java/com/mogo/skin/utils/FileUtils.java index f6c27d4..70bab5a 100644 --- a/libraries/mogo-skin/src/main/java/com/mogo/skin/utils/FileUtils.java +++ b/libraries/mogo-skin/src/main/java/com/mogo/skin/utils/FileUtils.java @@ -47,10 +47,13 @@ public class FileUtils { * * @param fields 获取raw文件夹的资源ID */ - public static void copyAppRawToFile(Context context, Field[] fields) { + public static void copyVideoRawToFile(Context context, Field[] fields) { for (Field field : fields) {// 将资源文件的名称添加到列表中 - copyRawToFile(SkinResources.getInstance().getIdentifier(field.getName(), "raw"), - getExternalAppDirectory(context).getAbsolutePath() + "/raw/"); + // 过滤名称带有Video的Raw文件到指定目录 + if (field.getName().startsWith("video_")) { + copyVideoRawToFile(SkinResources.getInstance().getIdentifier(field.getName(), "raw"), + getExternalAppDirectory(context).getAbsolutePath() + "/raw/"); + } } } @@ -61,7 +64,7 @@ public class FileUtils { * @param targetPath 外部存储的目标路径 * @return 是否复制成功 */ - public static boolean copyRawToFile(int rawResId, String targetPath) { + public static boolean copyVideoRawToFile(int rawResId, String targetPath) { try { // 获取 raw 目录下的文件输入流 InputStream inputStream = SkinResources.getInstance().getRawInputStream(rawResId);