Настройка вибрации не выключается при получении входящего вызова - Android - PullRequest
8 голосов
/ 09 ноября 2011

Я хочу отключить настройку вибрации устройства при поступлении вызова. Я реализовал 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();
}

Поток изначально запускается приложением Телефон, которое вибрирует телефон Когда я изменяю настройку вибрации на off, эта проверка пропускается, но уже запущенный поток продолжает работать.

Это также объясняет, как вибрации могут быть включены при входящем звонке. В этом случае поток не работает изначально. Затем он запускается, когда я включаю настройку вибрации. Я не думаю, что есть какое-либо решение проблемы без изменения приложения Phone.

1 Ответ

0 голосов
/ 15 июня 2012

это:

Vibrator vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();

вам не поможет, так как отменяет новый экземпляр вибратора.

Я могу представить, что слишком поздно выключать вибрацию устройства, если вызов уже поступает, поскольку вибрация уже происходит. Поэтому вам придется сделать это до того, как поступит звонок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...