如何在Android上正确使用setZOrderMediaOverlay?

2023-11-26

与许多其他人一样,我尝试在相机预览(使用 SurfaceView)上绘制 3D 对象(使用 GLSurfaceView),以及放置在顶部的一些按钮。我实际上得到了一个可以工作的原型,但是我无法让 onResume 正常工作。恢复后,GLSurfaceView 留在后面并且不再可见。我知道它正在工作,因为如果我从布局中删除 SurfaceView,我可以很好地看到绘图。

目标是 Nexus One,运行原生 2.3.3 ROM。

这是布局 xml:

<com.example.cameratest.GLPreview 
        android:id="@+id/cubes" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"/> 

<com.example.cameratest.Preview 
        android:id="@+id/camera" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"/> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/buttongroup" 
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="right" android:gravity="center">

    <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:id="@+id/buttonClose"></Button>
    <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:id="@+id/buttonMode"></Button>    
    <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:id="@+id/buttonCameraInfo"></Button>
</LinearLayout>


我已经为同样的问题苦苦挣扎了一段时间,但相信下面的代码现在可以工作了。 (暂停/锁定后,无论相机打开还是关闭,它都会继续工作)。

首先,我没有在布局文件中定义任何视图等 - 它们是在代码中创建的。以下是从主 onCreate() 方法调用的 - 请注意 augScreen 上的 setZOrderMediaOverlay()。

