Разрешить ввод с клавиатуры Bluetooth, даже если экран заблокирован
Я разрабатываю приложение, которое позволяет пользователю сканировать штрих-коды с помощью внешнего сканера штрих-кодов, подключенного через Bluetooth. Сканер штрих-кода действует как клавиатура, т.е. Android считает, что отсканированные штрих-коды были набраны на клавиатуре.
Приложение работает нормально, пока оно остается включенным.
После выключения экрана я могу продолжить сканирование штрих-кодов, но отсканированный текст больше не попадает в приложение, а вызывает действия на экране блокировки.
Есть ли способ разрешить ввод с внешней клавиатуры в приложение, хотя экран был выключен?
В качестве альтернативы мне придется заставить экран оставаться включенным, но это не является пуленепробиваемым, поскольку пользователь может случайно заблокировать экран.
ОБНОВИТЬ
Я сделал небольшой шаг в правильном направлении, используя:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
Это покажет приложение без (небезопасного) экрана блокировки при обработке нового ввода с клавиатуры. К сожалению, первая буква отсутствует. Это должно быть вызвано тем, что первая буква пробуждает экран, а остальная часть ввода достигает EditText
,
2 ответа
Это работает для меня в аналогичной ситуации. Просто держите экран включенным, пока ваше приложение находится на переднем плане.
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
);
Если вы теряете только первый номер, вы можете... восстановить его, используя контрольную цифру.
Я знаю, что это взлом, но это должно решить эту проблему.