当前位置:操作系统 > 安卓/Android >>

在动画中添加音乐和声音

动画不能离开声音,充分利用各种媒体表现形式,提升软件的用户提验和操作体验,对于软件的推广,具有十分重要的意义。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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,