Как я могу запустить adb screenrecord на устройстве Android из Java и завершить запись экрана?

1

Как я могу запустить adb shell screenrecord на Android устройстве из Java и завершить screenrecording?

В настоящее время я должен указать --time-limit, чтобы закончить запись. Если я попытаюсь захватить видео до его окончания, это не сработает.

Есть ли способ сказать adb, чтобы остановить запись? Есть ли способ настроить поток для отправки команды CTRL-C в команду shell?

Это должно быть запущено на неиспользуемых телефонах.

код

videoExecutor.submit(() -> {
          //Start recording video
        String recordVideo = "screenrecord --time-limit " + testRun.getVideoLength() + " " + "/sdcard/" + logDate + ".mp4";
    try {
      device.executeShell(recordVideo);
  } catch (Exception e1) {
    e1.printStackTrace();
  }
    sleep(testRun.getVideoLength()*ONE_SECOND + TWO_SECONDS);  //gotta match the --time-limit above.

RemoteFile remote = new RemoteFile("/sdcard/" + logDate + ".mp4");
File local = new File(videoPath); //Save file to local machine
          if(!local.getParentFile().exists()) {
              local.getParentFile().mkdirs();
          }

    try {
      //Copy video from phone to computer
        try {
                  device.pull(remote, local);
              } catch (Exception e) {
                  e.printStackTrace();
              }
  } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }

      });
Теги:
multithreading
adb
threadpoolexecutor

1 ответ

1
Лучший ответ

Отправка либо SIGINT, либо SIGHUP в screenrecord приведет к остановке записи.

Я просто попробовал следующее на unrooted (Android Android 6.0) в двух отдельных сеансах adb shell:

в сеансе # 1:

screenrecord /sdcard/Movies/test.mpg

в сеансе # 2:

pkill -INT screenrecord

и захват screenrecord остановлен после выдачи команды pkill

  • 0
    Телефоны не рутированы, поэтому похоже, что у них нет доступа к killall. shell adb killall -q = 1 запись экрана / system / bin / sh: killall: не найдено
  • 0
    Эй, Алекс, ты имеешь в виду уничтожение процесса на сервере? Я смотрю на убийство по телефону. Похоже, что разблокированные телефоны Android не имеют доступа к kill или killall, если я что-то упустил? Спасибо / system / bin / sh: kill: 998: Операция не разрешена
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню