0

おそらく明らかな何かが欠けていることに気づきましたが、基本的にはトラックを再生する MediaPlayer を作成しました。最後に、メディア プレーヤーを停止し、リセットし、シークバーをゼロに戻します。トラックの最後では、onCompletion メソッドが機能していないようです。基本的に、シークバーはゼロに戻りません。シークバーは正常に更新されているので、シークバーを更新するメソッドとは関係なく、onCompletion と関係があると確信しています。アドバイスをお願いします。

public class RelaxPlayer extends Activity implements OnCompletionListener, SeekBar.OnSeekBarChangeListener {

    private Handler mHandler = new Handler();;
    private Utilities utils;

    private MediaPlayer myMediaPlayer;
    private SeekBar songProgressBar;
    private TextView songCurrentDurationLabel;
    private TextView songTotalDurationLabel;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_relax_player);
    songProgressBar = (SeekBar) findViewById(R.id.seekBar1);

    songCurrentDurationLabel = (TextView) findViewById(R.id.songCurrentDurationLabel);
    songTotalDurationLabel = (TextView) findViewById(R.id.songTotalDurationLabel);

    // Mediaplayer
    myMediaPlayer = new MediaPlayer();

    utils = new Utilities();

    // Listeners
    songProgressBar.setOnSeekBarChangeListener(this); 
    myMediaPlayer.setOnCompletionListener(this); // 



    myMediaPlayer = MediaPlayer.create(RelaxPlayer.this, R.raw.bounce);


    Button myButtonOne = (Button) findViewById(R.id.button1);
    myButtonOne.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (myMediaPlayer.isPlaying()){
                if(myMediaPlayer!=null){
                    myMediaPlayer.pause();
                    //add code to change button text
                }
            } else{
                if(myMediaPlayer!=null){

            myMediaPlayer.start();
            songProgressBar.setProgress(0);
            songProgressBar.setMax(100);
            updateProgressBar();
            //add code to change text
                }
        }
            //more code that I won't copy here...but later
          @Override
public void onCompletion(MediaPlayer arg0) {

   myMediaPlayer.pause();

   myMediaPlayer.seekTo(0);

   songProgressBar.setProgress(0);// this then calls method which will update the seek bar
   updateProgressBar();


}
4

1 に答える 1

0

次の行でメディア プレーヤーを再作成しています。

 myMediaPlayer = MediaPlayer.create(RelaxPlayer.this, R.raw.bounce);

したがって、setOnCompletionListener は別のメディア プレーヤー インスタンス用です。

あなたはおそらく欲しい:

    utils = new Utilities();

    // Listeners
    songProgressBar.setOnSeekBarChangeListener(this);

    myMediaPlayer = MediaPlayer.create(this, R.raw.bounce);
    myMediaPlayer.setOnCompletionListener(this);

    Button myButtonOne = (Button) findViewById(R.id.button1);
于 2013-07-28T12:41:15.027 に答える