【问题标题】:MediaPlayer having issues with playing only once within the list of imagesMediaPlayer 在图像列表中仅播放一次时遇到问题
【发布时间】:2017-08-26 19:06:17
【问题描述】:

我的 MediaPlayer 出现问题,我已将其设置为一键播放和暂停。

它在第一次点击任何位置时播放,但之后没有任何播放,它在 logcat 中显示:

java.lang.IllegalStateException
08-23 11:06:40.330 6482-9285/package.com W/System.err:     at android.media.MediaPlayer.nativeSetDataSource(Native Method)
08-23 11:06:40.330 6482-9285/package.com W/System.err:     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1078)
08-23 11:06:40.330 6482-9285/package.com W/System.err:     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:103

我在 CustomListAdapter 的 getView 方法中调用此方法,声音通过 TabActivities 由数组传入:

public void setTheSounds(ImageView playPause, final int position){
        try {
            Thread t = new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        if(!mp.isPlaying()){
                            mp.setDataSource(sound[+position]);
                            mp.prepare();
                            mp.start();
                        } else {
                            mp.pause();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        Log.e("GGGGGG", "prepare() failed");
                    }
                }
            });
            t.start();

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

【问题讨论】:

标签: java android android-studio android-fragments android-mediaplayer


【解决方案1】:

Click Hear。我认为它将帮助您处理媒体播放器回调。

【讨论】:

    【解决方案2】:

    您需要在传递新值之前重置媒体播放器对象。

    【讨论】:

    • 我有这个,但问题是用户可以暂停然后播放列表中的另一个 mp3,所以不能正常工作:public void onCompletion(MediaPlayer mp) { // TODO 自动生成的方法存根mp.reset(); } });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多