【问题标题】:how to make reset button automatically play again when its clicked?如何使重置按钮在单击时自动再次播放?
【发布时间】:2017-10-31 07:10:53
【问题描述】:

另一件事是 seekBar 的计时器,它在音频文件的持续时间内,其中的问题是音频文件(迷你)每 1 秒停止一次,所以如何让搜索栏每秒更新一次而不做任何停止

        seekBar2.setMax(mediaPlayer.getDuration());
        seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            mediaPlayer.seekTo(progress);

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

        new Timer().scheduleAtFixedRate(new TimerTask() {
        @Override

        public void run() {
            seekBar2.setProgress(mediaPlayer.getCurrentPosition());
        }
    },0,1000);
    public void reset(View v) {
        mediaPlayer.reset();
    }

【问题讨论】:

    标签: java android android-mediaplayer android-seekbar


    【解决方案1】:

    试试这个重置你的媒体播放器

    public void reset(View v) {
           mediaPlayer.seekTo(0);
           mediaPlayer.start();
    }
    

    试试这个来更新你的搜索栏

        private Handler mHandler = new Handler();
    //you have to  update Seekbar on UI thread
    Your.Activity.this.runOnUiThread(new Runnable() {
    
        @Override
        public void run() {
            if(mediaPlayer != null){
                int mCurrentPosition = mediaPlayer.getCurrentPosition() / 1000;
                seekBar2.setProgress(mCurrentPosition);
            }
            mHandler.postDelayed(this, 1000);
        }
    });
    

    当您需要在用户拖动您的SeekBar 时更新MediaPlayer 的位置时,请使用以下代码

    seekBar2.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(mediaPlayer != null && fromUser){
                        mediaPlayer.seekTo(progress * 1000);
                    }
                }
        });
    

    【讨论】:

    • 感谢 Nilesh,但 seekBar 仍然无法正常工作,因为它现在应该是问题所在,就像多次重复同一个单词
    • 你能解释一下吗@Beginner
    • 我已经复制了代码,结果是音频文件在每 1 秒播放一次时会重复多次
    猜你喜欢
    • 1970-01-01
    • 2020-06-15
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多