Попытка использовать два SeekBars с кнопками Pause / Play / Forward / Backward на одной и той же активности - PullRequest
0 голосов
/ 11 декабря 2018

Как видите, у меня проблемы.Я пытаюсь создать две панели поиска с кнопками паузы, воспроизведения, вперед и назад на обеих.Я посмотрел видео на YouTube о том, как его сделать, и сейчас пытаюсь сделать второй.Я пытался скопировать и вставить тот же код, но у меня есть ощущение, что я делаю что-то не так.Некоторые ошибки возникли с переменной «view» в первом onClick (который я сделал во-вторых.) Первый onClick я внедрил в программу.Может кто-нибудь сказать мне, что с этим делать?

package net.androidbootcamp.shepherdschurchapp;

import android.media.MediaPlayer;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;

public class Listen extends AppCompatActivity implements 
View.OnClickListener {

private Button btnPlay, btnBack, btnFor, btnPlay2, btnBack2, 
btnFor2;
private SeekBar seekBar, seekBar2;
private MediaPlayer mediaPlayer, mediaPlayer2;
private Runnable runnable;
private Handler handler, handler2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_listen);

    //SHOW ICON LAUNCHER
    ActionBar actionBar = getSupportActionBar();
    actionBar.setLogo(R.mipmap.ic_launcher);
    actionBar.setDisplayUseLogoEnabled(true);
    actionBar.setDisplayShowHomeEnabled(true);
    //


    btnPlay = findViewById(R.id.btnPlay);
    btnBack = findViewById(R.id.btnBack);
    btnFor = findViewById(R.id.btnFor);
    btnPlay2 = findViewById(R.id.btnPlay2);
    btnBack2 = findViewById(R.id.btnBack2);
    btnFor2 = findViewById(R.id.btnFor2);

    handler = new Handler();
    handler2 = new Handler();
    seekBar = findViewById(R.id.seekbar);
    seekBar2 = findViewById(R.id.seekbar2);
    mediaPlayer = MediaPlayer.create(this, R.raw.part1);
    mediaPlayer2 = MediaPlayer.create(this, R.raw.part2);

    btnFor.setOnClickListener(this);
    btnBack.setOnClickListener(this);
    btnPlay.setOnClickListener(this);

    mediaPlayer2.setOnPreparedListener(new 
MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            seekBar2.setMax(mediaPlayer2.getDuration());
            mediaPlayer2.start();
            changeSeekbar();
        }
    });



    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            seekBar.setMax(mediaPlayer.getDuration());
            mediaPlayer.start();
            changeSeekbar();
        }
    });

    seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            if(fromUser){
                mediaPlayer.seekTo(progress);
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

    private void changeSeekbar() {
        seekBar.setProgress(mediaPlayer2.getCurrentPosition());

        if(mediaPlayer2.isPlaying()){
            runnable = new Runnable() {
                @Override
                public void run() {
                    changeSeekbar();
                }
            };

            handler2.postDelayed(runnable, 1000);
        }
    }

    public void onClick(View view) {
        switch(view.getId()) {
            case R.id.btnPlay:
                if(mediaPlayer2.isPlaying()){
                    mediaPlayer.pause();
                    btnPlay2.setText(">");
                } else {
                    mediaPlayer2.start();
                    btnPlay2.setText("||");
                    changeSeekbar();
                }
                break;
            case R.id.btnFor2:
                mediaPlayer2.seekTo(mediaPlayer.getCurrentPosition()+5000);
                break;
            case R.id.btnBack2:
                mediaPlayer2.seekTo(mediaPlayer.getCurrentPosition()-5000);
        }
    }

seekBar.setOnSeekBarChangeListener(new 
SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, 
boolean fromUser) {
    if(fromUser){
        mediaPlayer.seekTo(progress);
    }
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}
});

}

private void changeSeekbar() {
    seekBar.setProgress(mediaPlayer.getCurrentPosition());

    if(mediaPlayer.isPlaying()){
        runnable = new Runnable() {
            @Override
            public void run() {
                changeSeekbar();
            }
        };

        handler.postDelayed(runnable, 1000);
    }
}

@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.btnPlay:
            if(mediaPlayer.isPlaying()){
                mediaPlayer.pause();
                btnPlay.setText(">");
            } else {
                mediaPlayer.start();
                btnPlay.setText("||");
                changeSeekbar();
            }
            break;
        case R.id.btnFor:

mediaPlayer.seekTo(mediaPlayer.getCurrentPosition()+5000);
            break;
        case R.id.btnBack:

mediaPlayer.seekTo(mediaPlayer.getCurrentPosition()-5000);
    }
}





}
...