我想基于点击按钮播放音频文件。我已经定义了onClickListener()
方法和布局文件。当我将wav文件添加到res/
目录时,我收到以下构建错误:
无效的资源目录名temp.wav / hello / res line 1 Android AAPT问题
我的问题如下:
1.我需要在哪个目录中存储音频文件?目前他们在res /文件夹中
2.另外,mp.setDataSource("/res/temp.wav")
调用媒体播放器的正确方法是什么?
答案 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");