2016-07-18 15 views
1

私は音楽を再生し、 "再生"を示しているボタンを開始位置にリセットしたいシークバーを開始位置にリセットしたい...再生の問題を...コードは 私は、音楽が再生され、 "再生"を示すボタン

はここ

ekdanta.java

public class ekdanta extends AppCompatActivity implements Runnable, View.OnClickListener,SeekBar.OnSeekBarChangeListener { 
    TextView tv4; 
    Button b9, b10,but19; 
    int count = 0; 
    MediaPlayer play; 
    SeekBar seek_bar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_ekdanta); 
    tv4 = (TextView) findViewById(R.id.textView9); 
    tv4.setTextSize((float)21.5); 
    tv4.setText(Html.fromHtml(getString(R.string.thirteen))); 
    b9 = (Button) findViewById(R.id.b9); 
    b10 = (Button) findViewById(R.id.b10); 
    seek_bar = (SeekBar) findViewById(R.id.seekBar); 
    seek_bar.setOnSeekBarChangeListener(this); 
    seek_bar.setEnabled(false); 
    but19 = (Button) findViewById(R.id.button19); 
    but19.setOnClickListener(this); 
} 

public void run() { 
    int currentPosition= play.getCurrentPosition(); 
    int total = play.getDuration(); 
    while (play!=null && currentPosition<total) { 
     try { 
      Thread.sleep(1000); 
      currentPosition= play.getCurrentPosition(); 
     } catch (InterruptedException e) { 
      return; 
     } catch (Exception e) { 
      return; 
     } 
     seek_bar.setProgress(currentPosition); 
    } 
} 

public void onClick(View v) { 
    if (v.equals(but19)) { 
     if (play == null) { 
      play = MediaPlayer.create(getApplicationContext(), R.raw.ekadanta); 
      seek_bar.setEnabled(true); 
     } 
     if (play.isPlaying()) { 
      play.pause(); 
      but19.setText("Play"); 
     } else { 
      play.start(); 
      but19.setText("Pause"); 
      seek_bar.setMax(play.getDuration()); 
      new Thread(this).start(); 
     } 
    } 
} 


@Override 
protected void onPause() { 
    if(play!=null){ 
     play.stop(); 
    } 
    super.onPause(); 
} 

public void increase(View inc) { 
    count++; 
    if (count == 1) { 
     tv4.setTextSize(25); 
    } else if (count == 2) { 
     tv4.setTextSize(30); 
    } else if (count >= 3) { 
     count = 3; 
     tv4.setTextSize(40); 
    } 
} 

public void decrease(View dec) { 
    count--; 
    if (count <= 0) { 
     tv4.setTextSize((float)21.5); 
     count = 0; 
    } 
    if (count == 1) { 
     tv4.setTextSize(25); 
    } else if (count == 2) { 
     tv4.setTextSize(30); 
    } else if (count == 3) { 
     tv4.setTextSize(40); 
    } 
} 

@Override 
public void onProgressChanged(SeekBar seek_bar, int progress, boolean fromUser) { 
    try{ 
     if(play.isPlaying()||play!=null){ 
      if (fromUser) 
       play.seekTo(progress); 
     } 
     else if(play==null){ 
      Toast.makeText(getApplicationContext(),"First Play", Toast.LENGTH_SHORT).show(); 
      seek_bar.setProgress(0); 
     } 
    } 
    catch(Exception e){ 
     Log.e("seek bar",""+e); 
     seek_bar.setEnabled(false); 
    } 
} 

@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 

} 

@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 

} 
} 

答えて

1

MediaPlayerが持っている私のコードです...バーが音楽を演奏行われ、ボタンはまだ示して「一時停止」後の終了位置にとどまる求めるということですonCompletionListener()を得て、それを使うことができます。ハンドラを使用するコードは信頼性が高くないので、それをリファクタリングする方がよいでしょう。

mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    @Override 
    public void onCompletion(MediaPlayer mp) { 
     // do whatever you want 
    } 
}); 
+0

Slanecekはコードを書いて表示してください.... onCompletionListener()はrun()に来るべきですか? – Devk

+0

okがそれを得た..... play.setOnCompletionListener(新MediaPlayer.OnCompletionListener(){@Override ます。public void onCompletion(MediaPlayerの融点){ play.seekTo(0); but19.setTextは( "再生します")。 } – Devk

関連する問題