问题
寻找在以下选项之间切换的方法:
- 始终
- 从不
- 仅静音模式
- 非静音模式时
这些选项可以通过手机上的路径——菜单>>设置>>声音>>振动——找到。
通过在手机上导航很容易更改(顺便说一下,我的手机是安卓2.3.3的摩托罗拉Atrix 2),但我还没有找到在我的代码中使用的方法。
代码
基本上,我有一些按钮,当点击时应该操作振动设置。其中一个按钮如下所示:
bSilent.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF);
Toast.makeText(getBaseContext(), "Set to Never", Toast.LENGTH_SHORT).show();
}
});
audioManager在此代码上方的某个位置被定义为:
final AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
Android提供了AudioManager.setVibrateSetting方法,但它现在已被弃用。相反,他们引用了getRingerMode方法。
http://developer.android.com/reference/android/media/AudioManager.html
然而,使用这些功能(和它们的任意组合)不能有效地在四种振动设置之间切换。例如,如果我从“始终”开始,似乎无法到达“从不”。所有振动方法的组合只会在“始终”和“仅静音模式”之间切换。另一方面,如果我从“从不”开始,提供的方法只会在“从不”和“非静音模式下”之间切换。因此,假设我想将手机设为静音模式并希望它振动。然后,我决定不再希望它振动。我无法从“始终”或“仅静音模式”切换到“从不”。
过去的解决方案和帖子
我知道这在StackOverflow上有些重复的帖子。这个问题以前已经被提出过...
这里是:Android 2.2上的振动设置 而且(最近)在这里:更改振动设置
这些链接中的前一个提供了一个“答案”。LuTHieR最终参与了讨论,并最终自己找到了解决办法。他参考了该网站:
他说:“我查看了com.android.settings.Settings类的源代码,并复制了启用和禁用振动的部分方法。”
我仔细查看了这个网站,但没有找到他的方法。有人能澄清他的解决方案吗?
问题
有人有一种精确切换“始终”,“从不”,“仅在静音模式下”和“仅在非静音模式下”的方法吗?