在Media Player中获取错误。 MediaPlayer(8743):错误(-38,0)

时间:2013-11-18 13:06:11

标签: java android

我目前正在开发Media Player。我有URL,我正在设置媒体播放器。但我得到了以下错误:

E/MediaPlayer(8743): stop called in state 0
E/MediaPlayer(8743): error (-38, 0)

代码是:

      public void onPlayClick(View view) {
    Object obj = view.getTag();
    if (obj != null && obj.getClass() == RowItem.class) {

        final RowItem rowItem = (RowItem) obj;
        if (!rowItem.mPlayer.isPlaying()) {
            invalidatePlayButtons(rowItem.mPosition);

            try {
                rowItem.mPlayer.reset();
                rowItem.mPlayer.setDataSource(rowItem.mTrack.getAboluteFilePath());
                Log.d("RINGTONE","File path = "+rowItem.mTrack.getAboluteFilePath());
                rowItem.mPlayer.prepare();

            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            rowItem.mPlayer.start();
            rowItem.mPlayer
                    .setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                        @Override
                        public void onCompletion(MediaPlayer mp) {
                            mp.stop();
                            rowItem.mPlayButton
                                    .setImageResource(R.drawable.play);
                        }
                    });
            rowItem.mProgressBar.setProgress(0);
            rowItem.mProgressBar.setMax(rowItem.mPlayer.getDuration());
            showAnimation(rowItem);
            rowItem.mTrack.setPlaying(false);
        } else {
            invalidatePlayButtons(-1);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果您使用媒体播放器,您还应该释放您的媒体播放器使用此代码

                mp = MediaPlayer.create(FallAnimationActivity.this,
                    sounds[fakeindex]);
            mp.start();
            mp.setOnCompletionListener(new OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {

                    mp.release();// you missed this code
                }
            });