我正在制作一个振动切换小部件(事实上,它的第一个版本已经在市场上)但我在 Android 2.2 的振动设置方面遇到了一些问题。
直到 Android 2.1 我都没有问题,当我想禁用振动时我会这样做
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF);
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
和相同的,但VIBRATE_SETTING_ON
在两条线上都可以打开它,它工作正常。
但是,由于 Android 2.2 引入了“仅在静音模式下振动”和“在非静音模式下振动”,我不知道如何使其工作。当振动设置为“始终”或“从不”时没有问题,但一旦用户手动将其设置为其他两个设置之一,应用程序就会开始做奇怪的事情。
例如,如果我将它设置为“仅在静音模式下振动”并且我通过我的小部件关闭振动,它会关闭,但是当我重新打开它时......它会返回到“仅在静音模式下”的“总是”。实际上,除非您通过“设置”->“声音”进行设置,否则无法将其设置回“始终”,所以我猜振动模式的组合框正在做其他我不知道的事情。就像它将值存储在其他地方一样,因为即使我手动设置为“始终”,当我禁用它并通过小部件(使用我之前发布的代码)再次启用它时,它仍然会回到“仅在静音模式下振动”。
更重要的是,AudioManager 类中有一个值“仅在静音模式下”(VIBRATE_SETTING_ONLY_SILENT),但是当您将其设置为“仅在不处于静音模式时”时,它使用 VIBRATE_SETTING_ON,因此无法检测到它(不是我知道,我的意思是)。
希望我没有太混乱,但我想提供所有可能的数据。有了这一切……
有谁知道如何正确处理 2.2 中的振动设置?为了完全禁用或启用振动,我必须设置或调用任何其他变量吗?或者一种将手机“重置”到已知状态以使其正常工作的方法?
重现问题(或至少是其中一个问题)的步骤是:
通过设置菜单将振动设置为“仅在静音模式下”。
通过小部件将振动设置为“从不”:
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
在设置菜单中检查振动设置为“从不”。
通过小部件将振动设置为“始终”:
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);
- 转到设置菜单-> 振动设置为“仅在静音模式下”