在Google的扩展文件开发指南(http://developer.android.com/guide/market/expansion-files.html#ZipLib)部分的底部,有以下文字.
APEZProvider - 大多数应用程序不需要使用此类.此类定义了一个ContentProvider,它通过内容提供程序Uri封送ZIP文件中的数据,以便为期望Uri访问媒体文件的某些Android API提供文件访问.Apk Expansion包中提供的示例应用程序演示了一个场景,其中此类可用于使用VideoView.setVideoURI()指定视频.有关如何扩展此类以在应用程序中使用的示例,请参阅示例应用程序的类SampleZipfileProvider.
有问题的示例应用程序不包含此类.但它确实包含对AndroidManifest.xml中的.SampleVideoPlayerActivity文件的引用,该文件也不存在于项目中.
有没有人试图实现一个基于APEZProvider它的具体类并使用它VideoView.setVideoURI()?
我已经实现了这个类:
public class ZipFileContentProvider extends APEZProvider {
@Override
public String getAuthority() {
return "com.myCompany.myAppName.provider.ZipFileContentProvider";
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在VideoView.setVideoURI()电话中使用它.有人可以帮忙吗?
我已经成功下载并存储了扩展文件.但是当我尝试在里面播放mp3时它崩溃了..
ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(getApplicationContext(),
1, 0);
InputStream fileStream = expansionFile.getInputStream("mysong.mp3");
AssetFileDescriptor asd = expansionFile.getAssetFileDescriptor("mysong.mp3");
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(asd.getFileDescriptor(), asd.getStartOffset(), asd.getLength());
asd.close();
mediaPlayer.prepare();
mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)
这里logcat说输入流和文件描述符都是null ..任何人都可以帮助我吗?
我的应用程序正在尝试向用户提供大量内容,因此应用程序的大小远远超过50mb.我们无法减少或删除某些内容,因此我们决定采用扩展方法.
我正在尝试按照本教程:Android APK扩展文件,并已成功将扩展文件放入我的设备进行测试.我可以在扩展中获取任何视频文件的输入流.但是当我尝试为VideoView设置VideoUri时,它会开始崩溃.这是一些代码:
ZipFileContentProvider contentProvider = new ZipFileContentProvider();
String contentPath = "content://";
File root = Environment.getExternalStorageDirectory();
String EXP_PATH = File.separator + "Android" + File.separator + "obb" + File.separator;
String path = root.toString() + EXP_PATH + context.getPackageName() + File.separator + "main.1.com.c4e1.in2cricket.obb";
String zipFileName = contentPath + path + "/" + fileName;
Uri uri = Uri.parse(zipFileName);
videoView.setVideoUri(uri);
public class ZipFileContentProvider extends APEZProvider {
@Override
public String getAuthority() {
return "com.c4e1.in2cricket.provider.ZipFileContentProvider";
}
}
Run Code Online (Sandbox Code Playgroud)