안드로이드 개발 질문/답변
(글 수 45,052)
mp3재생을 하면서
밑에 seekbar를 이용해서 움직이는 대로 mp3로 움직여서(? 이동해서..)재생 되게 하고 있는데
음악이 시작 되면 seekbar도 같이 움직여야 되는데 이게 안되네요,..... ㅠ
이것만 하면 완성인데.. seekbar가 멈춰 있네요;;;ㅠ
package dku.android.dankook;
import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.SeekBar; import android.widget.TextView;
public class dankook extends Activity implements OnClickListener { MediaPlayer mp; TextView tv; Button bt, bt1 ; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
// ID값 넣어줌. tv = (TextView)findViewById(R.id.time); bt = (Button)findViewById(R.id.but); bt.setOnClickListener(this); bt1 = (Button)findViewById(R.id.but1); bt1.setOnClickListener(this); m_sb = (SeekBar)findViewById(R.id.SeekBar01); m_textProgress = (TextView)findViewById(R.id.myTextView); m_textTracking = (TextView)findViewById(R.id.myTextView2); mp = MediaPlayer.create(this, R.raw.rihanna);
//SeekBar 배경색깔. m_sb.setBackgroundColor(0xffff5050); int aa = mp.getDuration(); //seekbar 에 대한 change 이벤트처리 String mp3time = changeToMinutes(aa); tv.setText(mp3time); m_sb.setMax(mp.getDuration()); m_sb.setOnSeekBarChangeListener(listenGenerator); m_sb.incrementProgressBy(1); }
//thumb 에 대한 메세지이며 아래의 함수들은 자동으로 override 되어 생김. private SeekBar.OnSeekBarChangeListener listenGenerator = new SeekBar.OnSeekBarChangeListener() { @Override //thumb 을 놓았을때 날라오는 메세지 public void onStopTrackingTouch(SeekBar seekBar) { m_textTracking.setText(new StringBuilder() .append("Tracking Stop")); } @Override //thumb 을 잡았을때 날라오는 메세지 public void onStartTrackingTouch(SeekBar seekBar) {
m_textTracking.setText(new StringBuilder() .append("Tracking Start")); } @Override //thumb 의 위치가 변경될 때마다 오는 메세지 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { songtime = progress; } };
private SeekBar m_sb; private TextView m_textProgress; private TextView m_textTracking; private static int songtime; private String changeToMinutes(int mseconds) { int min = 0; int sec = 0; String minStr = ""; String secStr = ""; min = (int) Math.floor(mseconds/(1000*60)); sec = (int) Math.floor((mseconds-(1000*60)*min)/1000); minStr = min < 10 ? "0"+min:""+min; secStr = sec < 10 ? "0"+sec:""+sec; return minStr+":"+secStr; } @Override public void onClick(View v) { // TODO Auto-generated method stub if(v == bt){ mp.seekTo(songtime); String ab = changeToMinutes(songtime); mp.start(); m_sb.incrementProgressBy(mp.getCurrentPosition()); // TODO Auto-generated method stub m_textProgress.setText( new StringBuilder().append(ab)); } else if(v == bt1){ mp.stop(); } } }