如何使用 Arcore 截屏?

2024-03-05

我正在尝试截取增强现实屏幕的屏幕截图并将其作为位图传递给另一个活动。

这是我用来截取屏幕截图的代码:

截图功能

public static void tmpScreenshot(Bitmap bmp, Context context){
        try {
            //Write file
            String filename = "bitmap.png";
            FileOutputStream stream = context.openFileOutput(filename, Context.MODE_PRIVATE);
            bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);

            //Cleanup
            stream.close();
            bmp.recycle();

            //Pop intent
            Intent in1 = new Intent(context, CostActivity.class);
            in1.putExtra("image", filename);
            context.startActivity(in1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

接收截图功能

private void loadTmpBitmap() {
        Bitmap bmp = null;
        String filename = getIntent().getStringExtra("image");
        try {
            FileInputStream is = this.openFileInput(filename);
            bmp = BitmapFactory.decodeStream(is);
            ImageView imageView = findViewById(R.id.test);
            imageView.setImageBitmap(Bitmap.createScaledBitmap(bmp, 120, 120, false));
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

即使截取了屏幕截图,当它传递到另一个活动时它也是黑色的。 另外,屏幕截图是在我按下后退按钮后才出现的

谁能帮我写一下用 ARCore 截图的代码吗?或者我做错了什么?


使用您的方法无法截取 SurfaceView 的屏幕截图。如果这样做,屏幕截图将是黑色的,因为它仅适用于常规视图。

你需要使用的是像素复制 https://developer.android.com/reference/android/view/PixelCopy.

    private void takePhoto() {
    ArSceneView view = arFragment.getArSceneView();

    // Create a bitmap the size of the scene view.
    final Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
            Bitmap.Config.ARGB_8888);

    // Create a handler thread to offload the processing of the image.
    final HandlerThread handlerThread = new HandlerThread("PixelCopier");
    handlerThread.start();
    // Make the request to copy.
    PixelCopy.request(view, bitmap, (copyResult) -> {
        if (copyResult == PixelCopy.SUCCESS) {
            try {
                saveBitmapToDisk(bitmap);
            } catch (IOException e) {
                Toast toast = Toast.makeText(VisualizerActivity.this, e.toString(),
                        Toast.LENGTH_LONG);
                toast.show();
                return;
            }
            SnackbarUtility.showSnackbarTypeLong(settingsButton, "Screenshot saved in /Pictures/Screenshots");




        } else {

            SnackbarUtility.showSnackbarTypeLong(settingsButton, "Failed to take screenshot");

        }
        handlerThread.quitSafely();
    }, new Handler(handlerThread.getLooper()));
}


public void saveBitmapToDisk(Bitmap bitmap) throws IOException {

  //  String path = Environment.getExternalStorageDirectory().toString() +  "/Pictures/Screenshots/";

    if (videoDirectory == null) {
        videoDirectory =
                new File(
                        Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
                                + "/Screenshots");
    }

    Calendar c = Calendar.getInstance();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");
    String formattedDate = df.format(c.getTime());

    File mediaFile = new File(videoDirectory, "FieldVisualizer"+formattedDate+".jpeg");

    FileOutputStream fileOutputStream = new FileOutputStream(mediaFile);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fileOutputStream);
    fileOutputStream.flush();
    fileOutputStream.close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Arcore 截屏? 的相关文章

随机推荐

  • 为什么会发生这种隐含的歧义行为?

    我有一个类型类Search 其中有一个实例Search A 如果我们有一个TypeClass1 A or a TypeClass2 A 实例 优先考虑1实例 编译如下 trait TypeClass1 A trait TypeClass2
  • 如何在一个 MVC 应用程序中组合 @DataJpaTest @SpringBootTest 来测试每一层?

    Here https stackoverflow com a 52968130 10894456 https stackoverflow com a 52968130 10894456很好地解释了为什么 DataJpaTest Spring
  • IBM Conversation API - 端点 URL 和参数应该是什么

    我尝试使用 Postman 工具访问 IBM 对话 但收到 404 未找到资源 错误 端点 https gateway watsonplatform net conversation api v1 workspaces 883c7704 0
  • 严格别名和指向联合字段的指针

    我有一个关于严格别名规则 联合和标准的问题 假设我们有以下代码 include
  • 清除网站的存储持久标志

    我正在使用navigator storage persist Chrome 上的 API 并已成功将其设置为true 但我希望 至少为了测试 能够清除设置放回false 据我所知 API 定义不包含需要清除的方法或标志 看https dev
  • 如何检测我是否在 next.js 中的客户端服务器上?

    我正在使用带有 Next js 的客户快递服务器 它在容器内运行 我正在做一个http请求isomorphic fetch获取我的渲染数据 我想做localhost当在服务器上运行时mysite com在客户端运行时 不确定实现此目的的最佳
  • 如何将 javascript 函数存储在队列中以便最终执行它们[重复]

    这个问题在这里已经有答案了 我在 javascript 中创建了一个 Queue 类 我想将函数作为数据存储在队列中 这样我就可以建立请求 函数调用 并在需要时响应它们 实际执行函数 有没有什么方法可以将函数存储为数据 有点类似于 setT
  • xmlserializer 未通过导入正确反序列化架构

    我一直在尝试使用从 xsd exe 中的架构生成的类来反序列化 C 中的 xml 文件 不幸的是 只有部分文件被正确反序列化 其余部分由于我无法解决的原因而返回为空 我的流程如下 从生成 C 代码的 myschema xsd 文件开始
  • PyEnv BUILD 在 MacOS 上安装 Python 失败

    尝试安装时Python 3 6 6 for Airflow using PyEnv on MacOS 我遇到构建失败与以下堆栈跟踪 File private var folders 6y kf699bqj2sgcgjshb20fr5zh00
  • 关于 AT&T x86 语法设计的问题

    谁能向我解释为什么 AT T 语法中的每个常量前面都有一个 为什么所有寄存器都有 这是否只是又一次试图让我做很多蹩脚的打字 另外 我是唯一一个发现 16 esp 相比之下确实违反直觉 esp 16 我知道它编译成同样的东西 但为什么有人想在
  • Docker 数据卷容器 - 我可以在 swarm 之间共享吗

    我知道如何使用 volumes from 创建数据卷容器并将其安装到多个其他容器 但我确实有一些关于它的用法和限制的问题 情况 我希望使用数据卷容器来为我的 Web 应用程序存储用户上传的图像 此数据卷容器将由运行 Web 前端的许多其他容
  • jQuery 检测点击禁用的提交按钮

    Fiddle http jsfiddle net ugzux http jsfiddle net ugzux 如您所见 我有一个带有禁用 通过 javascript 提交按钮的表单 无论如何 我希望能够将单击事件绑定到它 这样我就可以在允许
  • ARKitestimatedVerticalPlane命中测试获取平面旋转

    我正在使用 ARKit 在运行时检测墙壁 当触摸屏幕的某个点时 我使用 estimatedVerticalPlane 类型的命中测试 我正在尝试将 Y 旋转应用于与检测到的平面方向相对应的节点 我想计算旋转 private func com
  • VBA 将工作表保存到受密码保护的 PDF

    以下命令将活动表另存为 PDF ActiveSheet ExportAsFixedFormat Type xlTypePDF Filename C blahblah2 pdf Quality xlQualityStandard Ignore
  • 使用 Dancer 和 Postgres 的简单登录/授权系统

    作为 Perl 的新手 我正在努力寻找一种简单的方法来做到这一点 我在数据库中创建了一个非常简单的表 CREATE TABLE users id SERIAL NOT NULL PRIMARY KEY username TEXT NOT N
  • 如何在 Yii2 html::dropdownlist 中保留所选值?

    我认为有以下代码 and submit button 我的代码运行良好 但有一个大问题 我选择一个区域并单击搜索按钮 结果正确 当我单击下一页时 每页显示 10 个结果 它给了我
  • 如何在 WinDbg 中删除断点 ntdll!DbgBreakPoint+0x1

    我正在调试一个在将 WinDbg 设置为事后调试器时崩溃的程序 我在地址 77f7f571 设置了断点 当它被触发时 我常常得到以下信息 ERROR Symbol file could not be found Defaulted to e
  • 导入库 Oshi

    我想开发一个显示计算机信息的程序 我找到了一个名为 Oshi https github com oshi oshi 当我导入该库并运行我的代码时 出现异常 Exception in thread main java lang NoClass
  • 无法从 CursorWindow 读取第 0 行第 9 列

    我收到错误无法从 CursorWindow 读取第 0 行 第 9 列 在访问游标中的数据之前 请确保游标已正确初始化 另外两个人能够毫无错误地运行代码 但在我的机器上它会抛出错误 我很困惑 下面是处理 SQLite 的代码 提前致谢 抱歉
  • 如何使用 Arcore 截屏?

    我正在尝试截取增强现实屏幕的屏幕截图并将其作为位图传递给另一个活动 这是我用来截取屏幕截图的代码 截图功能 public static void tmpScreenshot Bitmap bmp Context context try Wr