Я пытаюсь изменить режим вызывного устройства телефона к RINGER_MODE_SILENT, когда вызов поступает при помощи следующих строк кода.
AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
В то время как телефон прекращает звонить, он продолжает вибрировать, хотя в документации RINGER_MODE_SILENT говорится, что он должен также прекратить вибрировать.
Я использую SDK 1.6
ОБНОВЛЕНИЕ:
Поскольку я еще не нашел решение, я пытался деактивировать настройки вибрации вручную.
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF );
Но это также не предотвращает телефонную форму, вибрирующую, когда вызов поступает.
Какие-либо идеи?
ОБНОВЛЕНИЕ 2:
Сегодня я пытался решить проблему путем отмены вибрации через объект Вибрации.
Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();
Снова, без успеха. Теперь я заканчиваюсь идеи и спрашиваю меня, если возможно остановить вибрацию вообще.
ОБНОВЛЕНИЕ 3:
Я обнаружил другой интересный факт, когда я перечитал документацию класса Вибропреобразователя. В документации говорится:
"Если Ваш процесс выйдет, то любая вибрация, с которой Вы запустили, остановится".
Это звучит мне, как будто вибрация связана с процессом, который запустил ее и не может быть получен доступ, формируют другой процесс.
Мне тоже не удается отключить эту функцию.
Я использовал AudioManager
setVibrateSetting ()
, вставил AudioManager.VIBRATE_TYPE_NOTIFICATION
и 0, но он все равно вибрирует при получении текстового сообщения.
Мне интересно, есть ли сейчас способ полностью переопределить эту функцию.
Я думаю, что метод Vibrator cancel ()
предназначен для вибрации, которая выполняется в данный момент.
Извините, это известная ошибка в приложении "Телефон"; в настоящее время он не прослушивает широковещательные сообщения AudioManager.RINGER_MODE_CHANGED_ACTION
(которые говорят ему, чтобы он остановил звонок и вибрацию). Я рекомендую зарегистрировать ошибку на b.android.com .