コールが来たときにデバイスの振動設定をオフにしたいとします。私はPHONE_STATE
ブロードキャストを受信したときの動作を実行するこの機能のためにBroadcastReceiverを実装しました。問題は、私は振動を全く止めることができないということです。私は、次のことを試してみました:着信の受信時に振動の設定がオフにならない - Android
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();
}
スレッドが電話を振動させる電話アプリで最初に開始されます。振動設定をオフに変更すると、このチェックはスキップされますが、すでに開始されているスレッドは実行を継続します。
また、着信時に振動をオンにする方法についても説明します。その場合、スレッドは最初に実行されていません。その後、振動設定をオンにすると起動します。私は電話アプリを変更しなければ、問題の解決策はないと思う。
私もそれに興味があります。私がそれを知っている限り、そのようなものです:振動を開始するスレッドまたはコンテキストは、後でそれを止めることができる唯一のものです。振動設定の変更について:アンドロイドにバグがあるようです。設定が変更された場合、リスナーには通知が送信されないため、振動を止めることはできません。 – SimonSays
こんにちは、Aman、この問題は解決しましたか?私は同じ問題に直面している、あなたが同じことについて私を助けることを願っています。 –