【发布时间】:2012-07-09 02:45:39
【问题描述】:
问题
寻找切换方法:
- 总是
- 从不
- 仅在静音模式下
- 仅当不处于静音模式时
这些选项是通过路径---菜单>>设置>>声音>>振动---在手机上找到的。
通过手机上的导航进行更改很简单(顺便说一下,我的手机是带有 Android 2.3.3 的 Motorola 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 上的重复帖子。这个问题之前已经提出过...
这里:Vibrate settings on Android 2.2
还有(最近)在这里:Changing vibrate setting
前一个链接提供了一个“答案”。 LuTHieR 最终参与了讨论,最终自己想出了一个办法。他引用了该网站:
并说“我查看了 com.android.settings.Settings 类的源代码并复制了部分启用和禁用振动的方法”。
我翻遍了这个网站,找不到他做了什么。谁能澄清他的解决方案?
问题
有没有人可以在“始终”、“从不”、“仅在静音模式”和“仅在不处于静音模式时”之间精确切换?
【问题讨论】:
标签: android settings vibration