博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android音乐播放器常见操作
阅读量:4947 次
发布时间:2019-06-11

本文共 3681 字,大约阅读时间需要 12 分钟。

/*变量声明*/
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);   
//当进度条的值改变时,音乐播放器从新的位置开始播放
        
}
    
}
});

转载于:https://www.cnblogs.com/raker/archive/2012/11/06/2757834.html

你可能感兴趣的文章
url传参
查看>>
【转】Simulink模型架构指导
查看>>
MYSQL数据库的导出的几种方法
查看>>
SQL Server-5种常见的约束
查看>>
硬件之美
查看>>
Jdk1.8 HashMap源码分析
查看>>
新环境安装 python3
查看>>
牛客多校第三场 G Removing Stones(分治+线段树)
查看>>
[转载]java开发中的23种设计模式
查看>>
arm:启动代码判断是从nand启动还是从norflash启动,拷贝程序到内存的过程
查看>>
洛谷 P1308 统计单词数【字符串处理】
查看>>
C#中的继承
查看>>
表格的拖拽功能
查看>>
再回首Java第十八天
查看>>
QT5:QSS
查看>>
OpenCV2:幼儿园篇 第二章 读取图像
查看>>
搞好团队建设的致胜法宝
查看>>
实验二
查看>>
函数的形参和实参
查看>>
数据科学从业者常见的不良小习惯
查看>>