【发布时间】:2011-04-14 03:04:15
【问题描述】:
我正在制作一个振动切换小部件(事实上,它的第一个版本已经在市场上)但我在 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); - 转到设置菜单 -> 振动设置为“仅在静音模式下”
【问题讨论】:
标签: android settings vibration android-2.2-froyo