4

問題

切り替える方法を見つける:

  • いつも
  • 一度もない
  • サイレントモードのみ
  • サイレントモードでないときのみ

これらの選択肢は、パス --- メニュー >> 設定 >> サウンド >> バイブレーション --- 電話で見つかります。

電話のナビゲーションで簡単に変更できます (ちなみに、私の電話は 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は議論の末、最終的に自分で方法を見つけます。彼は次のサイトを参照しています。

https://android.googlesource.com/platform/packages/apps/Settings/+/froyo-release/src/com/android/settings/SoundSettings.java

そして、「com.android.settings.Settings クラスのソース コードを見て、振動を有効または無効にするメソッドの一部をコピーしました」と述べています。

私はこのサイトを精力的に調べましたが、彼が何をしたかを見つけることができませんでした. 誰かが彼の解決策を明確にすることができますか?

質問

「常に」、「決して」、「サイレントモードのみ」、「サイレントモードでないときのみ」を正確に切り替える方法はありますか?

4

1 に答える 1