Android отключает датчик приближения во время телефонного звонка

У меня есть приложение, которое делает телефонный звонок, а затем переключается обратно на мою деятельность во время телефонного звонка. Проблема в том, что если пользователь подносит руку к датчику приближения, то экран гаснет. Есть ли способ отключить датчик приближения от выключения телефона во время телефонного звонка?

Я пробовал использовать PROXIMITY_SCREEN_OFF_WAKE_LOCK и FULL_WAKE_LOCK; Я пытался использовать флаги окна (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); и я пытался использовать myView.setKeepScreenOn(true). Все пока безуспешно.

Кроме того, у меня есть прослушиватель для ACTION_SCREEN_OFF и ACTION_SCREEN_ON, поэтому, если пользователь по какой-либо причине нажмет кнопку питания, вызов завершится.


person Chris Feist    schedule 27.04.2012    source источник
comment
Это должно быть настройкой приложения для телефона, и вы ничего не можете контролировать. Почему это проблема? Во время разговора вы обычно держите телефон возле головы, а датчик приближения предотвращает случайное касание кнопок щекой (+ экономит заряд батареи, так как дисплей может быть выключен)   -  person zapl    schedule 27.04.2012
comment
Я понимаю, как это полезно в большинстве случаев. Пример того, где вы хотите, чтобы экран был включен, — это если мое приложение должно отображать качество звука телефонного звонка в режиме реального времени. Например, если через звонок передавалась известная звуковая дорожка, то вывод телефона сравнивался с оригиналом. В этом случае пользователю не нужно прослушивать звонок, а затем он может увидеть результаты вживую. Мое временное решение - не завершать вызов с помощью прослушивателя включения / выключения экрана; следовательно, нет возможности обнаружить кнопку питания.   -  person Chris Feist    schedule 18.05.2012
comment
Другой сценарий — когда вы участвуете в конференц-вызове, и во время этого вызова вы хотите отключить звук на своем конце, чтобы вы могли что-то сделать, прежде чем снова возобновить вызов. Таким образом, если датчик приближения отключен во время разговора, по умолчанию вам, возможно, придется нажать кнопку на устройстве, чтобы снова включить экран телефона, чтобы включить звук. AOSP должен иметь общедоступный метод для отключения датчика приближения во время разговора...   -  person ChuongPham    schedule 22.01.2014
comment
Вы когда-нибудь обходили это?   -  person Binoy Babu    schedule 20.12.2014
comment
@BinoyBabu Я думаю, вам следует попробовать получить блокировку пробуждения из фоновой службы. Получите блокировку пробуждения в onStartCommand службы и снимите ее в onDestroy. Затем запустите и остановите службу по мере необходимости.   -  person Shivam Verma    schedule 20.12.2014
comment
@BinoyBabu Нет, я этого не делал. Я пробовал несколько разных способов. Приобретение wakelock тоже не работает. Приложение «Телефон» использует PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, который кажется, имеет более высокий приоритет, чем другие wakelocks.   -  person Chris Feist    schedule 22.12.2014
comment
Спасибо, Крис. Пора двигаться дальше, я думаю.   -  person Binoy Babu    schedule 22.12.2014
comment
Ваша проблема кажется полной противоположностью следующей [проблеме и его ответу][1]. [1]: stackoverflow.com/q/21884181/1061944   -  person Murtaza Khursheed Hussain    schedule 24.12.2014