android音乐播放器的惯用操作
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
|
});
|