问题标签 [surfaceholder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - PUSH_BUFFERS 类型的 SurfaceView
我有一些经验SurfaceView
。为了防止不必要的重绘,我总是使用一个倒计时变量来告诉线程应该多久绘制一次视图。
但是,我正在考虑将其更改为使用“推面”。因此,只需将缓冲区推到表面并显示它,而不是在我的项目中到处设置倒计时变量。
我的问题是我找不到描述用法的好教程/资源。目前我有这样的事情:
我不知道如何让画布在我无法使用lockCanvas()
文档中提到的情况下进行绘制。
android - 在点击主页按钮后获取一个 android 应用程序以保持它的 OpenGL 上下文
首先是一些背景知识:我正在为 Android 和 iPhone 平台开发一款视频游戏。iPhone 的工作方式是,当用户点击主页按钮并稍后返回游戏时,在大多数情况下,游戏会从中断的地方继续,不会出现任何中断。我立即跳回我的渲染和游戏循环。在 iOS 平台上进行设置对我来说非常容易。在与谷歌结果搏斗数小时后,在 Android 上实现这一点让我大发雷霆:P
我在 iPhone 和 Android 上都有自己的 OpenGL 设置,一切都运行良好。我相信问题的根源在于我需要一个 SurfaceHolder 来创建 OpenGL 上下文。这是最糟糕的部分,当屏幕失去游戏的焦点(即按下主页按钮)时,Android 在我的 SurfaceView 类中调用 surfaceDestroyed 并基本上杀死了我的 opengl 上下文。当调用 surfaceCreated 时,我可以使用新的 SurfaceHolder 重新创建一个新的,但是我需要重新加载我所有的艺术资产,这违背了我想要完成的一切的目的。
我能否以某种方式阻止 Android 操作系统杀死我的表面支架,是否可以使用某种自定义视图来使其正常工作?清单中是否有一些设置可以帮助我(我对此表示怀疑,因为我已经彻底测试了大多数标志)?我知道这是可能的,因为愤怒的小鸟在 Android 操作系统上完美地做到了这一点。
android - 在两个 MediaPlayer 之间共享 VideoView 不起作用
我有一个主要的 MediaPlayer 可以很好地播放 RTSP 流,并且我使用了 AsyncTask 来缓冲另一个流的内容。它实现了这一点。当我尝试切换到第二个流时,我可以听到流切换并且它没有滞后,但我只听到声音。SurfaceHolder 拥有一个 VideoView,它已经准备好,我将它注册为两个媒体播放器的 Display。当我切换流时,我停止了旧的 MediaPlayer,但表面没有被破坏,这很好,但它不显示我的第二个视频。有任何想法吗?
android - 一个 Activity 中的两个 SurfaceHolders
我想在 SurfaceView 中播放一个 RTSP 流,同时在单独的线程中准备另一个。但是,MediaPlayer 在实例化两个 SurfaceHolder 时确实会报错:
Command PLAYER_PREPARE completed with an error or info PVMFErrResource
尽管如此,视频会被缓冲,但是当我切换到它时,只会播放音频。在 Android 文档中,声明这是未调用 setDisplay(SurfaceHolder) 的结果,但这就是导致错误的原因。有谁知道如何使视频成为流显示的一部分以及如何在调用 setDisplay 时避免错误?这是平台限制吗?谢谢。
android - 带有 SurfaceHolder.lockCanvas(矩形脏)的 LiveWallpaper
我想问一个在这里已经解决过一两次的问题,但是我发现的任何信息都无法帮助我克服几天前遇到的问题。
我想使用画布为 android 制作动态壁纸 - 它的图形不够复杂,不需要 OpenGL。为简单起见,假设它由纯色背景和两个较小的矩形组成。绘图包括三个独立的阶段(在单线程中):
- backgroundDraw() 请求整个画布锁定并在其上绘制纯色
- draw1() 请求部分 (Rect r1) 锁定并仅在锁定的矩形上绘制
- draw2() 请求部分 (Rect r2) 锁定并仅在锁定的矩形上绘制
我在多个 Android 版本(模拟器和设备)上对其进行了测试:2.1、2.2、2.3.3。它似乎只在后一个上正常工作(这里:http ://home.elka.pw.edu.pl/~pgawron/include/Android/android_233.jpg )。在以前的 Android 版本上,SurfaceHolder.lockCanvas(Rect dirty) resizes(!)dirty 作为参数传递给全屏的大小,并使用它进一步绘制结果在整个屏幕上绘制(这里:http ://home.elka.pw.edu .pl/~pgawron/include/Android/android_22.jpg)。事实上,我可以看到每个矩形是如何画得不好的(全屏):整个屏幕很快就会改变它的颜色。
不幸的是,谷歌找不到任何合适的 lockCanvas(Rect dirty) 用法示例。下面我附上我完整且唯一的用于测试目的的课程。在提供的屏幕截图放置的位置可以访问完整的 Eclipse 项目。
如果有人最终可以帮助我并更正我的代码(如果问题出在我的代码中),我将不胜感激。我真的在这上面浪费了太多时间。
BR,
彼得雷利
android - 在运行相机预览的表面上堆叠 ImageView?
我正在尝试在运行相机预览的表面上显示图像。到目前为止,我使用 SurfaceHolder 运行相机。我想也许我可以使用 FrameLayout 将图像堆叠在相机预览的顶部,但我不知道该怎么做。我该怎么做,或者有没有其他方法可以做到这一点?
我更喜欢以编程方式编写代码,但感谢任何帮助!
谢谢你
android - 如何通过按下按钮启动 xml 定义的表面视图?
我已经从另一个教程中对我的初始代码进行了模式化,以创建类来处理对 SurfaceView 的绘图。本教程(以及我发现的其他教程)将 xml 定义的 SurfaceView 与在创建活动时启动的类相关联。我的目标是在我的布局中按下按钮时在 xml 定义的表面视图中启动动画,并在我再次按下它时终止它。
此外,动画必须在我在 xml 中指定的区域内运行(而不是整个显示)。
为简单起见,我目前只在表面视图中绘制一个圆圈,直到我弄清楚如何让我的布局正常工作。
因此,当我单击 Go 按钮 (BattleActivity::onClick) 时,我的表面视图被创建和绘制,但它填充了整个显示,覆盖了我的布局中的其他控件,包括按钮。我希望动画只发生在定义为我的布局一部分的表面视图中(id=battleView)。
这是我的 XML 布局代码 (tabBattle.xml) 的一个子部分。
这是我的主要活动课程。这是在我导航到其布局 (tabBattle) 所在的选项卡视图时创建的。当我按下 Go 按钮时会调用 onClick。我在 onClick 中的意图是获取表面视图,创建一个新的 BattleView 实例,并将表面视图上下文传递给 BattleView 构造函数。这显然是不正确的,但我不知道该怎么做。
公共类 BattleActivity 扩展 Activity 实现 View.OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabbattle); }
}
SurfaceView 子类:
公共类 BattleView 扩展 SurfaceView 实现 SurfaceHolder.Callback { private int circleRadius; 私人油漆圈油漆;更新线程战更新线程;
}
正如您可能已经猜到的那样,我通常对 android 和 java 不熟悉。任何帮助是极大的赞赏!
格雷格
android - 独立的 android 相机应用程序可以工作,但当所述相机应用程序代码被另一个活动调用时不起作用
我构建了一个简单的相机应用程序(来自互联网上的各种来源,使用 SurfaceHolder)作为原型,以便稍后与更大的项目集成。
该应用程序运行良好。它不会崩溃并正确保存图像。
我开始将它与更大的项目集成。它现在从另一个活动开始(而不是作为主要活动)。它仍然显示预期的相机视图并且不会崩溃。
但是,它不会保存任何拍摄的照片。
独立相机应用程序和集成相机活动的代码是相同的。
我在没有调用 finish() 或启动其他活动的情况下测试了集成的相机代码(只是为了确保它正确输出图像)。
但它仍然不起作用。
有人遇到过这个吗?谢谢。
这是相机活动的源代码:
}
更新:我创建了一个只有两个活动的新 android 项目:一个主要活动和相机视图活动。主要活动只是通过单击按钮启动相机视图活动。并且仍然不会保存任何图像。
android - SurfaceHolder.lockCanvas() 对我的游戏应用程序来说花费的时间太长
我正在开发一款安卓游戏,我正在使用 SurfaceView。我有一个每 16ms 调用一次的方法(我想要 60fps)
当我运行我的应用程序时,LogCat 的输出是:
为什么画布的锁定/解锁需要太多时间?有没有更好的方法来解决我的问题?(也就是说,要有一个 60 fps 的应用程序)
谢谢!
android - Android SDK 中 SurfaceHolder.Callback 接口的问题
自从我不久前拿到我的 Droid X 之后,我就一直在琢磨研究 Android SDK 的想法,并且最近才采取行动。我在 Eclipse 中安装了 ADT 插件,下载并安装了 Android SDK (Rev. 11),并尝试了一些东西。我想尝试 2d 图形,因为它们与我在工作中花费的时间(嵌入式系统开发)大相径庭。
我尝试按照此处的教程进行操作,但由于实现的两个接口存在一些错误,因此无法构建。我正在尝试在 64 位 Windows 7 机器上构建 2.3.3。我将包含下面的代码,重要的警告是我不是一个典型的 Java 程序员,一些明显的东西很容易让我逃脱。
可绘制面板.java
ISurface.java
Android教程.java
我在DrawablePanel.java
surfaceChanged()、surfaceCreated() 和 surfaceDestroyed() 的定义中遇到以下错误:
对于onInitialize
和onUpdate
in也是一样的AndroidTutorial.java
。我迷路了,因为我可以在工作中复制/粘贴相同的东西(SDK 的第 10 版),没有错误。有什么想法吗?