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