Предотвратить использование экрана в Android - PullRequest
0 голосов
/ 24 января 2012

Я довольно новичок в программировании на Android, но достаточно знаком с C / C ++ и Linux, чтобы немного программировать. В моем следующем проекте я должен запустить некоторое собственное приложение (приложения Linux) под Android.

Исполняемый файл, который я вызываю, использует устройство кадрового буфера для вывода экрана. Когда я пытаюсь просто вызвать программу, вывод программы теряется, потому что Android перерисовывает экран, перезаписывая кадровый буфер.

Чтобы предотвратить это, я создал «заглушающую» программу для Android, которая на самом деле не имеет оконного дизайна (только черный экран), но вызывает мою программу. Это работает хорошо в некоторой степени; однако всякий раз, когда я поворачиваю экран или появляется какое-либо уведомление о татуировке, Android перерисовывает экран, и мы возвращаемся к кадру № 1 ...

Таким образом, я задался вопросом, есть ли API «низкого уровня» или что-то, что может вообще запретить Android использовать экран, пока я его выпускаю. Вкратце, как WakeLock, предотвращающий спящий телефон, я хочу «блокировку», которая полностью блокирует экран (устройство кадрового буфера). Кто-нибудь знает, как мне добиться такой функциональности?

PS: Это может иметь какое-то отношение к SurfaceFlinger, но я где-то читал, что он не публикует API на уровне пользователя.

Ответы [ 2 ]

1 голос
/ 24 января 2012

На Android экран принадлежит SurfaceFlinger.

0 голосов
/ 24 января 2012

Исполняемый файл, который я вызываю, использует устройство кадрового буфера для вывода экрана.

Это не поддерживается.

Таким образом, я задался вопросом, существует ли API «низкого уровня» или что-то такое, что может вообще запретить Android использовать экран, пока я его выпускаю.

Ничего, что поддерживается на уровнях SDK или NDK. Вы можете создать свою собственную прошивку, которая делает все, что вы хотите, и загрузить эту прошивку на свое устройство.

В противном случае, пожалуйста, используйте поддерживаемые средства для взаимодействия с экраном (например, OpenGL изначально на C / C ++).

...