Android: режим звонка изменен на бесшумный, не останавливает вибрацию телефона - PullRequest
9 голосов
/ 13 апреля 2010

Я пытаюсь изменить режим звонка телефона на RINGER_MODE_SILENT при входящем звонке, используя следующие строки кода.

AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);

Когда телефон перестает звонить, он продолжает вибрировать, хотя в документации RINGER_MODE_SILENT сказано, что он также должен перестать вибрировать.

Я использую SDK 1.6

UPDATE:

Поскольку я пока не нашел решения, я попытался деактивировать настройки вибрации вручную.

am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF );

Но это также не предотвращает вибрацию формы телефона при входящем звонке.

Есть идеи?

ОБНОВЛЕНИЕ 2:

Сегодня я попытался решить проблему, отменив вибрацию с помощью объекта Vibration.

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

Опять без успеха. Теперь у меня заканчиваются идеи и я спрашиваю себя, можно ли вообще остановить вибрацию.

ОБНОВЛЕНИЕ 3:

Я обнаружил еще один интересный факт, перечитав документацию класса Vibrator . В документации сказано:

"Если ваш процесс завершается, любая вибрация ты начал с остановки. "

Для меня это звучит так, как будто вибрация связана с процессом, который ее запустил, и к нему нельзя получить доступ из другого процесса.

Ответы [ 3 ]

2 голосов
/ 02 мая 2010

Извините, это известная ошибка в приложении "Телефон"; в настоящее время он не слушает AudioManager.RINGER_MODE_CHANGED_ACTION трансляции (что скажет ему остановить звонок и вибрацию). Я рекомендую оставить сообщение об ошибке на b.android.com .

0 голосов
/ 20 марта 2012

Вы пробовали разрешение MODIFY_AUDIO_SETTINGS ? SDK говорит: Позволяет приложению изменять глобальные настройки звука .

0 голосов
/ 19 апреля 2010

У меня тоже проблемы с отключением этой функции.

Я использовал AudioManager setVibrateSetting(), добавив AudioManager.VIBRATE_TYPE_NOTIFICATION и 0, но он все еще вибрирует при получении текстового сообщения.

Мне интересно, есть ли способ полностью переопределить эту функцию сейчас.

Я думаю, что метод Vibrator cancel() предназначен для вибрации, которая в настоящее время находится в процессе.

...