Android MediaPlayer没有调用已注册的监听器
创始人
2024-09-30 12:00:25
0

要解决Android MediaPlayer没有调用已注册的监听器的问题,可以按照以下步骤进行:

  1. 确保正确注册监听器:在使用MediaPlayer之前,要确保已经正确注册了监听器。通常,需要注册OnPreparedListener、OnCompletionListener、OnErrorListener等监听器。
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        // 处理MediaPlayer准备完成事件
    }
});

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // 处理MediaPlayer播放完成事件
    }
});

mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // 处理MediaPlayer错误事件
        return false;
    }
});
  1. 确认MediaPlayer状态:在MediaPlayer中,有一些特定的状态需要关注,比如PREPARED、COMPLETED、ERROR等。在使用MediaPlayer时,可以通过检查当前状态来判断是否已经调用了相应的监听器。
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        if (mediaPlayer.getState() == MediaPlayer.State.PREPARED) {
            // 处理MediaPlayer准备完成事件
        }
    }
});

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        if (mediaPlayer.getState() == MediaPlayer.State.COMPLETED) {
            // 处理MediaPlayer播放完成事件
        }
    }
});

mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        if (mediaPlayer.getState() == MediaPlayer.State.ERROR) {
            // 处理MediaPlayer错误事件
        }
        return false;
    }
});
  1. 使用Handler或主线程进行回调:如果MediaPlayer没有在合适的时间调用注册的监听器,可以考虑使用Handler或在主线程中进行回调。
Handler handler = new Handler(Looper.getMainLooper());

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                // 处理MediaPlayer准备完成事件
            }
        });
    }
});

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                // 处理MediaPlayer播放完成事件
            }
        });
    }
});

mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                // 处理MediaPlayer错误事件
            }
        });
        return false;
    }
});

通过以上方法,可以确保MediaPlayer在适当的时机调用已注册的监听器,并处理相应的播放事件。

相关内容

热门资讯

4分钟详细!大发棋牌辅助,约战... 4分钟详细!大发棋牌辅助,约战沙城辅助脚本(一贯是有挂)-哔哩哔哩1)约战沙城辅助脚本辅助挂:进一步...
2分钟揭露!川娱竞技血战辅助,... 2分钟揭露!川娱竞技血战辅助,广西八一字牌可以破解吗(本来是有挂)-哔哩哔哩1)广西八一字牌可以破解...
三分钟分享!福州十八扑插件,微... 三分钟分享!福州十八扑插件,微信茶馆辅助(总是真的有挂)-哔哩哔哩1、三分钟分享!福州十八扑插件,微...
第二分钟普及!九游辅助插件,吉... 第二分钟普及!九游辅助插件,吉祥填大坑有什么诀窍(竟然真的是有挂)-哔哩哔哩1、上手简单,内置详细流...
第2分钟解迷!四川微乐小程序辅... 第2分钟解迷!四川微乐小程序辅助器,天天微友有辅助吗(切实存在有挂)-哔哩哔哩所有人都在同一条线上,...
九分钟曝光!途游辅助软件,传送... 九分钟曝光!途游辅助软件,传送屋高仿版辅助(切实真的有挂)-哔哩哔哩1)传送屋高仿版辅助辅助挂:进一...
4分钟外挂!边锋微信小程序,四... 4分钟外挂!边锋微信小程序,四川途游辅助软件下载,2025新版(有挂方式)-哔哩哔哩1、下载好四川途...
第4分钟普及!家乡大二辅助,四... 第4分钟普及!家乡大二辅助,四川游戏家园通用辅助(其实有挂)-哔哩哔哩1、四川游戏家园通用辅助系统规...
第四分钟外挂!皮皮跑胡子修改器... 第四分钟外挂!皮皮跑胡子修改器,友友联盟免费辅助器,安装教程(有挂方法)-哔哩哔哩1、进入到友友联盟...
第8分钟详情!方片十三张源码,... 第8分钟详情!方片十三张源码,河洛杠次脚本开发(一贯有挂)-哔哩哔哩1)河洛杠次脚本开发辅助挂:进一...