Разрешить ввод с клавиатуры 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
);

Если вы теряете только первый номер, вы можете... восстановить его, используя контрольную цифру.

Я знаю, что это взлом, но это должно решить эту проблему.

Другие вопросы по тегам