日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Android中添加背景音乐的两种方法

發(fā)布時(shí)間:2025/3/15 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中添加背景音乐的两种方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? 前些天在嘗試自己寫一個(gè)Android小游戲——flybird

? ? ? ? 基本功能實(shí)現(xiàn)了,就想添加聲音,然后上網(wǎng)查了查,大多是一樣,可是用到我這,有些卻不可以用,所以我還用了兩種方法。

? ? ? ? 下面談?wù)勥@兩種方法。

? ? ? ? 方法一:這是使用Java中的多線程,另外new出一個(gè)類,用類來(lái)啟動(dòng)音樂(lè)。

? ? ? ? ? ? ? ? ? ? ?這個(gè)方法,就像當(dāng)初寫java的小游戲一樣,不過(guò)是在電腦上運(yùn)行的,可以控制每一個(gè)動(dòng)作,比如你的觸碰動(dòng)作,但是,在我這個(gè)游戲中,我需要的不是一點(diǎn)的音樂(lè),雖 ? ? ? ? ? ? ? 然后期會(huì)用到,而是一開(kāi)始就有的。

? ? ? ? ? ? ? ? ? ? ?不過(guò),用這個(gè)方法,沒(méi)用service,就是開(kāi)起來(lái)的時(shí)候,會(huì)很卡,而且會(huì)閃退。

