Android MediaPlayer在30次播放后引发错误

时间:2017-11-29 22:14:13

标签: android

好的,我正在编写一个简单的呼叫/拨号应用程序,我已为每个号码创建了按钮。我正在尝试用MediaPlayer类实现声音,所以每当用户点击/点击按钮声音播放时。并且它正在工作,但是在30次点击之后声音没有播放,只有当我重新启动应用程序时,我再次只能听到30次点击声音,然后我就会收到错误。

我也尝试过使用SoundPool类,但是再次点击30次后我听不到声音。任何解决方案?

onButtonClick方法:

MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.button_sound);
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

        try {
            if (mp.isPlaying()) {
                mp.stop();
                mp.release();
            } else {
                mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mp) {
                            mp.start();
                    }
                });
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

错误日志:

  

11-29 23:01:03.632 12572-12572 / com.phonecalldemo E / MediaPlayer-JNI:   QCMediaPlayer媒体播放器不存在11-29 23:01:03.662   12572-12572 / com.phonecalldemo E / MediaPlayer:应该有副标题   控制器已设置11-29 23:01:03.672   12572-12572 / com.phonecalldemo E / MediaPlayer:错误(-19,0)11-29   23:01:03.682 12572-12572 / com.phonecalldemo E / MediaPlayer:错误   (-19,0)

1 个答案:

答案 0 :(得分:0)

<强>更新

我找到了解决方案,这是我的新代码,对于那些仍然遇到此类错误的人:

final MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.button_sound);
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

                mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mp) {
                        mp.start();
                    }
                });
                mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mediaPlayer) {
                        mp.release();
                    }
                });