Android中用SoundPool播放音訊

山有木xi發表於2020-03-16

在手機上播聽歌和看影片毫無疑問是最常見的休閒方式,Android中也有一套完整的API實現播放音訊和影片

使用SoundPool播放音效

SoundPool類可用於管理和播放應用中的音訊資源,這些音訊資源可以放在儲存檔案中也可以包含在程式中,一般來說,SoundPool用來播放比較短的音效,比如遊戲中的各種音效

首先建立一個SoundPool物件

    private SoundPool sp;

然後

  1. 建立Builder物件,用 SoundPool.Builder builder

  2. 設定最大音訊數量,setMaxStreams()

  3. 預設音訊型別,setLegacyStreamType()

  4. 設定音訊型別,setAudioAttributes()

 if (Build.VERSION.SDK_INT >= 21) {
            SoundPool.Builder builder = new SoundPool.Builder();
            builder.setMaxStreams(2);
            AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
            attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC);
            builder.setAudioAttributes(attrBuilder.build());
            sp = builder.build();
        }
        else {
            sp = new SoundPool(2, AudioManager.STREAM_SYSTEM, 0);
        }

因為在Android中5.0也是API21以後SoundPool已經過時了,所以要判斷

然後用load載入音訊檔案,play播放

      int soundId1=sp.load(this,R.raw.winlog,1);
      int soundId2=sp.load(this,R.raw.lesson1,2);
        Button button1=(Button)findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sp.play(soundId1,1,1,1,0,1);
            }
        });
        Button button2=(Button)findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sp.play(soundId2,2,1,1,0,1);
            }
        });

SoundPool也有其他的方法,例如

  • pause(),暫停播放

  • release(),釋放SoundPool中載入的音訊資源

  • resume(),繼續播放暫停的影片

  • setLoop(),設定重複播放次數

  • setVlume(),設定音量

  • stop(),停止播放

  • unload(),解除安裝音訊資源

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2680613/,如需轉載,請註明出處,否則將追究法律責任。

相關文章