[java] view plaincopy
  • package?com.example.flybird_anla;??
  • ??
  • ??
  • import?java.util.HashMap;??
  • import?java.util.Map;??
  • import?java.util.Random;??
  • ??
  • ??
  • ??
  • import?android.content.Context;??
  • import?android.media.AudioManager;??
  • import?android.media.MediaPlayer;??
  • import?android.media.SoundPool;??
  • ??
  • ??
  • public?class?SoundPlayer?{??
  • ??
  • ???private?static?MediaPlayer?music;??
  • ???private?static?SoundPool?soundPool;??
  • ??????
  • ???private?static?boolean?musicSt?=?true;?//音樂(lè)開(kāi)關(guān)??
  • ???private?static?boolean?soundSt?=?true;?//音效開(kāi)關(guān)??
  • ???private?static?Context?context;??
  • ??????
  • ???private?static?final?int[]?musicId?=?{R.raw.paopao};??
  • ???private?static?Map<Integer,Integer>?soundMap;?//音效資源id與加載過(guò)后的音源id的映射關(guān)系表??
  • ??????
  • ???public?static?void?init(Context?c)??
  • ???{??
  • ???????context?=?c;??
  • ??
  • ???????initMusic();??
  • ??????????
  • ???????initSound();??
  • ???}??
  • ??????
  • ???//初始化音效播放器??
  • ???private?static?void?initSound()??
  • ???{??
  • ???????soundPool?=?new?SoundPool(10,AudioManager.STREAM_MUSIC,100);??
  • ??????????
  • ???????soundMap?=?new?HashMap<Integer,Integer>();??
  • ???????soundMap.put(R.raw.paopao,?soundPool.load(context,?R.raw.paopao,?1));??
  • ???????soundMap.put(R.raw.boung,?soundPool.load(context,?R.raw.boung,?1));??
  • ???}??
  • ??????
  • ???//初始化音樂(lè)播放器??
  • ???private?static?void?initMusic()??
  • ???{??
  • ???????int?r?=?new?Random().nextInt(musicId.length);??
  • ???????music?=?MediaPlayer.create(context,musicId[r]);??
  • ???????music.setLooping(true);??
  • ???}??
  • ??????
  • ?????
  • ???public?static?void?playSound(int?resId)??
  • ???{??
  • ???????if(soundSt?==?false)??
  • ???????????return;??
  • ??????????
  • ???????Integer?soundId?=?soundMap.get(resId);??
  • ???????if(soundId?!=?null)??
  • ???????????soundPool.play(soundId,?1,?1,?1,?0,?1);??
  • ???}??
  • ??
  • ???/**?
  • ????*?暫停音樂(lè)?
  • ????*/??
  • ???public?static?void?pauseMusic()??
  • ???{??
  • ???????if(music.isPlaying())??
  • ???????????music.pause();??
  • ???}??
  • ??????
  • ???/**?
  • ????*?播放音樂(lè)?
  • ????*/??
  • ???public?static?void?startMusic()??
  • ???{??
  • ???????if(musicSt)??
  • ???????????music.start();??
  • ???}??
  • ??????
  • ???/**?
  • ????*?切換一首音樂(lè)并播放?
  • ????*/??
  • ???public?static?void?changeAndPlayMusic()??
  • ???{??
  • ???????if(music?!=?null)??
  • ???????????music.release();??
  • ???????initMusic();??
  • ???????startMusic();??
  • ???}??
  • ??????
  • ???/**?
  • ????*?獲得音樂(lè)開(kāi)關(guān)狀態(tài)?
  • ????*?@return?
  • ????*/??
  • ???public?static?boolean?isMusicSt()?{??
  • ???????return?musicSt;??
  • ???}??
  • ??????
  • ???/**?
  • ????*?設(shè)置音樂(lè)開(kāi)關(guān)?
  • ????*?@param?musicSt?
  • ????*/??
  • ???public?static?void?setMusicSt(boolean?musicSt)?{??
  • ???????SoundPlayer.musicSt?=?musicSt;??
  • ???????if(musicSt)??
  • ???????????music.start();??
  • ???????else??
  • ???????????music.stop();??
  • ???}??
  • ??
  • ???/**?
  • ????*?獲得音效開(kāi)關(guān)狀態(tài)?
  • ????*?@return?
  • ????*/??
  • ???public?static?boolean?isSoundSt()?{??
  • ???????return?soundSt;??
  • ???}??
  • ??
  • ???/**?
  • ????*?設(shè)置音效開(kāi)關(guān)?
  • ????*?@param?soundSt?
  • ????*/??
  • ???public?static?void?setSoundSt(boolean?soundSt)?{??
  • ???????SoundPlayer.soundSt?=?soundSt;??
  • ???}??
  • ??????
  • ???/**?
  • ????*?發(fā)出‘邦’的聲音?
  • ????*/??
  • ???public?static?void?boom()??
  • ???{??
  • ???????playSound(R.raw.boung);??
  • ???}??
  • }??
  • ? ? ? ? ? ? 然后,在需要的地方new出類,在調(diào)用方法。 ? ? ? ?

    方法二:

    ? ? ? ? ? ? ?這種方法是利用android中的service來(lái)開(kāi)啟,也就是進(jìn)去的時(shí)候就播放出,退出就停止。

    ? ? ? ? ? ? ?首先,在AndroidManifest中的application節(jié)點(diǎn)下添加:

    [java] view plaincopy
  • <activity??
  • ????????????android:name=".MainActivity"??
  • ????????????android:label="@string/app_name"?>??
  • ????????????<intent-filter>??
  • ????????????????<action?android:name="android.intent.action.MAIN"?/>??
  • ??
  • ????????????????<category?android:name="android.intent.category.LAUNCHER"?/>??
  • ????????????</intent-filter>??
  • ????????</activity>??
  • ? ? ? ? ? ? 然后,再在項(xiàng)目中new出一個(gè)類,MusicServer: [java] view plaincopy
  • package?com.example.flybird_anla;??
  • ??
  • import?android.app.Service;??
  • import?android.content.Intent;??
  • import?android.media.MediaPlayer;??
  • import?android.os.IBinder;??
  • ??
  • public?class?MusicServer?extends?Service?{??
  • ??
  • ????private?MediaPlayer?mediaPlayer;??
  • ??
  • ????@Override??
  • ????public?IBinder?onBind(Intent?intent)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????return?null;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onStart(Intent?intent,?int?startId)?{??
  • ????????super.onStart(intent,?startId);??
  • ??
  • ????????if?(mediaPlayer?==?null)?{??
  • ??
  • ????????????//?R.raw.mmp是資源文件,MP3格式的??
  • ????????????mediaPlayer?=?MediaPlayer.create(this,?R.raw.paopao);??
  • ????????????mediaPlayer.setLooping(true);??
  • ????????????mediaPlayer.start();??
  • ??
  • ????????}??
  • ????}??
  • ??
  • ????@Override??
  • ????public?void?onDestroy()?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????super.onDestroy();??
  • ????????mediaPlayer.stop();??
  • ????}??
  • }??

  • 最后,在在activity中,寫兩個(gè)函數(shù): [java] view plaincopy
  • protected?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????Intent?intent?=?new?Intent(MainActivity.this,MusicServer.class);??
  • ????????super.onCreate(savedInstanceState);??
  • ????????startService(intent);??
  • ????????manu();??
  • ????}??
  • ??????
  • ????protected?void?onStop(){??
  • ????????Intent?intent?=?new?Intent(MainActivity.this,MusicServer.class);??
  • ????????stopService(intent);??
  • ????????super.onStop();??
  • ??????????
  • ????}??
  • ? ? ? ? ?然后,就ok了。

    總結(jié)

    以上是生活随笔為你收集整理的Android中添加背景音乐的两种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。