除了将 onPause() 和 onResume() 传递到 augScreen 之外,我在 onPause() 或 onResume() 中没有做任何特别的事情。

        // 1 - Camera Preview
        camScreen = new CameraPreview(this);
        setContentView(camScreen, new LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

    // 2 - 3D object display
        augScreen = new AR_SurfaceView(this, getViewRange());
        addContentView(augScreen, new LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        augScreen.setZOrderMediaOverlay(true);

    // 3 - Permanent overlay
    RelativeLayout overlayScreen = new OverlayView(this);
    addContentView(overlayScreen, new LayoutParams(
            LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    overlayScreen.setVisibility(View.VISIBLE);

    // 4 - UI buttons (toggleable)
        uiScreen = new UserInterfaceView(this);
        addContentView(uiScreen, new LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Android上正确使用setZOrderMediaOverlay? 的相关文章

随机推荐

  • 使用物理定律模拟轨道[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 在过去的几周里 我一直在尝试模拟太阳系模拟中的轨道 这是我作为大学模块的一部分进行的 简而言之 我的模拟是使用 Ogre3D 渲染引擎用 C 编写的 我尝试使用牛顿万有引力定律来
  • 未捕获的类型错误:无法读取 null 的属性“offsetTop”

    我正在使用 HTML CSS 和 JavaScript 创建一个带有粘性和响应式导航栏的网页 我创建了响应式导航栏 并试图使其具有粘性 问题是它不粘并且显示错误 未捕获的类型错误 无法读取 null 的属性 offsetTop HTML 代
  • Python3 和 pandas

    我检查了一些其他的答案 并在谷歌上进行了广泛的搜索 似乎找不到有人问过 回答过这个问题 我运行的是 Ubuntu 12 04 我安装了python2 7和python3 2 我运行了 sudo apt get install python
  • C 与 C++ 中具有静态存储持续时间的对象的初始化 [重复]

    这个问题在这里已经有答案了 可能的重复 main 返回什么 例如 以下代码编译时不会出现任何警告 include
  • 使用 Xamarin Form 获取设备属性?

    我正在使用 xamarin 表单设计一个跨平台应用程序 每个页面 视图 表单都是从代码隐藏设计的 现在我想读取用户使用的设备的高度和宽度 根据这些值 我想放置一些页眉和页脚 为了获取 Xamarin Forms 解决方案中的屏幕宽度 或高度
  • 预计加入路径!休眠错误

    我尝试进行连接 但不断收到此错误 预计加入路径 选择 t CourseId FROM 任务作为 t INNER JOIN 课程为 c CoursePermissions 为 cp 哪里 t CourseId 1 I have const s
  • 使用 Node.js 开发丰富的应用程序

    我是 Node js 的新手 需要使用 Node js 开发一个基于 Web 的丰富应用程序 现在我正在研究 Node js 的入门指南 我有机会查看该页面here并对数百个框架感到困惑 我不知道如何选择合适的框架 需要这方面的帮助才能做出
  • 从 HSQLDB 中记录 SQL 表达式

    我在我的应用程序中使用 HSQLDB 现在我需要记录执行的每一条sql语句 我不想自己处理 SQL 日志记录 HSQLDB 中是否有执行此操作的标准方法 HSQLDB 2 2 x 支持 SQL 日志记录 假设你的数据库名为test然后使用
  • OpenCV Android 背景减法

    我正在开发一个机器人项目 使用 Android 手机作为主处理器 并使用摄像头来检测运动 我拿到来自 OpenCV 的 Android 二进制包并正确安装 我可以使用 OpenCV 本机相机捕获图像并将其显示到屏幕上 不过 我在使用背景扣除
  • 带有 Rails 3.0 的 Google 地图 API

    我想知道是否有人使用过带有 Rails 3 的 Google Maps API 我正在寻找发布想法 gems 插件等 我玩过ym4r gm 插件今天几个小时 运气不太好 你在 Rails 3 上使用过这个 API 吗 提前致谢 仅供参考 我
  • C# 中的函数指针

    我想在某些方面 或两者 Delegate or MethodInfo有资格获得这个称号 然而 两者都没有提供我正在寻找的语法优美性 简而言之 有什么方法可以写出以下内容 FunctionPointer foo whatever create
  • orElse 如何在偏函数上工作

    我的行为非常奇怪 至少在我看来 orElse方法定义于PartialFunction 在我看来 val a PartialFunction String Unit case hello gt println Bye val b Partia
  • 错误:“brew link”步骤未成功完成

    我正在尝试通过 Homebrew 安装 Node js 不幸的是 我收到此错误 brew install node gt Downloading http nodejs org dist v0 8 10 node v0 8 10 tar g
  • 保存事件后触发 MS Word 宏

    我的 MS Word 2007 模板有一个页脚 其中包含文件名 用户将打开模板并执行 另存为 来制作文档 我希望页脚中显示的文件名立即更新为新文件名 有没有一个AfterSaveEvent或者我可以用作钩子来启动执行更新的 VBA 脚本的东
  • 使用迭代器时可以速记“begin..end”吗?

    怎样才能避免写作smth begin smth end 一直在使用迭代器 例如 如果您必须使用std reverse 它看起来像这样 std reverse mystr begin mystr end 但我想我在某个地方看到人们在做同样的事
  • 如何在 onStartup 和 onInstalled 上添加 Chrome 扩展侦听器?

    The chrome runtime API有一些事件可以用来将侦听器添加到上下文菜单 目前我正在使用chrome runtime onStartup像这样 chrome runtime onStartup addListener func
  • Spring Cloud Vault 和带有 Vault 后端的 Spring Cloud Config 之间的区别

    以下内容有什么区别 春云金库 http cloud spring io spring cloud vault 带有 Vault 后端的 Spring Cloud 配置服务器 http cloud spring io spring cloud
  • Raspberry Pi 自组织网络

    我想尝试使用 Raspberry Pi 进行一些网络项目 并且我只需要在一对 pi 之间发送数据包 作为第一步 我很高兴能够在临时模式下 ping 到 Raspberry Pi 尽管在网上查看了一些教程和示例 但我还没有成功地做到这一点 我
  • 回形针在开发中工作但在生产中不起作用?

    我对 Rails 还很陌生 似乎对回形针宝石有疑问 我安装了 gem 它在开发中运行良好 localhost 3000 但是当我在heroku 服务器上运行它时 由于某种原因它不想附加文件 并且应用程序中断 错误 500 页面 这是我运行的
  • 如何在Android上正确使用setZOrderMediaOverlay?

    与许多其他人一样 我尝试在相机预览 使用 SurfaceView 上绘制 3D 对象 使用 GLSurfaceView 以及放置在顶部的一些按钮 我实际上得到了一个可以工作的原型 但是我无法让 onResume 正常工作 恢复后 GLSur