我正在制作一个振动切换小部件(实际上,它的第一个版本已经在Market中了),但是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引入了“仅在静音模式下振动”和“在非静音模式下振动”,因此我不知道如何使其工作。当“振动”设置为“始终”或“从不”时,没有问题,但是只要用户手动将其设置为其他两个设置之一,应用程序就会开始执行奇怪的操作。
例如,如果我将其设置为“仅在静音模式下振动”,并且通过小部件关闭了振动,则会将其关闭,但是当我重新打开它时……它又回到“仅在静音模式下” “始终”。实际上,除非您通过“设置”->“声音”将其设置为“始终”,否则无法将其设置为“始终”,因此我想振动模式的组合框正在执行我不知道的其他操作。就像它将值存储在其他位置一样,因为即使我手动将其设置为“ Always”,当我禁用它并通过小部件(使用我之前发布的代码)再次启用它时,它仍会回到“仅在静音模式下振动” ”。
而且,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);
进入设置菜单->“振动”设置为“仅在静音模式下”
最佳答案
当某些应用程序弄乱了Nexus One的个人设置时,我不得不自己弄乱这些设置。他们来了:
始终在环上振动:
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);
切勿在环上振动:
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
仅在静音时振铃:
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT);
始终振动通知:
setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON);
切勿震动通知:
setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF);
振动仅在静音时通知:
setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ONLY_SILENT);
Change ringer mode:
AudioManager.setRingerMode(RINGER_MODE_NORMAL);
AudioManager.setRingerMode(RINGER_MODE_SILENT);
AudioManager.setRingerMode(RINGER_MODE_VIBRATE);
振动设置与振铃设置无关。随之而来的混乱。
关于android - 在Android 2.2上震动设定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3742323/