Android——播放音樂的工具類

來源:互聯網
上載者:User

一般的Android應用程式的音樂可以分為背景音樂和點擊各種控制項時的音效,前者一般為比較大的音樂檔案,後者一般為比較小的音樂。在Android中一般用MediaPlayer類處理比較大的音頻檔案,用SoundPool類處理比較短促的音頻檔案。

因此,現設計一音樂播放工具類如下: MusicPlayer
import android.content.Context;<br />import android.media.AudioManager;<br />import android.media.MediaPlayer;<br />import android.media.SoundPool; </p><p>import com.ruanko.shengji4Android.R;<br />import com.ruanko.shengji4Android.model.SysSetting; </p><p>public class MusicPlayer implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener {<br /> private Context context;<br /> private MediaPlayer bgPlayer; //播放背景音樂的播放器<br /> private SoundPool actionMusicPlayer; //播放音效的播放器<br /> private int source_da,source_givecard,source_start,source_win,source_calllord; //各種音效的source </p><p> public MusicPlayer(Context context) { //初始化<br /> this.context = context;<br /> this.actionMusicPlayer = new SoundPool(10, AudioManager.STREAM_SYSTEM,5); //這裡指定聲音池的最大音頻流數目為10,聲音品質為5大家可以自己測試感受下效果<br /> this.source_da = actionMusicPlayer.load(context, R.raw.da, 0);<br /> this.source_givecard = actionMusicPlayer.load(context, R.raw.givecard, 0);<br /> this.source_start = actionMusicPlayer.load(context, R.raw.start, 0);<br /> this.source_win = actionMusicPlayer.load(context, R.raw.win, 0);<br /> this.source_calllord = actionMusicPlayer.load(context, R.raw.calllord, 0);<br /> } </p><p> public void onCompletion(MediaPlayer mp) { //音頻檔案播放完成時自動調用 </p><p> } </p><p> public boolean onError(MediaPlayer mp, int what, int extra) { //音頻檔案播放發生錯誤時自動調用<br /> return false;<br /> } </p><p> public void playBgSound(int paramInt) { //播放背景音樂,paramInt為音頻檔案ID<br /> if(!SysSetting.getInstance(context).isBgSound()) { //SysSetting為一個單例類,是我自己定義的,用於儲存本應用程式相關設定,isBgSound()為得到是否開啟背景音樂設定<br /> return;<br /> } </p><p> stopSound(bgPlayer); </p><p> try {<br /> MediaPlayer mediaPlayer = MediaPlayer.create(context, paramInt);<br /> bgPlayer = mediaPlayer;<br /> bgPlayer.setOnCompletionListener(this);<br /> bgPlayer.setLooping(true); //設定是否迴圈,一般背景音樂都設為true<br /> bgPlayer.start();<br /> } catch (IllegalStateException e) {<br /> e.printStackTrace();<br /> }<br /> } </p><p> public MediaPlayer getBackGroundPlayer() {<br /> return this.bgPlayer;<br /> } </p><p> public void stopBgSound() { //停止背景音樂的播放<br /> if(bgPlayer == null)<br /> return;<br /> if(bgPlayer.isPlaying())<br /> bgPlayer.stop();<br /> bgPlayer.release();<br /> bgPlayer = null;<br /> } </p><p> private void playSound(int source) { //如果系統設定中開啟了音效,則播放相關的音頻檔案<br /> if(SysSetting.getInstance(context).isEffectSound()) {<br /> actionMusicPlayer.play(source, 1, 1, 0, 0, 1);<br /> }<br /> } </p><p> public void playHitCardSound() {<br /> playSound(source_da);<br /> } </p><p> public void playGiveCardSound() {<br /> playSound(source_givecard);<br /> } </p><p> public void playStartSound() {<br /> playSound(source_start);<br /> } </p><p> public void playWinSound() {<br /> playSound(source_win);<br /> } </p><p> public void playCalllordSound() {<br /> playSound(source_calllord);<br /> }<br />}<br />

 

在activity中怎樣使用這個工具類呢?播放背景音樂可能我們一般都想到的是service,但是service對背景音樂的控制比較難,尤其是,在不同情境,需要不時變換背景音樂的情況下,因此,可以考慮自己定義一個activity,繼承Activity,在其中定義一個靜態成員變數

  1. public static MusicPlayer musicPlayer;  

並在這個Activity的onCreate方法中初始化該musicPlayer

  1. if(musicPlayer == null) {   
  2.     SysSetting.getInstance(getApplicationContext()).load();  //載入系統設定,SysSetting為我自己定義的一個類,由於代碼較長,就不給出了   
  3.     musicPlayer = new MusicPlayer(getApplicationContext());   
  4.     musicPlayer.playBgSound(R.raw.welcome);  //播放背景音樂   

 

 

 然後,再將所有的Activity繼承於這個自己定義的Activity即可。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.