AudioManager声音效果仅适用于某些设备

时间:2017-10-01 23:48:45

标签: android audio keyboard android-softkeyboard

我正在开发一个扩展InputMethodService的软键盘。键盘用户可以在键入时启用或禁用声音效果。我使用的是Android AudioManager

初始化服务时,我会检查首选项是否设置为播放音效。在这里,我获得了对AudioManager对象的引用,以及在一些小小的调用loadSoundEffects()之后。

在我的子类的onKey(int, int[])实现中,如果将首选项设置为播放声音效果,则调用此方法。

private void playSoundEffect(int keyCode) {
    int sound = AudioManager.FX_KEYPRESS_STANDARD;
    if (keyCode == 32)
        sound = AudioManager.FX_KEYPRESS_SPACEBAR;
    else if (keyCode == MyKeyboard.KEYCODE_DELETE)
        sound = AudioManager.FX_KEYPRESS_DELETE;
    else if (keyCode == MyKeyboard.KEYCODE_DONE || keyCode == 10)
        sound = AudioManager.FX_KEYPRESS_RETURN;
    Log.i("Lex", "sound=" + sound);
    mAudioManager.playSoundEffect(sound);
}

我在三星Galaxy S4(在API 21上)和两款阿尔卡特Ideal手机(运行API 21和24)上测试了这个代码。声音效果仅在三星手机上播放。

经过一些研究后,似乎阿尔卡特设备上并未包含声音效果。

有没有办法检查声音效果是否以编程方式存在?如果我正确使用AuidoManager且声音效果不存在我想要检查它们是否存在,如果它们存在,则禁用用户打开声音效果的选项。

0 个答案:

没有答案