首页 > 学院 > 开发设计 > 正文

MediaPlay播放不出声音

2019-11-07 23:58:45
字体:
来源:转载
供稿:网友

开发过程遇到:

  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应该要在子线程中应用,修改成:

 mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {            @Override            public void onPrepared(MediaPlayer mp) {                mp.start();            }        });
 mMediaPlayer.prepareAsync();

结果还是不行!!!

不过没有抛出异常。

+++++++++++++++++++++++++分割+++++++++++++++++++++++++++++++++++++++++++++++++++++

再是乎,

        mMediaPlayer.setOnErrorListener(new OnErrorListener() {                        @Override            public boolean onError(MediaPlayer mp, int what, int extra) {                             return false;            }        });心碎一地,Error,what=1;extra=-2*****,(很大一个数)

最后尝试:

  fis = new FileInputStream(file);                    mMediaPlayer.setDataSource(fis.getFD());该路径是SD卡上的一个路径。终于可以了听到声音了……

=========================================================================================

项目上也使用上了,但是不知道问题出在哪里??

难道是自定义Handler的问题?

在demo中试了也Handler处理,是可以响铃的。

剑走偏锋:

试着在项目上的Handler中发出广播,在Receiver中调用响铃,居然,居然,成功了!!

表示不解!!!!大家有遇到的可以分享下。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表