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

В настоящее время я использую Media Projection + Media Recorder для записи экрана. Проблема, с которой я сталкиваюсь, заключается в том, что, когда мой телефон находится в альбомном режиме во время записи, записанное видео будет отображаться только в центре / середине экрана с черным сверху и снизу во время воспроизведения ( что это такое сейчас, что я хотел бы как вместо).

Я вижу там приложения (такие как AirShou), которые могут записывать в альбомной ориентации, и видео, которые они записывают, являются полноэкранными во время воспроизведения. Что мне нужно сделать, чтобы это произошло?

Спасибо!

1 ответ

Решение

В вашем вопросе вы не добавили ни одного проблемного изображения. Я пытался понять вашу проблему на моем пути. Поскольку у меня пока нет разрешения на комментирование, поэтому просто пытаюсь описать решение с предположением, что ваше видео записано и воспроизводится нормально: 1. В режиме "Пейзаж" изменения ширины и высоты вашего дисплея видят это. Изменяются ли ширина и высота в зависимости от ориентации?

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

            DisplayMetrics metrics = getResources().getDisplayMetrics();
        int screenWidth = metrics.widthPixels;
        int screenHeight = metrics.heightPixels;
        int screenDensity = metrics.densityDpi;

        // Start the video input.
        mVirtualDisplay = mMediaProjection.createVirtualDisplay("Recording Display", screenWidth,
                screenHeight, screenDensity, 0 /* flags */, mInputSurface,
                null /* callback */, null /* handler */);

Если кто-то все еще ищет ответ - в дополнение к тому, что предложил @md-sulayman, убедитесь, что вы также поменяли местами ширину и высоту в

mediaRecorder.setVideoSize

как это -

mMediaRecorder.setVideoSize(WIDTH, HEIGHT); // for portrait

а также

mMediaRecorder.setVideoSize(HEIGHT,WIDTH); // for landscape