着信時のバイブレーション設定をオフにしたい。この機能のために、ブロードキャストの受信時にアクションを実行する BroadcastReceiver を実装しましたPHONE_STATE
。問題は、バイブレーションをまったくオフにできないことです。私は次のことを試しました:
AudioManager audioManager = (AudioManager)
context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
AudioManager.VIBRATE_SETTING_OFF);
また
Vibrator vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();
最初のアプローチは私には理想的です。着信時にバイブレーションを「オン」にすることもできます。ただし、このシナリオではそれらを「オフ」にすることはできません。
誰もこれを試しましたか?
編集:Androidの電話アプリコードを確認しました。次のコードはRinger.javaにあります。
if (shouldVibrate() && mVibratorThread == null) {
mContinueVibrating = true;
mVibratorThread = new VibratorThread();
mVibratorThread.start();
}
スレッドは、電話を振動させる電話アプリによって最初に開始されます。バイブレーション設定をオフに変更すると、このチェックはスキップされますが、既に開始されているスレッドは引き続き実行されます。
また、着信時にバイブレーションをオンにする方法についても説明します。その場合、スレッドは最初は実行されていません。そして、バイブレーション設定をオンにすると起動します。電話アプリを変更しない限り、問題の解決策はないと思います。