Как я могу запустить 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();
}
});
Отправка либо SIGINT
, либо SIGHUP
в screenrecord
приведет к остановке записи.
Я просто попробовал следующее на unrooted (Android Android 6.0) в двух отдельных сеансах adb shell
:
в сеансе # 1:
screenrecord /sdcard/Movies/test.mpg
в сеансе # 2:
pkill -INT screenrecord
и захват screenrecord
остановлен после выдачи команды pkill