用于在Android中存储音频文件的目录

时间:2011-01-12 09:08:57

标签: android audio playback

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

  

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

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

4 个答案:

答案 0 :(得分:82)

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

可以通过以下代码访问:

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

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

答案 1 :(得分:13)

希望这会有所帮助:

  

raw /

     

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

     

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

来自dev guide

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

答案 2 :(得分:2)

请注意,准备可能需要一些时间,因此可能会降低用户与您的应用的互动速度。请参阅开发笔记here,特别是异步准备部分!

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

答案 3 :(得分:-20)

请勿将媒体文件放在res/

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

并执行此操作:

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