我将如何进行apk扩展,然后从中播放视频

时间:2014-08-03 11:17:10

标签: android video android-intent apk-expansion-files

我正在创建一个应用程序,需要大约半千兆字节的视频才能离线(这是该应用程序的主要要点之一)。我知道唯一的方法是使用apk扩展文件。然而,当我在网上看时,我发现文档非常稀疏和令人困惑。我的所有视频都在wmv中。我知道我无法播放它们,所以我想打开打开文件的意图,然后从扩展文件中播放它们。简而言之:

1)我如何进行expasion apk 2)是否可以通过我的应用程序打开用户首选视频播放器来播放视频? 3)如果不是我该怎么做?

我已经尝试在线查找但找不到任何东西!

1 个答案:

答案 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);