1. [代碼]變量申明
01
/*變量聲明*/
02
private ImageButton playBtn = null;//播放、暫停
03
private ImageButton latestBtn = null;//上一首
04
private ImageButton nextButton = null;//下一首
05
private ImageButton forwardBtn = null;//快進
06
private ImageButton rewindBtn = null;//快退
07
private TextView playtime = null;//已播放時間
08
private TextView durationTime = null;//歌曲時間
09
private SeekBar seekbar = null;//歌曲進度
10
private Handler handler = null;//用於進度條
11
private Handler fHandler = null;//用於快進
12
private int currentPosition;//當前播放位置
2. [代碼]獲得上一個activity傳來的數據
01
@Override
02
protected void onCreate(Bundle savedInstanceState) {
03
super.onCreate(savedInstanceState);
04
setContentView(R.layout.play);
05
Intent intent = this.getIntent();
06
Bundle bundle = intent.getExtras();
07
_ids = bundle.getIntArray("_ids"); //獲得保存音樂文件_ID的數組
08
position = bundle.getInt("position"); //獲得應該播放的音樂的號數,既播放第幾首
09
//代碼未完,見下面的代碼
10
}
3. [代碼]初始化控件
1
playtime = (TextView)findViewById(R.id.playtime); //顯示已經播放的時間
2
durationTime = (TextView)findViewById(R.id.duration); //顯示歌曲總時間
3
playBtn = (ImageButton)findViewById(R.id.playBtn); //開始播放、暫停播放按鈕
4
latestBtn = (ImageButton)findViewById(R.id.latestBtn); //播放上一首按鈕
5
nextButton = (ImageButton)findViewById(R.id.nextBtn); //播放下一首按鈕
6
forwardBtn = (ImageButton)findViewById(R.id.forwardBtn); //快進按鈕
7
rewindBtn = (ImageButton)findViewById(R.id.rewindBtn); //快退按鈕
8
seekbar = (SeekBar)findViewById(R.id.seekbar); //播放進度條
4. [代碼]定義各控件的回調函數 跳至 [1] [2] [3] [4] [全屏預覽]
001
playBtn.setOnClickListener(new View.OnClickListener() { //點擊“播放、暫停”按鈕時回調
002
@Override
003
public void onClick(View v) {
004
if (mp.isPlaying()){ //如果正在播放則暫停
005
pause();
006
playBtn.setBackgroundResource(
007
R.drawable.play_selecor); //更改按鍵狀態圖標
008
} else{ //如果沒有播放則恢復播放
009
play();
010
playBtn.setBackgroundResource(
011
R.drawable.pause_selecor); //更改按鍵狀態圖標
012
013
}
014
}
015
});
016
017
latestBtn.setOnClickListener(new View.OnClickListener() {//點擊“播放上一首”按鈕時回調
018
@Override
019
public void onClick(View v) {
020
int num = _ids.length; //獲得音樂的數目
021
if(position==0){ //如果已經時第一首則播放最後一首
022
position=num-1;
023
}else{ //否則播放上一首
024
position-=1;
025
}
026
int pos = _ids[position]; //得到將要播放的音樂的_ID
027
setup(); //做播放前的准備工作
028
play(); //開始播放
029
}
030
});
031
032
nextButton.setOnClickListener(new View.OnClickListener(){//點擊“播放下一首”按鈕時回調
033
@Override
034
public void onClick(View v) {
035
int num = _ids.length; //獲得音樂的數目
036
if (position==num-1){ //如果已經是最後一首,則播放第一首
037
position=0;
038
}else{
039
position+=1; //否則播放下一首
040
}
041
int pos = _ids[position]; //得到將要播放的音樂的_ID
042
setup(); //做播放前的准備工作
043
play(); //開始播放
044
}
045
});
046
047
forwardBtn.setOnTouchListener(new OnTouchListener() { //點擊“快進”按鈕時回調
048
@Override
049
public boolean onTouch(View v, MotionEvent event) {
050
switch (event.getAction()) {
051
case MotionEvent.ACTION_DOWN:
052
fHandler.post(forward); //此處使用handler對象更新進度條
053
mp.pause(); //點擊快進按鈕時,音樂暫停播放
054
break;
055
056
case MotionEvent.ACTION_UP:
057
fHandler.removeCallbacks(forward);
058
mp.start(); //松開快進按鈕時,音樂暫恢復播放
059
playBtn.setBackgroundResource(
060
R.drawable.pause_selecor);
061
break;
062
}
063
return false;
064
}
065
});
066
067
rewindBtn.setOnTouchListener(new OnTouchListener() { //點擊“快退”按鈕時回調
068
@Override
069
public boolean onTouch(View v, MotionEvent event) {
070
switch (event.getAction()) {
071
case MotionEvent.ACTION_DOWN:
072
fHandler.post(rewind);
073
mp.pause(); //點擊快退按鈕時,音樂暫暫停播放
074
break;
075
076
case MotionEvent.ACTION_UP:
077
fHandler.removeCallbacks(rewind);
078
mp.start(); //松開快退按鈕時,音樂暫恢復播放
079
playBtn.setBackgroundResource(
080
R.drawable.pause_selecor);
081
break;
082
}
083
return false;
084
}
085
});
086
087
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
088
@Override
089
public void onStopTrackingTouch(SeekBar seekBar) {
090
mp.start(); //停止拖動進度條時,音樂開始播放
091
}
092
@Override
093
public void onStartTrackingTouch(SeekBar seekBar) {
094
mp.pause(); //開始拖動進度條時,音樂暫停播放
095
}
096
097
@Override
098
public void onProgressChanged(SeekBar seekBar, int progress,
099
boolean fromUser) {
100
if(fromUser){
101
mp.seekTo(progress); //當進度條的值改變時,音樂播放器從新的位置開始播放
102
}
103
}
104
});