[英]Call screenrecord within android app on samsung device not working
我正在我的應用程序中使用android的screenrecord API。
因此,我讀了好幾篇文章
在扎根的Nexus 5(Android 5.1)上,以下代碼可以正常運行。 這意味着將觸發屏幕記錄,並將視頻成功保存到sdcard。
在扎根的Samsung S6 Edge(Android 5.0.2)上,代碼將在第一次調用readLine()時卡住。 mp4文件已創建,可以在sdcard上找到,但為空。
權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
這是我的代碼:
try {
Process process = Runtime.getRuntime().exec("su");
OutputStream stdin = process.getOutputStream();
InputStream stderr = process.getErrorStream();
InputStream stdout = process.getInputStream();
stdin.write(("/system/bin/screenrecord --time-limit 10 /sdcard/recording.mp4\n").getBytes());
stdin.write("exit\n".getBytes());
stdin.flush(); //flush stream
stdin.close(); //close stream
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while ((line = br.readLine()) != null) {
Log.i("Response: ", line);
mResults.append(line);
}
br.close();
br = new BufferedReader(new InputStreamReader(stderr));
while ((line = br.readLine()) != null) {
Log.e("Error: ", line);
mErrors.append(line);
}
br.close();
} catch(IOException ioe) {
Log.e(TAG, "IOException: " + ioe.toString());
}
因此,我在網上搜索后發現,可能什么也沒什么要讀。 我在shell命令中添加了“ && echo done”,但仍然沒有任何變化。
我檢查了幾次日志,發現其中兩行包含KNOX :
我/ libpersona:KNOX_SDCARD檢查10202
我/ libpersona:KNOX_SDCARD不是角色
我以為KNOX可能阻止我的應用程序寫入sdcard。 因此,我從設備中刪除了KNOX,但仍然出現相同的問題。
我需要在特定的三星設備上運行此代碼。 希望你們中的一些人對如何運行代碼有所了解。
謝謝丹尼爾
我還沒有找到解決上述特定問題的方法。 但是我偶然發現了另一個API,該API幫助我實現了自己的目標並記錄了Android設備的屏幕。
在MediaRecorder和VirtualDisplay的幫助下,我可以將屏幕捕獲到mp4文件中,並存入sdcard。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.