当前位置: 首页 > 知识库问答 >
问题:

AndroidAPK扩展文件,无法读取. wav文件

樊桐
2023-03-14

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

首先我做了一个决定。压缩0次的压缩文件,全部。wav文件位于该文件下(没有任何子文件夹。即main.1.package包含所有声音文件)。然后我重新命名了。将文件夹压缩到。obb。然后我把它放在。共享存储obb文件夹下apps文件夹中的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是无效的。任何帮助都将不胜感激。谢谢

共有3个答案

卓嘉良
2023-03-14

好了,终于成功了。换成:

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

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

不管怎样,谢谢你的帮助。

丁绪
2023-03-14

公共类测试扩展活动{

@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() + "");
    }
}

}`

越星晖
2023-03-14

尝试使用:AssetFileDescriptor fd=expansionFile。getAssetFileDescriptor(“assets/p25_1.wav”)

 类似资料:
  • 问题内容: 我想阅读Java中的wav文件,我将使用K-means对它们进行分类。 如何读取Java中的wav文件并将其分配到数组或类似的内容(您可以提出想法)中以对其进行分类? 编辑: 我想使用API​​读取wav文件和K-均值。 问题答案: 官方的Java声音编程指南走过读取和写入的音频文件。 A Greensted 撰写的本文:用Java读写Wav文件应该会有所帮助。WavFile类非常有用

  • Scala文件 src.main.scala包 }} 这只是一个示例Helloworld程序

  • cmf_get_file_extension($filename) 功能 获取文件扩展名 参数 $filename: string 文件名 返回 string 文件扩展名

  • X2.2.0新增 sp_get_file_extension($filename) 功能: 获取文件扩展名 参数: $filename: 文件名 返回: 类型string,文件扩展名 使用: $suffix = sp_get_file_extension('23232.png');

  • 问题内容: 我想读取.bak文件,这些文件是ms sql数据库的备份文件。现在,我正在研究如何使用Sql Mngmnt studio读取这些文件。请帮帮我。谢谢 问题答案: 您可以使用SQL Management Studio将.BAK文件还原到临时数据库并读取它们! 这里的一些指针

  • 基于StackExchange的代码,我编写了打开wav文件的代码。wav文件本身是一个有效的文件,因为它可以与我的Python程序正常配合使用。但是javascript函数不起作用。声音文件与我的html文件位于同一文件夹中。 任何帮助都将不胜感激。