【问题标题】:Directory for storing audio files in AndroidAndroid中存储音频文件的目录
【发布时间】:2011-06-07 16:56:11
【问题描述】:

我想通过单击按钮来播放音频文件。我已经定义了onClickListener() 方法和布局文件。当我将 wav 文件添加到 res/ 目录时,我收到以下构建错误:

无效的资源目录名称 temp.wav /hello/res 第 1 行 Android AAPT 问题

我的问题如下:
1. 我需要将音频文件存储在什么目录中?目前它们位于 res/ 文件夹中。
2. 另外,mp.setDataSource("/res/temp.wav") 调用媒体播放器的正确方法是什么?

【问题讨论】:

    标签: android audio playback


    【解决方案1】:

    音频文件可以移动到名为 raw 的文件夹中,该文件夹应在 res 文件夹中创建。

    可以通过以下代码访问:

    MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.soundclip);
    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mPlayer.start();
    

    这是最简单的方法。你可以试试。。

    【讨论】:

    • 可以直接使用this.getApplicationContext()代替自定义的“context”变量。
    • 我检查了 MadiaPlayer.create 的文档,发现:"请注意,由于在此方法中自动调用了 prepare(),您无法更改音频流类型(请参阅 setAudioStreamType( int))、音频会话 ID(参见 setAudioSessionId(int))或音频属性(参见新 MediaPlayer 的 setAudioAttributes(AudioAttributes)。” 所以看起来您不需要该行:@ 987654323@
    • 你可以访问 raw 中的文件夹而不是音频文件本身吗?
    • @Zypps987 我也想知道
    • @Kozuch 这假设你在一个活动中或有 getApplicationContext() 方法的东西中,但知道仍然有用
    【解决方案2】:

    请注意,准备可能需要一些时间,因此可能会减慢用户与您的应用的交互。请参阅开发说明here,尤其是异步准备部分!

    如果文件大小小于 1MB,您也可以使用 SoundPool。这将为您处理与 UI 线程的同步。这是一个very useful article 使用它(Lars 有很多很棒的文章!)。

    【讨论】:

      【解决方案3】:

      希望这会有所帮助:

      原始/

      以原始形式保存的任意文件。要使用原始 InputStream 打开这些资源,请使用资源 ID(即 R.raw.filename)调用 Resources.openRawResource()。

      但是,如果您需要访问原始文件名和文件层次结构,您可以考虑将一些资源保存在 assets/ 目录中(而不是 res/raw/)。 assets/ 中的文件没有资源 ID,因此您只能使用 AssetManager 读取它们。

      来自dev guide

      [编辑:但我认为将音乐文件放入 res 目录根本不是一个好主意——这取决于这些文件的用途是什么?]

      【讨论】:

      • 我的音频文件是 wav 格式,不确定它们是否符合原始文件的条件。至于目的,我只是想看看我是否可以通过点击几下按钮来播放一些音乐。你看,我是 Android 新手,我只是在想办法!感谢您的及时回复!
      【解决方案4】:

      不要将媒体文件放入res/

      将您的文件(temp.wav)放在一个名为 /sdcard/audio 的文件夹中(如果您使用的是模拟器)。

      然后这样做:

      mp.setDataSource("/sdcard/audio/temp.wav");
      

      【讨论】:

      • 那么当我尝试在真手机上安装应用程序时,这会发生什么变化?我的意思是,上述修复仅对模拟器有效吗?
      • no.. 即使您打算将其放在真实手机上,请确保文件位于相应的路径中(该路径可以是您喜欢的任何路径,但不要将其放在 res /)。
      • 我正要在我的 Android 应用程序中添加一些音效,并且在遇到这个问题时正在寻求有关将它们放在哪里的帮助。我真的不明白这个答案怎么会被接受。这一点帮助都没有。据我所知, res/raw 是放置音效和类似效果的绝佳场所。由于放在 res/raw 中的文件的大小有限制,我猜 MP3 和其他大文件应该放在 /assets 文件夹中?
      • 我同意@britzl,这个答案不是问题所要求的。 Droidbee 的答案就是您要找的。​​span>
      猜你喜欢
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 2023-02-13
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多