在三星设备上的Android应用程序内调用screenrecord无法正常工作

时间:2015-06-22 08:02:43

标签: android shell samsung-mobile nexus-5 screen-recording

我在我的应用程序中使用了android的screenrecord api。

因此我读了几个好的 postings

在有根的Nexus 5(Android 5.1)上,下面的代码可以正常运行。这意味着屏幕记录被触发,视频成功保存到SD卡。

在有根据的Samsung S6 Edge(Android 5.0.2)上,代码将在第一次调用 readLine()时停留。 mp4文件已创建,可以在SD卡上找到,但它是空的。

权限:

<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());
}

所以我在网上搜索,发现可能是没有什么可读的问题。我添加了&#34;&amp;&amp; echo done&#34;到shell命令但仍然没有变化。

我多次检查了日志,并在其中找到了两行 KNOX

  

I / libpersona:KNOX_SDCARD检查10202

     

I / libpersona:KNOX_SDCARD不是角色

我想也许KNOX会阻止我的应用写入SD卡。所以我从设备中删除了KNOX,但仍然出现了同样的问题。

我需要在这个特定的三星设备上运行此代码。 希望你们中的一些人知道如何运行代码。

谢谢Daniel

1 个答案:

答案 0 :(得分:0)

我还没有找到针对所述特定问题的解决方案。 但我偶然发现了另一个帮助我实现目标并记录Android设备屏幕的API。

MediaRecorderVirtualDisplay的帮助下,我能够将屏幕捕获到一个mp4文件到SD卡上。