android中MediaPlayer和SoundPool的声音管理
来源:互联网 发布:python中的生成器 编辑:程序博客网 时间:2024/06/04 18:12
闲话少说直接看代码
import java.util.HashMap;import yoyo.activity.CrazyActivity;import yoyo.activity.R;import android.content.Context;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.SoundPool;/*** * @time 2011-10-16 12:03:15 * @author YangWenwei * @声音播放管理器 */public class MediaManager {/** * 声音开关 背景音乐 */private boolean blnOpenBgSound; /** * 声音开关 特效音乐 */private boolean blnOpenEffectSound; /** * media 背景音乐 */public static final int STATIC_MEDIA_TYPE_BGSOUND = 0;public static final int STATIC_MEDIA_TYPE_COUNT = STATIC_MEDIA_TYPE_BGSOUND + 1;private int[] mediaListID = {R.raw.backsound};/** * sound */public static final int STATIC_SOUND_TYPE_DINGDONG = 0;public static final int STATIC_SOUND_TYPE_COUNT = STATIC_SOUND_TYPE_DINGDONG + 1;private int[] soundListID = {R.raw.dingdong};private final int maxStreams = 10; //streamType音频池的最大音频流数目为10 private final int srcQuality = 100;private final int soundPriority = 1;private final float soundSpeed = 1f;//播放速度 0.5 -2 之间/** * 游戏音效 */private SoundPool soundPool;private HashMap <Integer, Integer> soundPoolMap;private HashMap <Integer, MediaPlayer> mediaMap;private static MediaManager mediaManager;private MediaManager(){initMediaPlayer();initSoundPool();}/*** * 实例MediaManager * @return */public static MediaManager getInstance(){if(mediaManager == null){mediaManager = new MediaManager();}return mediaManager;}/*** * 是否开启背景音乐 */public void setOpenBgState(boolean bgSound){blnOpenBgSound = bgSound;if(!bgSound && mediaMap != null){for (int i = 0; i < mediaMap.size(); i++) {mediaMap.get(i).pause();}}}/*** * 是否开启特效音乐 */public void setOpenEffectState(boolean effectSound){blnOpenEffectSound = effectSound;if(!effectSound && soundPoolMap != null){for (int i = 0; i < soundPoolMap.size(); i++) {soundPool.pause(soundPoolMap.get(i));}}}private void initMediaPlayer(){mediaMap = new HashMap<Integer, MediaPlayer>();for (int i = 0; i < STATIC_SOUND_TYPE_COUNT; i++) {MediaPlayer mediaPlayer = MediaPlayer.create(CrazyActivity.getInstence(), mediaListID[i]);mediaMap.put(i, mediaPlayer);}}private void initSoundPool(){soundPool = new SoundPool(maxStreams, AudioManager.STREAM_MUSIC, srcQuality);soundPoolMap = new HashMap<Integer, Integer>();for (int i = 0; i < STATIC_SOUND_TYPE_COUNT; i++) {soundPoolMap.put(i, soundPool.load(CrazyActivity.getInstence(), soundListID[i], soundPriority));}}/** * 播放MediaPlayer音乐 */public void playMedia(int mediaType){if(!blnOpenBgSound){return;}MediaPlayer mediaPlayer = mediaMap.get(mediaType);if(!mediaPlayer.isPlaying()){mediaPlayer.start();}}/** * 暂停MediaPlayer音乐 */public void pauseMedia(int mediaType){MediaPlayer mediaPlayer = mediaMap.get(mediaType);if(mediaPlayer.isPlaying()){mediaPlayer.pause();}}/** * 播放soundPlayer音乐 */public void playSound(int soundID, int loop){if(!blnOpenEffectSound){return;}AudioManager audioManager = (AudioManager)CrazyActivity.getInstence().getSystemService(Context.AUDIO_SERVICE);float streamVolumeCurrent = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);float streamVolumeMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);float volume = streamVolumeCurrent / streamVolumeMax;soundPool.play(soundPoolMap.get(soundID), volume, volume, soundPriority, loop, soundSpeed);}/** * 播放soundPlayer音乐 */public void pauseSound(int soundID){soundPool.pause(soundPoolMap.get(soundID));}}
在使用过程中给出用法
//初始化游戏声音MediaManager.getInstance(); //可以做为初始化//播放MediaPlayer音频MediaManager.getInstance().playMedia(MediaManager.STATIC_MEDIA_TYPE_BGSOUND);//播放soundPool音频MediaManager.getInstance().playSound(MediaManager.STATIC_SOUND_TYPE_DINGDONG);
- android中MediaPlayer和SoundPool的声音管理
- android中MediaPlayer和SoundPool的声音管理
- 【Android 声音处理】MediaPlayer和SoundPool
- 【Android 声音处理】MediaPlayer和SoundPool
- Android中播放声音的两种方法MediaPlayer 和 SoundPool
- Android中SoundPool和MediaPlayer的区别
- android中常见声音操作方式(Ringtone,SoundPool,MediaPlayer)小结
- Android-MediaPlayer 和 SoundPool
- Android播放声音SoundPool、MediaPlayer、AudioTrack
- Android播放声音SoundPool、MediaPlayer、AudioTrack
- Android播放声音SoundPool、MediaPlayer、AudioTrack
- Ringtone,SoundPool,MediaPlayer之声音播放- Android
- Android播放声音SoundPool、MediaPlayer、AudioTrack
- Android播放声音SoundPool、MediaPlayer、AudioTrack
- Android 中声音的处理二:SoundPool
- Android中的SoundPool和MediaPlayer
- Android平台SoundPool 和 MediaPlayer
- Android平台SoundPool 和 MediaPlayer
- Delphi设计带图标的菜单.6
- ubunt 下安装vim
- 设置yum工具
- 用c实现进程监控,如果某一进程退出则重启
- 随想、、、
- android中MediaPlayer和SoundPool的声音管理
- strlen 与 sizeof
- Unity3D 游戏引擎之实现平面多点触摸(二)
- java内部类、静态内部类 小结
- Emacs才是世界上最强的IDE
- [荐]memcpy、memmove、strcpy的区别?
- flex中的数据绑定 bindable
- 好久没写博客了,今日加班无聊写个博
- windows系统服务中功能介绍