LuT*_*ieR 1 settings android vibration android-2.2-froyo
我正在制作一个振动切换小部件(事实上,它的第一个版本已经在市场上)但我在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);
Run Code Online (Sandbox Code Playgroud)
和相同,但VIBRATE_SETTING_ON
在两条线上打开它,它的工作正常.
但是,由于Android 2.2引入了"仅在静音模式下振动"和"在不在静音模式下振动",我不知道如何使其工作.当vibrate设置为"Always"或"Never"时没有问题,但是一旦用户手动将其设置为其他两个设置之一,应用程序就会开始做一些奇怪的事情.
例如,如果我将它设置为"仅在静音模式下振动"并且通过我的小部件关闭振动,它会关闭,但是当我重新打开它时它会返回"仅在静音模式下"而不是"永远".事实上,没有办法将它设置回"Always",除非你通过Settings - > Sound进行,所以我猜振动模式的组合框正在做一些我不知道的事情.就像它将值存储在其他地方一样,因为即使我手动设置为"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);
Run Code Online (Sandbox Code Playgroud)
切勿在戒指上振动:
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
Run Code Online (Sandbox Code Playgroud)
仅在静音时振铃:
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT);
Run Code Online (Sandbox Code Playgroud)
始终振动通知:
setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON);
Run Code Online (Sandbox Code Playgroud)
永远不要振动通知:
setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF);
Run Code Online (Sandbox Code Playgroud)
仅在静默时振动通知:
setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ONLY_SILENT);
Run Code Online (Sandbox Code Playgroud)
AudioManager.setRingerMode(RINGER_MODE_NORMAL); AudioManager.setRingerMode(RINGER_MODE_SILENT); AudioManager.setRingerMode(RINGER_MODE_VIBRATE);
振动设置与振铃设置无关.随之而来的是混乱.
归档时间: |
|
查看次数: |
8273 次 |
最近记录: |