MediaPlay不会播放声音,为什么?

时间:2011-09-26 13:12:07

标签: android

这是我的代码

MediaPlayer mp = new MediaPlayer();
...
try {
mp.setDataSource( getString(R.raw.click));
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
                                        e.printStackTrace();
} catch (IllegalStateException e) {
                                        e.printStackTrace();
} catch (IOException e) {
                                        e.printStackTrace();
}

但奇怪的是它给了我

09-26 16:06:39.316: INFO/ActivityManager(110): Displayed Constructor.rob.com/.constr: +7s443ms
09-26 16:06:40.445: INFO/StagefrightPlayer(76): setDataSource('res/raw/click.mp3')
09-26 16:06:40.453: ERROR/MediaPlayer(21990): error (1, -2147483648)
09-26 16:06:40.457: WARN/System.err(21990): java.io.IOException: Prepare failed.: status=0x1

任何想法可能出错?

谢谢!

2 个答案:

答案 0 :(得分:3)

在mp.setDataSource()之前添加mp.reset()。

编辑:等等,你在用getString做什么?你做不到;要设置数据源,您需要FileDescriptor。试试这个:

AssetFileDescriptor afd = getAssets().openRawResourceFd(R.raw.click);
mp.reset();
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();

答案 1 :(得分:2)

试试这个:

mp= MediaPlayer.create(context, R.raw.click);
mp.start();