Android MediaPlayer基本使用方式

来源:互联网 发布:nba2kol贾森汤普森数据 编辑:程序博客网 时间:2024/04/30 08:13
使用MediaPlayer播放音频或者视频的最简单例子:
JAVA代码部分:
  1. public class MediaPlayerStudy extends Activity {

  2. private Button bplay,bpause,bstop;

  3. private MediaPlayer mp = new MediaPlayer();



  4. @Override

  5. public void onCreate(Bundle savedInstanceState) {

  6. super.onCreate(savedInstanceState);

  7. setContentView(R.layout.main);



  8. bplay = (Button)findViewById(R.id.play);

  9. bpause = (Button)findViewById(R.id.pause);

  10. bstop = (Button)findViewById(R.id.stop);

  11. bplay.setOnClickListener(new OnClickListener(){

  12. @Override

  13. public void onClick(View v) {

  14. try {

  15. mp.setDataSource("/sdcard/test.mp3");

  16. mp.prepare();

  17. mp.start();

  18. } catch (IllegalArgumentException e) {

  19. e.printStackTrace();

  20. } catch (IllegalStateException e) {

  21. e.printStackTrace();

  22. } catch (IOException e) {

  23. e.printStackTrace();

  24. }

  25. mp.setOnCompletionListener(new OnCompletionListener(){

  26. @Override

  27. public void onCompletion(MediaPlayer mp) {

  28. mp.release();

  29. }

  30. });

  31. }

  32. });



  33. bpause.setOnClickListener(new OnClickListener(){

  34. @Override

  35. public void onClick(View v) {

  36. if(mp != null){

  37. mp.pause();

  38. }

  39. }

  40. });



  41. bstop.setOnClickListener(new OnClickListener(){

  42. @Override

  43. public void onClick(View v) {

  44. if(mp != null){

  45. mp.stop();

  46. }

  47. }

  48. });

  49. }



  50. @Override

  51. protected void onDestroy() {

  52. if(mp != null)

  53. mp.release();

  54. super.onDestroy();

  55. }

  56. }
复制代码

布局文件main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical" android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <TextView android:layout_width="fill_parent"
  6. android:layout_height="wrap_content" android:text="@string/hello" />
  7. <Button android:text="play" android:id="@+id/play"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"></Button>
  10. <Button android:text="pause" android:id="@+id/pause"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"></Button>
  13. <Button android:text="stop" android:id="@+id/stop"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"></Button>
  16. </LinearLayout>
复制代码

程序说明:
这个例子只是描述了MediaPlayer的基本使用步骤和方式,MediaPlayer还有多种使用方式和方法,并不只局限于例子所介绍的一种。具体来看:
1)如何获得MediaPlayer实例:
可以使用直接new的方式:
MediaPlayer mp = new MediaPlayer();
也可以使用create的方式,如:
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了


2) 如何设置要播放的文件:
MediaPlayer要播放的文件主要包括3个来源:
a. 用户在应用中事先自带的resource资源
例如:MediaPlayer.create(this, R.raw.test);
b. 存储在SD卡或其他文件路径下的媒体文件
例如:mp.setDataSource("/sdcard/test.mp3");
c. 网络上的媒体文件
例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3");


MediaPlayer的setDataSource一共四个方法:
setDataSource (String path)
setDataSource (FileDescriptor fd)
setDataSource (Context context, Uri uri)
setDataSource (FileDescriptor fd, long offset, long length)


3)对播放器的主要控制方法:
Android通过控制播放器的状态的方式来控制媒体文件的播放,其中:
prepare()和prepareAsync() 提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。
start()是真正启动文件播放的方法,
pause()和stop()比较简单,起到暂停和停止播放的作用,


seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。


4)设置播放器的监听器:
MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行监听,以期及时处理各种情况,
如: setOnCompletionListener(MediaPlayer.OnCompletionListener listener)、
setOnErrorListener(MediaPlayer.OnErrorListener listener)等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被贷款中介骗了怎么办 c1新手扣满12分怎么办 一年内扣满12分怎么办 汽车违章扣12分怎么办 公租房3年到期怎么办 社保晚交了几天怎么办 大便完后肛门痒怎么办 宝宝鼻屎堵住了怎么办 吃饭吃撑了难受怎么办 御宅伴侣很卡怎么办 qq登录后未响应怎么办 微信安装包损坏怎么办 酷狗音乐想退款怎么办 手机qq影音闪退怎么办 胃疼超过24小时怎么办 小米4s无法开机怎么办 微信语音不好听怎么办 微信语音太难听怎么办 苹果x耳机用不了怎么办 10个月幼儿便秘怎么办 太阳晒了长斑怎么办 膀胱癌复发5回了怎么办 右肾囊肿有1cm,怎么办, 牙侧面有小小洞怎么办 喝酒喝的手抖怎么办 孩子在幼儿园不爱说话怎么办 孕妇吃了方头鱼怎么办 油炸的东西软了怎么办 跑步小腿疼怎么办 知乎 健身后小腿粗了怎么办 背心式内衣大了怎么办 运动文胸买大了怎么办 喝碳酸饮料胖了怎么办 奥鹏学费迟交了怎么办 侧乌鸦做不起来怎么办 发烧很难受怎么办 知乎 上班后奶水越来越少怎么办 孕晚期胖的厉害怎么办 怀孕后猛长胖怎么办啊 怀孕坐了按摩椅怎么办 怀孕8个月胎位不正怎么办