Android|媒體|播放和音量大小|seekbar|mediaplayer

來源:互聯網
上載者:User

標籤:

Android中的音樂媒體播放 Mediaplayer類,定義如下

final MediaPlayer mpRain = MediaPlayer.create(this,R.raw.rain);

檔案為  res/raw/rain.mp3  //raw在Androidstudio中我自己建立的

我自己在這裡的用法是只有一個按鈕,單擊使用,如果在播放就停止,否則開始播放,附上代碼

 1  mpRain.setLooping(true); 2         buttonRain.setOnClickListener(new Button.OnClickListener() { 3             @Override 4             public void onClick(View v) {12                 if (isRain == false) {13                     try {14                         if (mpRain != null) {15                             mpRain.stop();16                         }18                         mpRain.prepare();19                         mpRain.start();20                         isRain = true;21                         Snackbar.make(v, "Rain start", Snackbar.LENGTH_LONG)22                                 .setAction("Action", null).show();23                     } catch (Exception e) {24                         Snackbar.make(v, "Rain Exception 1", Snackbar.LENGTH_LONG)25                                 .setAction("Action", null).show();26                     }27                 } else {28                     try {29                         if (mpRain != null) {31                             mpRain.stop();34                             Snackbar.make(v, "Rain stop", Snackbar.LENGTH_LONG)35                                     .setAction("Action", null).show();36                         }37                     } catch (Exception e) {38                         Snackbar.make(v, "Rain Exception 2", Snackbar.LENGTH_LONG)39                                 .setAction("Action", null).show();40                     }41                     isRain = false;42                 }43             }44         });

其中mpRain.start()類似的還有pause(),release()等等,建議一定要去看一下Mediaplayer的文檔,有詳細的解釋,另外還有讓音樂播放進行迴圈的

 mpRain.setLooping(true);

另外有需要重寫的方法我這裡不需要就沒有進行重寫

 1 /* 當MediaPlayer.OnCompletionLister會啟動並執行Listener 2         mp.setOnCompletionListener( 3                 new MediaPlayer.OnCompletionListener() 4                 { 5                     // @Override 6           /*覆蓋檔案播出完畢事件 7                     public void onCompletion(MediaPlayer arg0) 8                     { 9                         try10                         {11               /*解除資源與MediaPlayer的賦值關係12                * 讓資源可以為其它程式利用13                             mp.release();14               /*改變TextView為播放結束15                             tv.setText("音樂播髮結束!");16                         }17                         catch (Exception e)18                         {19                             tv.setText(e.toString());20                             e.printStackTrace();21                         }22                     }23                 });24 25         /* 當MediaPlayer.OnErrorListener會啟動並執行Listener26         mp.setOnErrorListener(new MediaPlayer.OnErrorListener()27         {28             @Override29           /*覆蓋錯誤處理事件30             public boolean onError(MediaPlayer arg0, int arg1, int arg2)31             {32                 // TODO Auto-generated method stub33                 try34                 {35               /*發生錯誤時也解除資源與MediaPlayer的賦值36                     mp.release();37                     tv.setText("播放發生異常!");38                 }39                 catch (Exception e)40                 {41                     tv.setText(e.toString());42                     e.printStackTrace();43                 }44                 return false;45             }46         });47     

 

 

 

 

控制盡量部分採用了一個seekbar,根據get到的值設定mp的音量,用到的方法為 mpRain.setVolume(float left,float right)

 1  seekbarRain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() //調音監聽器 2         { 3             public void onProgressChanged(SeekBar arg0, int progress, boolean fromUser) { 4                 // 5                 //buttonRain.setText(seekbarRain.getProgress()); 6  7                 //int tempvol = seekbarRain.getProgress(); 8                 //float tempvolF = tempvol/10.0f; 9                 mpRain.setVolume(seekbarRain.getProgress()/10.0f, seekbarRain.getProgress()/10.0f);10                 //Log.i("seek", "seekbarRain.getProgress()" + tempvolF);11                 //mpRain.setVolume(seekbarRain.getProgress()/10,seekbarRain.getProgress()/10);12 13             }14 15             @Override16             public void onStartTrackingTouch(SeekBar seekBar) {17                 // TODO Auto-generated method stub18 19             }20 21             @Override22             public void onStopTrackingTouch(SeekBar seekBar) {23                 // TODO Auto-generated method stub24 25 26             }27         });

setVolume方法的兩個參數左右暫時還是沒有查到用法與區別,現在實驗得到的結果是設為同一個值可以直接設定音量值

 

Android|媒體|播放和音量大小|seekbar|mediaplayer

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.