阅读更多 Android中的soundpool小结 博客分类: Android
Android音乐游戏UI .
之前只知道android中可以用mediaplayer播放音乐,原来今天才发现
可以用soundpool,用soundpool可以播一些短的反应速度要求高的声音,
比如游戏中的爆破声,而mediaplayer适合播放长点的。
1. SoundPool载入音乐文件使用了独立的线程,不会阻塞UI主线程的操作。但是这里如果音效文件过大没有载入完成,我们调用play方法时可能产生严重的后果,这里Android SDK提供了一个SoundPool.OnLoadCompleteListener类来帮助我们了解媒体文件是否载入完成,我们重载 onLoadComplete(SoundPool soundPool, int sampleId, int status) 方法即可获得。
2. 从上面的onLoadComplete方法可以看出该类有很多参数,比如类似id,是的SoundPool在load时可以处理多个媒体一次初始化并放入内存中,这里效率比MediaPlayer高了很多。
3. SoundPool类支持同时播放多个音效,这对于游戏来说是十分必要的,而MediaPlayer类是同步执行的只能一个文件一个文件的播放。


使用方法:
1. 创建一个SoundPool

  public SoundPool(int maxStream, int streamType, int srcQuality)

  maxStream —— 同时播放的流的最大数量

  streamType —— 流的类型,一般为STREAM_MUSIC(具体在AudioManager类中列出)

  srcQuality —— 采样率转化质量,当前无效果,使用0作为默认值

  eg.

  SoundPool soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);

  创建了一个最多支持3个流同时播放的,类型标记为音乐的SoundPool。


2 一般把多个声音放到HashMap中去,比如
    soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
    soundPoolMap = new HashMap();  
    soundPoolMap.put(1, soundPool.load(this, R.raw.dingdong, 1));

  soundpool的加载:
      int  load(Context context, int resId, int priority)  //从APK资源载入
  int  load(FileDescriptor fd, long offset, long length, int priority)  //从FileDescriptor对象载入
  int  load(AssetFileDescriptor afd, int priority)  //从Asset对象载入
  int  load(String path, int priority)  //从完整文件路径名载入
最后一个参数为优先级。

3 播放
play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) ,其中leftVolume和rightVolume表示左右音量,priority表示优先级,loop表示循环次数,rate表示速率,如
//速率最低0.5最高为2,1代表正常速度
sp.play(soundId, 1, 1, 0, 0, 1);
  而停止则可以使用 pause(int streamID) 方法,这里的streamID和soundID均在构造SoundPool类的第一个参数中指明了总数量,而id从0开始

更多相关文章

  1. Android(安卓)设置dialog背景全透明无边框
  2. android 音视频直播
  3. Android(安卓)Service的使用方法 音乐播放器实例
  4. 使用Vitamio打造自己的Android万能播放器(1)——准备
  5. 解决 android GIF播放的问题
  6. Android(安卓)进度条功能实现
  7. android 中SoundPool总结
  8. Android应用程序四大组件
  9. Android应用开发学习笔记之播放音频

随机推荐

  1. usb连接的PTP模式,同时显示内置、外置SD卡
  2. Android初级教程理论知识(第八章网络编程
  3. Android Studio 学习笔记(1)
  4. Android Paint的使用详解
  5. android学习记录(四)管理里中基本组键
  6. Android--MapView.第一个简单的MapView
  7. [Android]http请求
  8. Android(安卓)ueventd解析
  9. Android(安卓)- UI
  10. 从网页启动Activity