android–Mediaplayer setOnCompletionListener重复调用

android–Mediaplayer setOnCompletionListener重复调用,第1张

概述在我的应用程序中,我在listview中显示我的音频文件,并且当listitem特定文件的点击必须在listbar单元格中使用seekbar播放时.但现在我想在播放结束时更新ui.我使用了onCompletionListener,但在重放开始时会重复调用.    这是我的代码privatevoidstartPlayBack(finalMessag

在我的应用程序中,我在ListvIEw中显示我的音频文件,并且当Listitem特定文件的点击必须在Listbar单元格中使用seekbar播放时.但现在我想在播放结束时更新ui.
我使用了onCompletionListener,但在重放开始时会重复调用.
    这是我的代码

private voID startPlayBack(final MessagesAdapter.VIEwHolder vIEwHolder){        try {            if(mMediaPlayer!=null){                if(mMediaPlayer.isPlaying()) {                    mMediaPlayer.stop();                }            }            mMediaPlayer.reset();            mMediaPlayer.setDataSource(vIEwHolder.mChatMessage.mMessages);            mMediaPlayer.prepareAsync();        } catch (IOException e) {            Log.i("audioplay", "IOException *************",e);        }catch (IllegalStateException e) {            Log.i("audioplay", "IllegalStateException *************",e);        }        mMediaPlayer.setonPreparedListener(new MediaPlayer.OnPreparedListener() {            @OverrIDe            public voID onPrepared(MediaPlayer mediaPlayer) {                vIEwHolder.mAudioPlayBtn.setVisibility(VIEw.VISIBLE);                vIEwHolder.mAudioPlayBtn.setimageDrawable(mContext.getResources().getDrawable(R.drawable.audio_close));                mMediaPlayer.setLooPing(false);                mMediaPlayer.start();            }        });        mMediaPlayer.setonCompletionListener(new MediaPlayer.OnCompletionListener() {            @OverrIDe            public voID onCompletion(MediaPlayer mediaPlayer) {                Log.i("Completion Listener", "audio Completed");            }        });        vIEwHolder.mAudioSeekbar.setonSeekbarchangelistener(new Seekbar.OnSeekbarchangelistener() {            @OverrIDe            public voID onStopTrackingtouch(Seekbar seekbar) {            }            @OverrIDe            public voID onStartTrackingtouch(Seekbar seekbar) {            }            @OverrIDe            public voID onProgressChanged(Seekbar seekbar, int progress, boolean fromUser) {                if (mMediaPlayer != null && fromUser) {                    mMediaPlayer.seekTo(progress * 1000);                    mMediaPlayer.start();                }            }        });        seekUpdation(vIEwHolder);    }

这是获取的日志信息,

08-20 07:28:24.099  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:24.099  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:24.099  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:24.103  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:24.107  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:24.107  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:25.739  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:26.415  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:26.415  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:26.419  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:26.419  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:27.323  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed08-20 07:28:27.959  14873-14873/com.cybosol.sabanet I/Completion Listener﹕ audio Completed

解决方法:

在VIEwPager中使用MediaPlayers时遇到了类似的问题.事实证明,MediaPlayers遇到了一个错误,导致调用OnCompletionListener.从OnErrorListener documentation:

Returns

True if the method handled the error, false if it dIDn’t. Returning false, or not having an one rrorListener at all, will cause the OnCompletionListener to be called.

为MediaPlayers实现一个OnErrorListener,以防止对OnCompletionListener进行无关的调用.

总结

以上是内存溢出为你收集整理的android – Mediaplayer setOnCompletionListener重复调用全部内容,希望文章能够帮你解决android – Mediaplayer setOnCompletionListener重复调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1119959.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存