zoukankan      html  css  js  c++  java
  • Android开发——多媒体开发之MediaPlayer

    MediaPlayer可以用来播放视频和音频、流媒体。MediaPlayer的生命周期如下图:

    mediaplayer_state_diagram 

    从MediaPlayer的生命周期图,可以看出使用MediaPlayer不是很复杂。

    最简单的流程:初始化->resrt()->setDataSource()->prepare()->start()->……只要简单的几步,就可以播放音频文件了。

    来看看一个播放音频的例子吧,看代码和注释吧……

       1: private Handler handler = new Handler() {
       2:  
       3:         public void handleMessage(Message msg) {
       4:             //更新进度条
       5:             progressBar.setProgress(progressState);
       6:         };
       7:     };
       8:  
       9: /**
      10:      * 播放
      11:      * 
      12:      * @param filePath
      13:      *            文件路径
      14:      */
      15:     private void playMusic(String filePath) {
      16:         try {
      17:             progressState = 0;
      18:             progressBar.setProgress(0);
      19:             // 重置
      20:             mediaPlayer.reset();
      21:             // 设置数据源
      22:             mediaPlayer.setDataSource(filePath);
      23:             // 准备播放
      24:             mediaPlayer.prepare();
      25:             // 获取播放时长
      26:             length = mediaPlayer.getDuration();
      27:             progressBar.setMax(length / 1000);
      28:             // 播放
      29:             mediaPlayer.start();
      30:             new Thread(new ProcessBarRefresh()).start();
      31:             // 设置播放完毕监听
      32:             mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
      33:                 @Override
      34:                 public void onCompletion(MediaPlayer mp) {
      35:                     nextMusic();
      36:                 }
      37:             });
      38:  
      39:         } catch (Exception e) {
      40:             displayToast(e.getMessage());
      41:         }
      42:     }
      43:     
      44:     /**
      45:      * 更新进度条
      46:      * @author 张汉国
      47:      */
      48:     class ProcessBarRefresh implements Runnable{
      49:  
      50:         @Override
      51:         public void run() {
      52:             while(isPlaying){
      53:                 progressState = mediaPlayer.getCurrentPosition()/1000;
      54:                 handler.sendMessage(handler.obtainMessage());
      55:             }
      56:         }
      57:         
      58:     }

    music 界面没有美化播放中 播放中

    以上只是一个简单的实例,要开发一个播放器除了UI需要下功夫外,还得注意不少细节东西。

    Android中音乐播放是一个后台进程,以上代码当调用 onStop()->onCreate() 的时候会重复加载播放列表,造成列表重复。这就需要用到 onSaveIntanceState(),这样子在onCreate()里面初始化播放列表的时候先判断 Bundle 是否为空,是否能拿到播放列表,如果拿不到在重新初始化。

    再者Android自身也提供一个MediaStore这样一个Provider的属性对象供我们开发利用。

    (由于文章太长,上传不来,故去掉一些方法的实现,如有需要源码请联系我)

  • 相关阅读:
    bootstrap以及考试复习
    HTML复习
    驼峰命名法和模态对话框
    dom和bom
    dom习题复习和讲解
    DOM
    属性扩展
    sql防注入式攻击
    自动生成编号
    删除,修改,添加
  • 原文地址:https://www.cnblogs.com/halzhang/p/1746596.html
Copyright © 2011-2022 走看看