Как выключить экран Androidа, продолжая имитировать включенный экран?

Ссылка скопирована
1 ответ

На Андроиде запущен VNC сервер, экран транслируется на ноут. Таким образом мониторю нужный софт, не отвлекаясь на смартфон. Хотелось бы потушить экран (для экономии энергопотребления) и продолжать наблюдать картинку на ноуте. Проблема в том, что выключая экран (и вручную, и по времени простоя), так же гаснет и картинка в клиенте VNC. Есть решение?
На смартфоне Android 13, ArrowOS, root присутствует.

Дополнительно:

Выключить экран и войти в режим сна -- это же совершенно разные вещи.

Если есть рут, проще всего просто яркость в 0 убирать вместо сна и не париться.

А вообще такое поддерживать должен сервер VNC.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Никита Орлов Ответ

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

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

import android.content.Context;
import android.view.WindowManager;
 
public class ScreenUtils {
    public static void turnScreenOff(Context context) {
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        WindowManager.LayoutParams params = new WindowManager.LayoutParams();
 
        params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
        params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                     | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
 
        windowManager.updateViewLayout(new ScreenOffView(context), params);
    }
 
    private static class ScreenOffView extends View {
        public ScreenOffView(Context context) {
            super(context);
        }
 
        @Override
        protected void onDraw(Canvas canvas) {
            // Отрисовка черного экрана
            Paint paint = new Paint();
            paint.setColor(Color.BLACK);
            canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
        }
    }
}

import android.content.Context; import android.view.WindowManager; public class ScreenUtils { public static void turnScreenOff(Context context) { WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY; params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; windowManager.updateViewLayout(new ScreenOffView(context), params); } private static class ScreenOffView extends View { public ScreenOffView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { // Отрисовка черного экрана Paint paint = new Paint(); paint.setColor(Color.BLACK); canvas.drawRect(0, 0, getWidth(), getHeight(), paint); } } }

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

Не забудьте добавить соответствующие разрешения в файл AndroidManifest.xml:

 

Таким образом, вы можете использовать указанный код для выключения экрана Android устройства, при этом сохраняя видимость экрана.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно