android音樂播放器常見操作
/*變量聲明*/ private ImageButton playBtn = null;//播放、暫停 private ImageButton latestBtn = null;//上一首 private ImageButton nextButton = null;//下一首 private ImageButton forwardBtn = null;//快進 private ImageButton rewindBtn = null;//快退 private TextView playtime = null;//已播放時間 private TextView durationTime = null;//歌曲時間 private SeekBar seekbar = null;//歌曲進度 private Handler handler = null;//用于進度條 private Handler fHandler = null;//用于快進 private int currentPosition;//當前播放位置 /*獲得列表傳過來的數據*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.play); Intent intent = this.getIntent(); Bundle bundle = intent.getExtras(); _ids = bundle.getIntArray("_ids"); //獲得保存音樂文件_ID的數組 position = bundle.getInt("position"); //獲得應該播放的音樂的號數,既播放第幾首 //代碼未完,見下面的代碼 } /*初始化控件*/ playtime = (TextView)findViewById(R.id.playtime); //顯示已經播放的時間 durationTime = (TextView)findViewById(R.id.duration); //顯示歌曲總時間 playBtn = (ImageButton)findViewById(R.id.playBtn); //開始播放、暫停播放按鈕 latestBtn = (ImageButton)findViewById(R.id.latestBtn); //播放上一首按鈕 nextButton = (ImageButton)findViewById(R.id.nextBtn); //播放下一首按鈕 forwardBtn = (ImageButton)findViewById(R.id.forwardBtn); //快進按鈕 rewindBtn = (ImageButton)findViewById(R.id.rewindBtn); //快退按鈕 seekbar = (SeekBar)findViewById(R.id.seekbar); //播放進度條 /*定義各控件的回調函數*/ playBtn.setOnClickListener(new View.OnClickListener() { //點擊“播放、暫停”按鈕時回調 @Override public void onClick(View v) { if (mp.isPlaying()){ //如果正在播放則暫停 pause(); playBtn.setBackgroundResource( R.drawable.play_selecor); //更改按鍵狀態圖標 } else{ //如果沒有播放則恢復播放 play(); playBtn.setBackgroundResource( R.drawable.pause_selecor); //更改按鍵狀態圖標 } } }); latestBtn.setOnClickListener(new View.OnClickListener() {//點擊“播放上一首”按鈕時回調 @Override public void onClick(View v) { int num = _ids.length; //獲得音樂的數目 if(position==0){ //如果已經時第一首則播放最后一首 position=num-1; }else{ //否則播放上一首 position-=1; } int pos = _ids[position]; //得到將要播放的音樂的_ID setup(); //做播放前的準備工作 play(); //開始播放 } }); nextButton.setOnClickListener(new View.OnClickListener(){//點擊“播放下一首”按鈕時回調 @Override public void onClick(View v) { int num = _ids.length; //獲得音樂的數目 if (position==num-1){ //如果已經是最后一首,則播放第一首 position=0; }else{ position+=1; //否則播放下一首 } int pos = _ids[position]; //得到將要播放的音樂的_ID setup(); //做播放前的準備工作 play(); //開始播放 } }); forwardBtn.setOnTouchListener(new OnTouchListener() { //點擊“快進”按鈕時回調 @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: fHandler.post(forward); //此處使用handler對象更新進度條 mp.pause(); //點擊快進按鈕時,音樂暫停播放 break; case MotionEvent.ACTION_UP: fHandler.removeCallbacks(forward); mp.start(); //松開快進按鈕時,音樂暫恢復播放 playBtn.setBackgroundResource( R.drawable.pause_selecor); break; } return false; } }); rewindBtn.setOnTouchListener(new OnTouchListener() { //點擊“快退”按鈕時回調 @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: fHandler.post(rewind); mp.pause(); //點擊快退按鈕時,音樂暫暫停播放 break; case MotionEvent.ACTION_UP: fHandler.removeCallbacks(rewind); mp.start(); //松開快退按鈕時,音樂暫恢復播放 playBtn.setBackgroundResource( R.drawable.pause_selecor); break; } return false; } }); seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { mp.start(); //停止拖動進度條時,音樂開始播放 } @Override public void onStartTrackingTouch(SeekBar seekBar) { mp.pause(); //開始拖動進度條時,音樂暫停播放 } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if(fromUser){ mp.seekTo(progress); //當進度條的值改變時,音樂播放器從新的位置開始播放 } } |
posted @ 2011-04-28 20:06 haojinlian 閱讀(1308) | 評論 (0) | 編輯 收藏