安卓APK扩展文件,无法读取.wav文件



我一直在开发一个应用程序,该应用程序需要播放声音,并且具有大量.wav格式的声音文件,其大小接近1GB。我已按照官方文档制作扩展文件。

首先,我制作了一个 0 次压缩的 .zip 文件,所有.wav文件都在该文件下(没有任何子文件夹。然后我将.zip文件夹重命名为 .obb。之后,我将那个.obb文件放在共享存储obb文件夹下的应用程序文件夹中(com.moinul.app 是我的软件包名称,所以文件夹名称是它,扩展文件也被命名为main.1.com.moinul.app.obb (

问题是当我尝试从扩展文件中读取文件时,出现空指针异常:

try
    {
        String param = (String) v.getTag();
        ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(context, 1, 0);
        AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("p25_1.wav");
        MediaPlayer mPlayer = new MediaPlayer();
        mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mPlayer.setDataSource(fd.getFileDescriptor());
        mPlayer.prepare();
        mPlayer.start();
    }
    catch (Exception e)
    {
        Log.w(TAG,  e.getMessage() + "");
        e.printStackTrace();
    }

我收到异常说 fd 为空。任何帮助将不胜感激。谢谢

尝试使用:AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("assets/p25_1.wav");

尝试'公共类测试扩展活动 {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String TAG = "Test";
    Context context = this;
    try {
        MediaPlayer mediaPlayer = new MediaPlayer();
        ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(context, 1, 0);
        AssetFileDescriptor assetFileDescriptor = expansionFile.getAssetFileDescriptor("assets/p25_1.wav");
        if (assetFileDescriptor != null) {
            final FileInputStream fis = assetFileDescriptor.createInputStream();
            if (fis != null) {
                mediaPlayer.setDataSource(fis.getFD());
                fis.close();
                mediaPlayer.prepare();
                mediaPlayer.start();
            } else {
                Log.w(TAG, "/fis: null");
            }
        }
    } catch (Exception e) {
        Log.w(TAG, e.getMessage() + "");
    }
}

}'

好的,

所以它终于工作了。换成 :

 AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("Sounds/p25_1.wav");

它现在正在工作。奇怪的是,我不得不添加 Sounds,这是压缩前的文件夹名称(我实际上压缩了这个文件夹,所有.wav都在它下面(。我认为压缩器在.zip内制作了另一个子文件夹。

无论如何,感谢您的帮助。

最新更新