这是我的代码
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
任何想法可能出错?
谢谢!
答案 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();