我正在创建一个应用程序,需要大约半千兆字节的视频才能离线(这是该应用程序的主要要点之一)。我知道唯一的方法是使用apk扩展文件。然而,当我在网上看时,我发现文档非常稀疏和令人困惑。我的所有视频都在wmv中。我知道我无法播放它们,所以我想打开打开文件的意图,然后从扩展文件中播放它们。简而言之:
1)我如何进行expasion apk 2)是否可以通过我的应用程序打开用户首选视频播放器来播放视频? 3)如果不是我该怎么做?
我已经尝试在线查找但找不到任何东西!
答案 0 :(得分:1)
根据APK Expansion Files的文档,对我来说实际上看起来非常简单。
来自概述部分...
每个文件最高可达2GB,可以是您选择的任何格式,但我们建议您在下载过程中使用压缩文件来节省带宽。
例如,您可以简单地将WMV文件作为扩展文件,而不必以任何方式打包它。尽管建议使用压缩文件,但大多数媒体文件仍然是压缩的,因此将其放入ZIP文件(例如)几乎没有什么好处。但是,如果你有多个WMV文件,那么你必须使用类似ZIP文件的东西作为它们的容器,你显然需要在播放之前将它们解压缩到合适的位置。
从文件名格式部分,您的文件将被重命名为将其扩展名更改为OBB以及前缀以捐赠主要/补丁和应用版本及名称,如下所示...
[main|patch].<expansion-version>.<package-name>.obb
因此,例如,如果您的软件包名称为com.mycompany.myapp且版本为10,则您的主扩展文件将重命名为...
main.10.com.mycompany.myapp.obb
注意:即使您的原始文件名是myvideo.wmv(例如),它也将如上所述命名 - 这不是它实际上是文件名的路径。
最后,从存储位置部分,位置如下...
<shared-storage>/Android/obb/<package-name>/
使用我的示例文件名,实际的路径/文件名将是......
<shared-storage>/Android/obb/com.mycompany.myapp/main.10.com.mycompany.myapp.obb
要获取<shared-storage>
位置,您应使用getExternalStorageDirectory()
,<package-name>
使用getPackageName()
。
示例代码将是......
String extStoragePath = getExternalStorageDirectory().getAbsolutePath() + "/";
String packageName = getPackageName();
String mainExpFilename = "main.10." + packageName + ".obb";
String pathToMainExpFile = extStoragePath + "Android/obb/" + packageName + "/" + mainExpFilename;
至于使用第三方视频播放器播放文件,此示例代码之类的内容应与以上内容一起使用...
Uri mediaUri = Uri.parse(pathToMainExpFile);
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setDataAndType(mediaUri, "video/*");
startActivity(i);