android上的Seekbar不会自动移动

android上的Seekbar不会自动移动,第1张

概述我想创建一个跟踪媒体播放器进度的搜索栏,但它不能很好地工作,音乐正在播放,但搜索栏保持空闲状态.有什么东西我遗漏了吗? public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); seekBar = 我想创建一个跟踪媒体播放器进度的搜索栏,但它不能很好地工作,音乐正在播放,但搜索栏保持空闲状态.有什么东西我遗漏了吗?

public voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.main);    seekbar = (Seekbar) findVIEwByID(R.ID.seekbar1);    seekbar.setonSeekbarchangelistener(this);}public voID onClick(VIEw v){    if(v == stopbutton){        mediaPlayer.pause();    }else if(v == startbutton){        mediaPlayer.start();        run();    }else if(v == quitbutton ){        mediaPlayer.stop();        mediaPlayer.release();    }}public voID run() {    int currentposition= 0;    int total = mediaPlayer.getDuration();    while (mediaPlayer.isPlaying()) {        currentposition= mediaPlayer.getCurrentposition();                   seekbar.setProgress(currentposition);    }}
解决方法 在 Android Building Audio Player Tutorial中,请参阅更新Seekbar进度和计时器一节

/**     * Update timer on seekbar     * */    public voID updateProgressbar() {        mHandler.postDelayed(mUpdateTiMetask,100);    }       /**     * Background Runnable thread     * */    private Runnable mUpdateTiMetask = new Runnable() {           public voID run() {               long totalDuration = mp.getDuration();               long currentDuration = mp.getCurrentposition();               // displaying Total Duration time               songTotalDurationLabel.setText(""+utils.milliSecondsToTimer(totalDuration));               // displaying time completed playing               songCurrentDurationLabel.setText(""+utils.milliSecondsToTimer(currentDuration));               // Updating progress bar               int progress = (int)(utils.getProgresspercentage(currentDuration,totalDuration));               //Log.d("Progress",""+progress);               songProgressbar.setProgress(progress);               // Running this thread after 100 milliseconds               mHandler.postDelayed(this,100);           }        };    /**     *     * */    @OverrIDe    public voID onProgressChanged(Seekbar seekbar,int progress,boolean fromtouch) {    }    /**     * When user starts moving the progress handler     * */    @OverrIDe    public voID onStartTrackingtouch(Seekbar seekbar) {        // remove message Handler from updating progress bar        mHandler.removeCallbacks(mUpdateTiMetask);    }    /**     * When user stops moving the progress hanlder     * */    @OverrIDe    public voID onStopTrackingtouch(Seekbar seekbar) {        mHandler.removeCallbacks(mUpdateTiMetask);        int totalDuration = mp.getDuration();        int currentposition = utils.progresstoTimer(seekbar.getProgress(),totalDuration);        // forward or backward to certain seconds        mp.seekTo(currentposition);        // update timer progress again        updateProgressbar();    }
总结

以上是内存溢出为你收集整理的android上的Seekbar不会自动移动全部内容,希望文章能够帮你解决android上的Seekbar不会自动移动所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存