日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
在Android平臺(tái)下開(kāi)發(fā)多媒體軟件MediaPlayer

在前文中我們介紹了在Ubuntu下建立Eclipse的Android開(kāi)發(fā)環(huán)境,我們現(xiàn)在將介紹一下在Android平臺(tái)下如何開(kāi)發(fā)多媒體軟件MediaPlayer。MediaPlayer可以用來(lái)播放視頻和音頻、流媒體。MediaPlayer的生命周期如下圖:

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了西豐免費(fèi)建站歡迎大家使用!

從MediaPlayer的生命周期圖,可以看出使用MediaPlayer不是很復(fù)雜。

最簡(jiǎn)單的流程:初始化->resrt()->setDataSource()->prepare()->start()->……只要簡(jiǎn)單的幾步,就可以播放音頻文件了。

來(lái)看看一個(gè)播放音頻的例子吧,看代碼和注釋吧……

1: private Handler handler = new Handler() {
   2: 
   3:         public void handleMessage(Message msg) {
   4:             //更新進(jìn)度條
   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:             // 設(shè)置數(shù)據(jù)源
  22:             mediaPlayer.setDataSource(filePath);
  23:             // 準(zhǔn)備播放
  24:             mediaPlayer.prepare();
  25:             // 獲取播放時(shí)長(zhǎng)
  26:             length = mediaPlayer.getDuration();
  27:             progressBar.setMax(length / 1000);
  28:             // 播放
  29:             mediaPlayer.start();
  30:             new Thread(new ProcessBarRefresh()).start();
  31:             // 設(shè)置播放完畢監(jiān)聽(tīng)
  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:      * 更新進(jìn)度條
  46:      * @author 張漢國(guó)
  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:     }

以上只是一個(gè)簡(jiǎn)單的實(shí)例,要開(kāi)發(fā)一個(gè)播放器除了UI需要下功夫外,還得注意不少細(xì)節(jié)東西。

Android中音樂(lè)播放是一個(gè)后臺(tái)進(jìn)程,以上代碼當(dāng)調(diào)用 onStop()->onCreate() 的時(shí)候會(huì)重復(fù)加載播放列表,造成列表重復(fù)。這就需要用到 onSaveIntanceState(),這樣子在onCreate()里面初始化播放列表的時(shí)候先判斷 Bundle 是否為空,是否能拿到播放列表,如果拿不到在重新初始化。

再者Android自身也提供一個(gè)MediaStore這樣一個(gè)Provider的屬性對(duì)象供我們開(kāi)發(fā)利用。

【編輯推薦】

  1. 在Ubuntu下建立Eclipse的Android開(kāi)發(fā)環(huán)境
  2. Intent,Android應(yīng)用核心探秘
  3. Android應(yīng)用程序開(kāi)發(fā)的四個(gè)重要組成部分

名稱欄目:在Android平臺(tái)下開(kāi)發(fā)多媒體軟件MediaPlayer
當(dāng)前網(wǎng)址:http://m.5511xx.com/article/cogipce.html