Wie kann ich adb shell screenrecord
auf einem Android
Gerät von Java
ausführen und die screenrecording
beenden?Wie kann ich adb screenrecord auf einem Android-Gerät von Java ausführen und die Bildschirmaufzeichnung beenden?
Momentan muss ich die --time-limit
angeben, um die Aufzeichnung zu beenden. Wenn ich versuche, das Video vor der Beendigung aufzunehmen, schlägt es fehl.
Gibt es eine Möglichkeit, ADB zu sagen, die Aufzeichnung zu stoppen? Gibt es eine Möglichkeit, den Thread so zu konfigurieren, dass er einen CTRL-C
an den Befehl shell
sendet?
Dies ist auf unbewurzelten Telefonen ausgeführt werden.
-Code
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();
}
});
Die Telefone sind nicht verwurzelt, also sieht es so aus, als hätten sie keinen Zugriff auf killall. adb shell killall -q = 1 screenrecord/system/bin/sh: killall: nicht gefunden – ALM
Hey Alex, meinst du den Prozess auf dem Server zu töten? Ich sehe es am Telefon töten. Es sieht so aus, als ob die freigeschalteten Android-Telefone keinen Zugriff auf killall oder killall haben, außer ich verpasse etwas? Dank /system/bin/sh: kill: 998: Operation – ALM
Doppel nicht gestattet überprüfen Sie Ihre 'pid' - es sollte keine Berechtigungsprobleme sein, wenn sie unter dem gleichen Benutzer läuft ID –