在动画中添加音乐和声音
动画不能离开声音,充分利用各种媒体表现形式,提升软件的用户提验和操作体验,对于软件的推广,具有十分重要的意义。android中播放声音常用的有两种,java也有自己的声音处理。这里只是简单的使用android的方法。一种是MediaPlayer, 一种是SoundPool,两种方法,一种可以播入连续不断的背景音,一种只能播断促的爆炸声,按键音之类。一般来说,SoundPool能实现的,都可以使用MediaPlayer来替换实现,但MediaPlayer需要更多的内存和处理器,占用的系统资源比较多。但MediaPlayer能播放的音乐,SoundPool却不一定能够播放,因为SoundPool对音源文件大小的限制。当然他们之间还有一些其他的区别,但一些通用的方法是,使用SoundPool播放小的音源,不超过1MB,使用MediaPlayer播放大的长的音乐。最需要注意的点在于,SoundPool播放的音源需要提前加载,这就是他需要两个函数实现的原因,一个要在游戏起始时执行initUnlockSound2,然后在需要播放时使用playUnlockSound2播放,两个函数不可合为一个,否则你将会听不到想要的声音或者需要的效果。
private static MediaPlayer mp = null;
void playUnlockSound() {
mp = MediaPlayer.create(mContext, R.raw.unlock);
AudioManager mgr = (AudioManager) mContext.getSystemService(
mContext.AUDIO_SERVICE);
int streamVolume = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
try {
mp.setVolume(streamVolume, streamVolume);
//mp.attachAuxEffect(effectId)
//mp.setVideoScalingMode(mode);
mp.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.release();
mp = null;
}
});
}
SoundPool soundPool;
int sound_id;
void initUnlockSound2()
{
soundPool = new SoundPool(5, AudioManager.STREAM_SYSTEM, 1);
sound_id = soundPool.load(mContext, R.raw.unlock, 1);
}
void playUnlockSound2() {
soundPool.play(sound_id, 1.0f, 1.0f, 1, 0, 1.0f);
}
分享到:
补充:移动开发 , Android ,