android音樂播放器的常用操作
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 |
}); |
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!