問題
切り替える方法を見つける:
- いつも
- 一度もない
- サイレントモードのみ
- サイレントモードでないときのみ
これらの選択肢は、パス --- メニュー >> 設定 >> サウンド >> バイブレーション --- 電話で見つかります。
電話のナビゲーションで簡単に変更できます (ちなみに、私の電話は Android 2.3.3 を搭載した Motorola Atrix 2 です) が、コードで使用するメソッドをまだ見つけていません。
コード
基本的に、クリックしたときに振動設定を操作するボタンがあります。これらのボタンの 1 つを次に示します。
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
ただし、これらの機能 (およびそれらの任意の組み合わせ) を使用しても、4 つの振動設定間を効率的に移動することはできません。たとえば、「常に」から始めた場合、「決して」に到達することは一見不可能に思えます。バイブレーション方法のすべての組み合わせは、「常に」と「サイレントモードのみ」の間でのみ移動します。一方、「Never」で開始すると、提供されるメソッドは「Never」と「Only When Not in Silent Mode」の間でのみ切り替わります。
したがって、携帯電話をサイレント モードにして振動させたいとします。次に、これ以上振動させたくないことにしました。「常に」または「サイレントモードのみ」から「しない」に切り替えることができません。
過去の解決策と投稿
これが StackOverflow での重複した投稿であることは承知しています。この問題は以前にも取り上げられました...
こちら: Android 2.2 のバイブ設定
そして(最近)ここ:振動設定の変更
リンクの前者は「答え」を提供します。LuTHieRは議論の末、最終的に自分で方法を見つけます。彼は次のサイトを参照しています。
そして、「com.android.settings.Settings クラスのソース コードを見て、振動を有効または無効にするメソッドの一部をコピーしました」と述べています。
私はこのサイトを精力的に調べましたが、彼が何をしたかを見つけることができませんでした. 誰かが彼の解決策を明確にすることができますか?
質問
「常に」、「決して」、「サイレントモードのみ」、「サイレントモードでないときのみ」を正確に切り替える方法はありますか?