【问题标题】:Call screenrecord within android app on samsung device not working在三星设备上的 android 应用程序中调用 screenrecord 无法正常工作
【发布时间】:2015-09-07 14:23:31
【问题描述】:

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

因此我读了几本不错的postings

在已植根的 Nexus 5 (Android 5.1) 上,以下代码可以正常工作。这意味着屏幕记录被触发并且视频成功保存到sdcard。

在已植根的三星 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

I/libpersona:KNOX_SDCARD 检查此为 10202

我/libpersona:KNOX_SDCARD 不是角色

我认为 KNOX 可能会阻止我的应用程序写入 sdcard。所以我从设备中删除了 KNOX,但仍然出现同样的问题。

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

谢谢丹尼尔

【问题讨论】:

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


    【解决方案1】:

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

    MediaRecorderVirtualDisplay 的帮助下,我能够将屏幕捕获到 sdcard 上的 mp4 文件中。

    【讨论】:

      猜你喜欢
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2017-05-29
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多