Как бы сделать расширение apk, а потом с него воспроизвести видео

Я создаю приложение, для которого требуется около половины гигабайта видео, чтобы быть в автономном режиме (это один из основных пунктов приложения). Я знаю, что единственный способ сделать это - использовать файлы расширения apk. Однако, когда я заглянул в Интернет, я обнаружил, что документация очень скудная и запутанная. Все мои видео в WMV. Я знаю, что не могу их воспроизвести, поэтому я думал открыть намерение открыть файлы, а затем воспроизвести их из файлов расширения. Итак, в двух словах:

1) Как мне сделать расширение apk 2) Можно ли воспроизводить видео, используя намерение открыть предпочитаемый пользователем видеоплеер из моего приложения? 3) Если нет, как мне это сделать?

Я уже пробовал искать в Интернете, но ничего не нашел!


person Finley Smith    schedule 03.08.2014    source источник
comment
Чтобы запустить внешний видеоплеер, создайте Intent с действием Intent.ACTION_VIEW, затем установите uri мультимедиа и используйте mime-тип видео / *.   -  person Squonk    schedule 03.08.2014
comment
@Squonk да, но будет ли это работать, если файл находится в файле расширения apk?   -  person Finley Smith    schedule 03.08.2014
comment
Смотрите мой ответ - я думаю, это должно помочь вам начать, хотя я никогда не использовал файлы расширения, поэтому он может быть не на 100% точным.   -  person Squonk    schedule 03.08.2014


Ответы (1)


Согласно документации для файлов расширения APK, на самом деле это кажется довольно простым мне.

В разделе Обзор ...

Каждый файл может иметь размер до 2 ГБ и это может быть любой формат по вашему выбору, но мы рекомендуем вам использовать сжатый файл для экономии трафика во время загрузки.

Например, вы можете просто иметь свой 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);
person Squonk    schedule 03.08.2014