22

プログラムは次のように機能します。ユーザーは電話番号のリストを持っており、他のシステム全体のアプリケーションが振動を提供しない場合(ミュートモードなど)にのみ、着信時に携帯電話が振動する可能性があります。アプリケーションはユーザーの設定を尊重する必要があるため、これはどういうわけかルールに違反していることを私は知っていますが、アプリケーションはこの必要性を持つ特定のユーザーに限定されています。私は2つの方法を試しましたが、どちらも満足のいくものではありません。

  1. テレフォニーの状態を聞いて、自分のパターン(with Vibrator.vibrate())でバイブレーションサービスを直接トリガーします。この方法は、着信がない場合でも効果的ですが、電話がCALL_STATE_RINGING状態のときにランダムに効果的です。これは、着信時の振動を実際に処理するシステム全体のアプリケーションとの競合が原因だと思います。

  2. 着信時に携帯電話が振動しているかどうかを判断し(とAudioManager.shouldVibrate())、バイブレーション設定を変更するかどうかを決定します(AudioManager.setRingerMode()AudioManager.setVibrateSetting())。アプリケーションによってバイブレーション設定が変更された場合、携帯電話が元の状態に戻ったら、バイブレーション設定を復元する必要がありますCALL_STATE_IDLE。ただし、この方法は、理由の兆候がない限り、まだ機能しない場合があります。

誰かがこの問題についてアドバイスをくれることを願っています。これらの2つの方法または他の提案についてのコメントは大歓迎です。

4

1 に答える 1

6

携帯電話を振動させるには、2つの設定で遊ぶ必要があります。1つ目は、AufioManagerを使用して設定する必要のあるサウンドモードです。

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(targetSoundMode);

2番目の部分は適切に文書化されておらず、これがコードの欠落している部分であると思います。

String VIBRATE_IN_SILENT_SETTING_NAME = "vibrate_in_silent";
Settings.System.putInt(getContentResolver(), VIBRATE_IN_SILENT_SETTING_NAME, 1);

1を使用してバイブレーションをオンにし、0を使用してバイブレーションをオフにします。

バイブレーション設定とモードの操作方法を完全に理解するには、次のリンクを参照してください:http: //hi-android.info/src/com/android/settings/SoundSettings.java.html

于 2012-05-09T04:46:32.593 に答える