一、android 音频播放类
MediaPlayer和SoundPool都可以用来播放音频。 区别是MediaPlayer占用资源高,延迟时间高,播放长音乐的,并且不能同时播放多个音乐, 而SoundPool占用资源较少,没什么延迟,但要提前加载,只能播放1M以下的音频文件,能同时播放多个音乐 因此MediaPlayer一般用来播放背景音乐,而SoundPool主要用来播放游戏音效。
1、MediaPlayer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
注:pause()和stop(),主要的区别在于:暂停播放后可以调用start()继续播放,停止音乐播放后,需要调用prepare()再调用start()进行播放音乐。
当然不得不提AudioManager(音乐管理类,可以获取当前音乐大小以及最大音量)
1 2 3 4 5 6 7 |
|
2、SoundPool
获取实例:
1 2 |
|
常用方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
3、基于MediaPlayer的简单播放器
导入drawable-mdpi(我一般是传入这个drawable文件夹的) 三张播放、暂停、停止的图片,res下新建raw文件夹并导入ten_year.mp3文件,注意Android的资源文件都不能中文和大写字母命名。
Activity主要代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
|
运行项目,聆听音乐!
4、GameSoundPool音效播放的工具类
由于音效的音频文件太多了,建个map来管理,当要播放那个音效时,传入相应的id即可。
主要代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
由于游戏画面经常会有按钮点击关闭音效,这里的flag 参数主要用于控制是否播放。播放时调用
GameSoundPool.playSound(key, 0,soundFlag); 即可,key是定义具体的音效id,当然我们也可以为了代码可读行写成静态全局变量传进来。