Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 580|回复: 0

[实例教程]android音乐播放器常见操作

[复制链接]

该用户从未签到

发表于 2011-10-22 14:21:24 | 显示全部楼层 |阅读模式
  1. /*变量声明*/
  2. private ImageButton playBtn = null;//播放、暂停
  3. private ImageButton latestBtn = null;//上一首
  4. private ImageButton nextButton = null;//下一首
  5. private ImageButton forwardBtn = null;//快进
  6. private ImageButton rewindBtn = null;//快退
  7. private TextView playtime = null;//已播放时间
  8. private TextView durationTime = null;//歌曲时间
  9. private SeekBar seekbar = null;//歌曲进度
  10. private Handler handler = null;//用于进度条
  11. private Handler fHandler = null;//用于快进
  12. private int currentPosition;//当前播放位置
  13. /*获得列表传过来的数据*/
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16.         super.onCreate(savedInstanceState);
  17.         setContentView(R.layout.play);
  18.         Intent intent = this.getIntent();
  19.         Bundle bundle = intent.getExtras();
  20.         _ids = bundle.getIntArray("_ids");    //获得保存音乐文件_ID的数组
  21.         position = bundle.getInt("position"); //获得应该播放的音乐的号数,既播放第几首
  22.         //代码未完,见下面的代码
  23. }
  24. /*初始化控件*/
  25. playtime = (TextView)findViewById(R.id.playtime);         //显示已经播放的时间
  26. durationTime = (TextView)findViewById(R.id.duration);     //显示歌曲总时间
  27. playBtn = (ImageButton)findViewById(R.id.playBtn);       //开始播放、暂停播放按钮
  28. latestBtn = (ImageButton)findViewById(R.id.latestBtn);   //播放上一首按钮
  29. nextButton = (ImageButton)findViewById(R.id.nextBtn);    //播放下一首按钮
  30. forwardBtn = (ImageButton)findViewById(R.id.forwardBtn); //快进按钮
  31. rewindBtn = (ImageButton)findViewById(R.id.rewindBtn);   //快退按钮
  32. seekbar = (SeekBar)findViewById(R.id.seekbar);           //播放进度条
  33. /*定义各控件的回调函数*/
  34. playBtn.setOnClickListener(new View.OnClickListener() {        //点击“播放、暂停”按钮时回调
  35.         @Override
  36.         public void onClick(View v) {                                 
  37.                 if (mp.isPlaying()){                     //如果正在播放则暂停
  38.                         pause();
  39.                         playBtn.setBackgroundResource(
  40.                              R.drawable.play_selecor);   //更改按键状态图标
  41.                 } else{                                  //如果没有播放则恢复播放
  42.                         play();
  43.                         playBtn.setBackgroundResource(
  44.                             R.drawable.pause_selecor);   //更改按键状态图标
  45.                                          
  46.                 }
  47.         }
  48. });
  49. latestBtn.setOnClickListener(new View.OnClickListener() {//点击“播放上一首”按钮时回调                        
  50.         @Override
  51.         public void onClick(View v) {
  52.                 int num = _ids.length;                  //获得音乐的数目
  53.                 if(position==0){                        //如果已经时第一首则播放最后一首
  54.                         position=num-1;                                                                                 
  55.                 }else{                                  //否则播放上一首
  56.                         position-=1;
  57.                 }
  58.                 int pos = _ids[position];              //得到将要播放的音乐的_ID
  59.                 setup();                               //做播放前的准备工作
  60.                 play();                                       //开始播放
  61.         }
  62. });
  63. nextButton.setOnClickListener(new View.OnClickListener(){//点击“播放下一首”按钮时回调                        
  64.         @Override
  65.         public void onClick(View v) {                 
  66.                 int num = _ids.length;                 //获得音乐的数目
  67.                 if (position==num-1){                  //如果已经是最后一首,则播放第一首
  68.                         position=0;
  69.                 }else{
  70.                         position+=1;                  //否则播放下一首
  71.                 }
  72.                 int pos = _ids[position];             //得到将要播放的音乐的_ID
  73.                 setup();                              //做播放前的准备工作
  74.                 play();                               //开始播放
  75.         }
  76. });
  77. forwardBtn.setOnTouchListener(new OnTouchListener() {    //点击“快进”按钮时回调
  78.         @Override
  79.         public boolean onTouch(View v, MotionEvent event) {
  80.                 switch (event.getAction()) {
  81.                         case MotionEvent.ACTION_DOWN:
  82.                                 fHandler.post(forward); //此处使用handler对象更新进度条
  83.                                 mp.pause();                //点击快进按钮时,音乐暂停播放                                                         
  84.                                 break;
  85.                         case MotionEvent.ACTION_UP:
  86.                                 fHandler.removeCallbacks(forward);                        
  87.                                 mp.start();                //松开快进按钮时,音乐暂恢复播放                                                         
  88.                                 playBtn.setBackgroundResource(
  89.                                         R.drawable.pause_selecor);
  90.                                 break;
  91.                 }
  92.                 return false;
  93.         }
  94. });
  95. rewindBtn.setOnTouchListener(new OnTouchListener() {    //点击“快退”按钮时回调                 
  96.         @Override
  97.         public boolean onTouch(View v, MotionEvent event) {
  98.                 switch (event.getAction()) {
  99.                         case MotionEvent.ACTION_DOWN:         
  100.                                 fHandler.post(rewind);                        
  101.                                 mp.pause();        //点击快退按钮时,音乐暂暂停播放
  102.                                 break;
  103.                         case MotionEvent.ACTION_UP:
  104.                                 fHandler.removeCallbacks(rewind);
  105.                                 mp.start();        //松开快退按钮时,音乐暂恢复播放
  106.                                 playBtn.setBackgroundResource(
  107.                                         R.drawable.pause_selecor);
  108.                                 break;
  109.                 }
  110.                 return false;
  111.         }
  112. });
  113. seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {                        
  114.         @Override
  115.         public void onStopTrackingTouch(SeekBar seekBar) {
  116.                 mp.start();                //停止拖动进度条时,音乐开始播放
  117.         }
  118.         @Override
  119.         public void onStartTrackingTouch(SeekBar seekBar) {
  120.                 mp.pause();                //开始拖动进度条时,音乐暂停播放
  121.         }
  122.                         
  123.         @Override
  124.         public void onProgressChanged(SeekBar seekBar, int progress,
  125.                 boolean fromUser) {
  126.                 if(fromUser){
  127.                         mp.seekTo(progress);        //当进度条的值改变时,音乐播放器从新的位置开始播放
  128.                 }
  129.         }
  130. });
复制代码
回复

使用道具 举报

该用户从未签到

发表于 2011-10-22 14:21:29 | 显示全部楼层

Re:[实例教程]android音乐播放器常见操

好贴 怎么没人顶
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 14:21:37 | 显示全部楼层

Re:[实例教程]android音乐播放器常见操

挺不错的
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 14:21:47 | 显示全部楼层

Re:[实例教程]android音乐播放器常见操

我来顶了。。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 14:21:55 | 显示全部楼层

Re:[实例教程]android音乐播放器常见操

谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-22 19:56 , Processed in 0.324205 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表