我正在开发一个扩展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
且声音效果不存在我想要检查它们是否存在,如果它们不存在,则禁用用户打开声音效果的选项。