Программа функционирует следующим образом: у пользователя есть список телефонных номеров, для которых мобильный телефон может вибрировать при входящем вызове, только когда никакое другое общесистемное приложение не обеспечит вибрацию (например, в режиме отключения звука). Я знаю, что это как-то против правил, потому что приложение должно уважать настройки пользователей, но приложение ограничено некоторыми определенными пользователями с этой потребностью. Я пробовал два пути, но ни один из них не удовлетворяет:
-
Слушайте состояние телефонии и напрямую запускайте службу вибрации с помощью моего собственного шаблона (с
Vibrator.vibrate()
). Этот метод эффективен, если входящие вызовы пока не действуют эффективно, когда телефон находится в состоянииCALL_STATE_RINGING
, и я предполагаю, что это связано с конфликтом с общесистемным приложением, которое фактически обрабатывает вибрацию при входящем вызове. -
Определите, вибрирует ли сотовый телефон при входящем вызове (с помощью
AudioManager.shouldVibrate()
), и решайте, следует ли изменять настройки вибрации (с помощьюAudioManager.setRingerMode()
иAudioManager.setVibrateSetting()
). Если настройки вибросигнала меняются приложением, они должны быть восстановлены после возвращения мобильного телефона в состояниеCALL_STATE_IDLE
. Однако этот метод по-прежнему не работает, без каких-либо признаков причины.
Я надеюсь, что кто-то может дать некоторые советы по этому вопросу. Комментарии к этим двум путям или другим предложениям приветствуются.