当前位置: 首页 > 知识库问答 >
问题:

在三星设备上的android应用程序中调用屏幕记录不工作

颜经艺
2023-03-14

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

因此,我读了几个好帖子

在一个根Nexus 5 (Android 5.1)上,下面的代码没有任何问题。这意味着屏幕记录被触发,视频被成功保存到sdcard。

在扎根的三星S6边缘(Android5.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());
}

所以我在网上搜索,发现可能是没有什么可读的问题。我补充了”

我检查了几次日志,发现其中有两行KNOX:

I/libpersona:KNOX_SDCARD检查10202

我/自由人:KNOX_SDCARD不是角色

我想也许诺克斯阻止我的应用程序写入sd卡。所以我把KNOX从设备上删除了,但还是出现了同样的问题。

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

谢谢丹尼尔

共有1个答案

何向荣
2023-03-14

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

在MediaRecorder和VirtualDisplay的帮助下,我能够将屏幕捕捉到sd卡上的mp4文件中。

 类似资料:
  • 问题内容: 我在Android Studio调试时遇到困难。尝试在调试模式下启动应用程序后,设备将显示警告,标题始终为“等待调试器”。我的清单文件中也有文件,并且好像设备已正确连接,因为我可以简单地运行我的应用程序而没有任何问题。我做错了什么? 问题答案: 删除,因为在运行/调试时,Android Studio中的应用程序已使用调试证书签名,因此该设置不是必需的。 然后从控制台检查设备是否正确连接

  • 那么当屏幕被锁定时,是否有任何方法显示特定的XAML页面。目前我正在使用toast通知来完成此操作。但是toast通知的问题是我对UI没有太多的控制。

  • 我想让应用程序像“简易屏幕录制器”。我必须从哪里开始,因为我搜索了很多,但没有找到任何开始的链接。有任何用于创建屏幕录制器的api,而不是屏幕截图。我不想使用javacv从屏幕截图创建视频。我只想让用户启动应用程序,点击开始录制按钮,然后用户在手机上所做的一切来录制这些内容。 1) Android系统中是否有相关的api。 2) 如何在android中创建屏幕录制器应用程序。 3)是没有任何api

  • 我正在尝试从应用程序开始屏幕录制,并遇到一些问题。我读过很多关于执行命令的文章,但似乎没有什么帮助。 问题是,当我开始屏幕记录文件时,它创建的大小为3014字节 <代码>(内容:[...]ftypisom[...]isom3gp4[...]),文件中不会记录任何内容。 我该如何修复它?

  • 在我将android Studio更新到2.0后,我无法在我的设备(华硕Zenphone 2)上调试应用程序。在我单击Android Studio中的调试图标后,我一直在调试选项卡中看到以下消息。 Android Studio UI中调试选项卡中的消息 我一直看到标题为“等待调试器”的警告对话框和强制关闭按钮。 我搜索了该消息,但似乎只有两个来自谷歌的结果。 我重新启动了Android Studi

  • 我的应用程序在android 11(三星设备)中作为应用程序dual运行时,webview出现问题。 当我加载如下url时: 我必须设置一个WebViewClient并覆盖一些方法,例如:onPageStarted、onPageFinished、onReceivedError……但没有调用回调。 注意:我的主应用程序工作正常,但它的双应用程序没有,它只在android 11中运行。 我有谷歌,但我