簡體   English   中英

Soundpool 沒有播放任何聲音

[英]Soundpool is not playing any sound

我試圖讓 soundpool 工作,因為我需要將它用於一個項目。 問題是它沒有播放任何聲音。 我只是想播放測試聲音,看看它是否有效。 希望有人能看到我在這里做錯了什么。

public class MainActivity extends AppCompatActivity {

SoundPool soundPool;
int game_over;

@Override
protected void onCreate(
        Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        AudioAttributes audioAttributes = new AudioAttributes
                .Builder()
                .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .build();
        soundPool = new SoundPool
                .Builder()
                .setMaxStreams(4)
                .setAudioAttributes(audioAttributes)
                .build();
    }
    
    game_over = soundPool.load(this, R.raw.test, 1);
    soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
            soundPool.play(game_over, 1, 1, 1, 1, 1f);
        }
    });
}

}

load調用之前設置setOnLoadCompleteListener (應該使用sampleId ,因為game_over可能尚未分配)

soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
    @Override
    public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
        soundPool.play(sampleId, 1, 1, 1, 1, 1f);
    }
});
game_over = soundPool.load(this, R.raw.test, 1);

afaik SoundPool的所有load方法都是同步的——它們返回已加載音頻文件的 ID。 在加載音頻后設置OnLoadCompleteListener將不會調用此偵聽器,因為沒有更多要加載的內容

此代碼現在可以使用。 為什么它不在我的手機上播放是因為它使用的是系統音量而不是音樂音量。 希望這會在將來幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM