开发过程遇到:
AssetFileDescriptor afd = c.getAssets().openFd("ring.mp3");
mMediaPlayer.setDataSource(afd.getFileDescriptor());
mMediaPlayer.setDataSource(c.getResources().openRawResourceFd(R.raw.ring).getFileDescriptor());
以上是两种设置资源的方法。
mMediaPlayer.prepare();
mMediaPlayer.start();
在测试demo 的Activity中执行,是没有问题的。
但是在项目中发现,使用OPPO等设备时,当设备push到达后,使用handler处理时,报出这样的错误。
java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer.prepare(Native Method)
于是乎,先仔细查看API。虽然没有直接得到答案,但是有提到prepare应该要在子线程中应用,