バイブレーション切り替えウィジェットを作成しています (実際、最初のバージョンは既に市場に出ています) が、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で「マナーモード時のみバイブレーション」と「マナーモード以外でバイブレーション」が導入されたので、どうすれば動くのかわかりません。バイブレーションが「常に」または「なし」に設定されている場合は問題ありませんが、ユーザーが手動で他の 2 つの設定のいずれかに設定するとすぐに、アプリが奇妙な動作を開始します。
たとえば、「サイレントモードでのみ振動する」に設定していて、ウィジェットでバイブレーションをオフにすると、オフになりますが、オンに戻すと...代わりに「サイレントモードでのみ」に戻ります「いつも」の。実際、[設定] -> [サウンド] で設定しない限り、「常に」に戻す方法はないので、バイブレーション モードのコンボボックスが何か別のことをしていると思います。値を別の場所に保存したようです。手動で「常に」に設定しても、ウィジェットを介して無効にしてから再度有効にすると(前に投稿したコードを使用)、「サイレントモードでのみ振動する」に戻り続けるためです。 "。
さらに、AudioManager クラスには「サイレント モードのみ」(VIBRATE_SETTING_ONLY_SILENT) の値がありますが、「サイレント モードでない場合のみ」に設定すると VIBRATE_SETTING_ON を使用するため、それを検出する方法はありません (私が知っている、つまり)。
あまり混乱していないことを願っていますが、考えられるすべてのデータを提供したかったのです。そして、そのすべてのセットで...
2.2で振動設定を適切に処理する方法を知っている人はいますか? バイブレーションを完全に無効または有効にするために、設定または呼び出す必要がある他の変数はありますか? または、電話機を既知の状態に「リセット」して正常に動作させる方法はありますか?
問題 (または、少なくとも問題の 1 つ) を再現する手順は次のとおりです。
設定メニューからバイブレーションを「マナーモード時のみ」に設定してください。
ウィジェットで振動を「しない」に設定します。
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
バイブレーションが「なし」に設定されていることを設定メニューで確認します。
ウィジェットで振動を「常に」に設定します。
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);
- 設定メニューに移動します -> バイブは「サイレントモードのみ」に設定されています