Android添加音樂

來源:互聯網
上載者:User
package com.llkan.setup;import java.util.HashMap;import java.util.Map;import java.util.Random;import com.llkan.R;import android.content.Context;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.SoundPool;/** * 聲音控制類 * @author wyf * */public class SoundPlayer {    private static MediaPlayer music;    private static SoundPool soundPool;        private static boolean musicSt = true; //音樂開關    private static boolean soundSt = true; //音效開關    private static Context context;        private static final int[] musicId = {R.raw.bg,R.raw.bg1,R.raw.bg2,R.raw.bg3};    private static Map<Integer,Integer> soundMap; //音效資源id與載入過後的音源id的映射關係表        /**     * 初始化方法     * @param c     */    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.itemboom, soundPool.load(context, R.raw.itemboom, 1));        soundMap.put(R.raw.sel, soundPool.load(context, R.raw.sel, 1));    }        //初始化音樂播放器    private static void initMusic()    {        int r = new Random().nextInt(musicId.length);        music = MediaPlayer.create(context,musicId[r]);        music.setLooping(true);    }        /**     * 播放音效     * @param resId 音效資源id     */    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);    }    /**     * 暫停音樂     */    public static void pauseMusic()    {        if(music.isPlaying())            music.pause();    }        /**     * 播放音樂     */    public static void startMusic()    {        if(musicSt)            music.start();    }        /**     * 切換一首音樂並播放     */    public static void changeAndPlayMusic()    {        if(music != null)            music.release();        initMusic();        startMusic();    }        /**     * 獲得音樂開關狀態     * @return     */    public static boolean isMusicSt() {        return musicSt;    }        /**     * 設定音樂開關     * @param musicSt     */    public static void setMusicSt(boolean musicSt) {        SoundPlayer.musicSt = musicSt;        if(musicSt)            music.start();        else            music.stop();    }    /**     * 獲得音效開關狀態     * @return     */    public static boolean isSoundSt() {        return soundSt;    }    /**     * 設定音效開關     * @param soundSt     */    public static void setSoundSt(boolean soundSt) {        SoundPlayer.soundSt = soundSt;    }        /**     * 發出‘邦’的聲音     */    public static void boom()    {        playSound(R.raw.itemboom);    }}
相關文章

聯繫我們

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