Mediaplayer progress update to seekbar not smooth?

前端 未结 6 2080
情话喂你
情话喂你 2021-02-01 07:00

I am working on an app with recorder and player. I am using mediaplayer to play the recorded .wav file and meantime I want to update to a seekbar. Everything is working fine But

6条回答
  •  萌比男神i
    2021-02-01 07:32

    mMediaPlayer.getCurrentPosition() Return current Time in millisecond and you are updating this to Seekbar which maximum capacity is 100. Make one formula to with length of file and 100. try this function

        MediaPlayer mMediaPlayer = new MediaPlayer();
        final SeekBar mSeelBar = new SeekBar(this);
        final int duration = mMediaPlayer.getDuration();
        final int amoungToupdate = duration / 100;
        Timer mTimer = new Timer();
        mTimer.schedule(new TimerTask() {
    
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
    
                    @Override
                    public void run() {
                        if (!(amoungToupdate * mSeelBar.getProgress() >= duration)) {
                            int p = mSeelBar.getProgress();
                            p += 1;
                            mSeelBar.setProgress(p);
                        }
                    }
                });
            };
        }, amoungToupdate);
    

    And this process should be called when Media player start playing. inside

        mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
    
            @Override
            public void onPrepared(MediaPlayer mp) {
            **// call here**
            }
        });
    

    Update

    Update 125 times in seconds is not something you should do. Please increase your interval for updating SeekBar. I adding this after reading comments of NullPointer

提交回复
热议问题