播放声音

在android里播放声音有两种方法。一种是使用MediaPlayer这个API今天先不详细说
MediaPlayer.setDataSource(Path)
MediaPlayer.create(Context, uri)
然后调用起播放停止等方法。
今天主要说的是SoundPool类,这个类相比MediaPlayer使用较少的CPU资源和较短的反应延迟 ,可以自行设置声音的品质、音量。不过SoundPool只有1M的内存开销,因此这个API可以使用在游戏特效,或者提示音上面,SoundPool播放时不会立马播放,它有大概100ms的延迟,下面写了个单个播放的小列子,用了一个线程等待1秒再播放,当然也可以选择某个事件来播放声音
private  SoundPool sp;
  private  int hit;
sp = new SoundPool(10, AudioManager.STREAM_MUSIC,100);
//第一个参数是最大连接数,这儿可以建立一个播放池,第二个参数是播放类型,第三个是声音质量
hit = sp.load(activity,R.raw.okk, 1);
//hit=sp. load(Context context, int resId, int priority) 
//从APK资源载入
hit = sp.load(FileDescriptor fd, long offset, long length, int priority)
//从FileDescriptor对象载入
//hit = sp.load(AssetFileDescriptor afd, int priority)
  //从Asset对象载入
//hit = sp.load(String path, int priority)
  //从完整文件路径名载入
new Thread(new Runnable() {
@Override
public void run() {
try {
                        Thread.sleep(1000);
sp.play(hit, 1, 1, 0, 0, 1);
  } catch (InterruptedException e) {
   }
   }
}).start();

你可能感兴趣的:(thread,游戏,android)