Android SoundPool 不播放声音

Posted

技术标签:

【中文标题】Android SoundPool 不播放声音【英文标题】:Android SoundPool plays no sound 【发布时间】:2020-02-19 14:58:13 【问题描述】:

我想在使用 SoundPool 单击按钮时播放短声。但是,当单击按钮时,尽管日志告诉我它已加载并“正在播放”,但没有出现任何声音。声音文件是一个 .ogg 以防万一。这是我的代码,buttonSound()onCreate() 中被调用。

void buttonSound()
    AudioAttributes attributes = new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
        .build();

    soundPool = new SoundPool.Builder().setAudioAttributes(attributes).build();

    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() 
        @Override
        public void onLoadComplete(SoundPool soundPool, int sampleId,
            int status) 
            Log.d("SOUNDPOOL", "COMPLETE "+button);
        
    );
    button = soundPool.load(this, R.raw.button, 1);




public void onClick(View view) 
    switch (view.getId()) 
        case R.id.button_back:
            // Sound loaded
            if(button != 0) 
                soundPool.play(button, 1f, 1f, 1, 0, 1f);
                Log.d("PLAYING", "PLAYING");
            
            break;

【问题讨论】:

【参考方案1】:

所以显然AudioAttributes.USAGE_ASSISTANCE_SONIFICATION 是问题所在,它适用于AudioAttributes.USAGE_GAMEAudioAttributes.USAGE_MEDIA。不过,我不知道为什么。

【讨论】:

以上是关于Android SoundPool 不播放声音的主要内容,如果未能解决你的问题,请参考以下文章

Android SoundPool 不播放 wav 格式的声音

为啥我的 SoundPool 声音第一次在 Android 上没有播放?

Android SoundPool 在播放另一个声音之前不会第二次播放相同的声音

Android 游戏 - SoundPool 没有在 Motorola Droid X2 上播放声音

如何使用 Android 动画播放“滴答滴答”声音(可能使用“Android MediaPlayer / SoundPool”)?

在android soundpool中播放新声音时如何停止所有其他以前的声音?