gpt4 book ai didi

android - 从 APK 扩展文件中读取内容(来自 obb 文件)

转载 作者:太空宇宙 更新时间:2023-11-03 11:35:17 24 4
gpt4 key购买 nike

我已经实现了 APK 扩展文件下载服务,并且全部来自 http://developer.android.com/google/play/expansion-files.html

我可以下载 APK 扩展文件,我可以使用下面的代码查看该文件

try {
ZipResourceFile expansionFile = APKExpansionSupport
.getAPKExpansionZipFile(this, 3, 0);

ZipEntryRO[] zip = expansionFile.getAllEntries();
Log.e("", "" + zip[0].mFile.getAbsolutePath());
Log.e("", "" + zip[0].mFileName);
Log.e("", "" + zip[0].mZipFileName);
Log.e("", "" + zip[0].mCompressedLength);

AssetFileDescriptor fd = expansionFile
.getAssetFileDescriptor(zip[0].mFileName);

if (fd != null && fd.getFileDescriptor() != null) {
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(fd.getFileDescriptor());
mp.start();
} else {
Log.e("", "fd or fd.getFileDescriptor() is null");
}

} catch (IOException e) {
e.printStackTrace();
}

我的 obb 有文件 test.mp4 和我的代码 Log.e("", ""+ zip[0].mFileName); 打印 测试.mp4.

我的fdnull。为什么它是 null?我正在尝试解决但未能解决。

我无法读取 obb 文件中的任何文件。

未答复 Accessing to files inside obb expansion file提出想法,但它对我不起作用。

Steps to create APK expansion file告诉从 obb 中解压缩内容,然后读取它。可靠好吗?

我需要关于最佳实践的意见。

编辑

我的日志

03-01 10:36:40.848: E/(27836): zip[0].isUncompressed() : false
03-01 10:36:40.848: E/(27836): mFile.getAbsolutePath() : /storage/sdcard0/Android/obb/smart.trigger/main.3.smart.trigger.obb
03-01 10:36:40.848: E/(27836): mFileName : test.mp4
03-01 10:36:40.848: E/(27836): mZipFileName : /storage/sdcard0/Android/obb/smart.trigger/main.3.smart.trigger.obb
03-01 10:36:40.848: E/(27836): mCompressedLength : 21657598

最佳答案

我已经用谷歌搜索并发现我们必须使用 0%(无压缩) 制作 .zip,这在 http://developer.android.com/google/play/expansion-files.html 中提到。

提示:如果您将媒体文件打包到 ZIP 中,您可以在没有需要解压你的 ZIP。为了使其正常工作,您在创建 ZIP 包时不得对媒体文件执行额外的压缩。例如,在使用zip工具时,应该使用-n选项指定不应该压缩的文件后缀:
zip -n .mp4;.ogg main_expansion media_files

如何使用 winrar 制作 0% 压缩 zip?

enter image description here

这里看压缩方式

ma​​c 中 0% 压缩 zip

Create zip without compression on OS X from Terminal:
zip -r0 zipfilename.zip files-to-zip

所以我们必须在 Play 商店中上传这个 zip。

所以你不需要使用ZipHelper.java

只需简单地使用

ZipResourceFile expansionFile=null;

try {
expansionFile = APKExpansionSupport.getAPKExpansionZipFile(getApplicationContext(),3,0);

AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("test.mp4");
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(fd.getFileDescriptor(),fd.getStartOffset(),fd.getLength());
mPlayer.prepare();
mPlayer.start();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

关于android - 从 APK 扩展文件中读取内容(来自 obb 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14495483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com