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在适当的时机调用已注册的监听器,并处理相应的播放事件。

相关内容

热门资讯

教你透视!pokemmo辅助器... 教你透视!pokemmo辅助器手机版下载,impoker辅助(透视)其实真的是有辅助app(哔哩哔哩...
关于透视!竞技联盟透视,uup... 关于透视!竞技联盟透视,uupoker透视(透视)果然是真的有辅助app(哔哩哔哩)1、玩家可以在竞...
了解透视!佛手在线大菠萝智能辅... 了解透视!佛手在线大菠萝智能辅助器,拱趴大菠萝辅助神器(透视)一贯存在有辅助方法(哔哩哔哩)1、完成...
必备透视!线上德州的辅助器是什... 必备透视!线上德州的辅助器是什么,epoker透视底牌(透视)原来一直总是有辅助攻略(哔哩哔哩)1、...
分享透视!红龙poker辅助,... 分享透视!红龙poker辅助,拱趴大菠萝挂(透视)一直是真的有辅助软件(哔哩哔哩)1、金币登录送、破...
必备透视!pokemmo内置修... 必备透视!pokemmo内置修改器,约局吧能不能开挂(透视)原来存在有辅助app(哔哩哔哩)1、首先...
关于透视!wepoker安装教... 关于透视!wepoker安装教程,哈糖大菠萝能开挂吗(透视)果然一直都是有辅助工具(哔哩哔哩)1、上...
解谜透视!poker mast... 解谜透视!poker master辅助,德州圈脚本(透视)竟然存在有辅助插件(哔哩哔哩)1、每一步都...
有挂透视!sohoo poke... 有挂透视!sohoo poker辅助器,德州透视是真的吗(透视)原来是真的有辅助插件(哔哩哔哩)1、...
推荐透视!佛手在线是不是有挂,... 推荐透视!佛手在线是不是有挂,poker world辅助器(透视)一直真的有辅助app(哔哩哔哩)1...