Reputation: 6527
Here's my code
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();
}
yet strangely it give me
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
any ideas what might be wrong?
Thanks!
Upvotes: 0
Views: 211
Reputation: 1015
Try this :
mp= MediaPlayer.create(context, R.raw.click);
mp.start();
Upvotes: 2
Reputation: 134714
Add mp.reset() before mp.setDataSource().
EDIT: Wait, what are you doing with getString? You can't do that; to set a data source you need a FileDescriptor. Try this:
AssetFileDescriptor afd = getAssets().openRawResourceFd(R.raw.click);
mp.reset();
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();
Upvotes: 3