问题标签 [surfaceview]

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.

0 投票
1 回答
1531 浏览

android - PUSH_BUFFERS 类型的 SurfaceView

我有一些经验SurfaceView。为了防止不必要的重绘,我总是使用一个倒计时变量来告诉线程应该多久绘制一次视图。

但是,我正在考虑将其更改为使用“推面”。因此,只需将缓冲区推到表面并显示它,而不是在我的项目中到处设置倒计时变量。

我的问题是我找不到描述用法的好教程/资源。目前我有这样的事情:

我不知道如何让画布在我无法使用lockCanvas()文档中提到的情况下进行绘制。

0 投票
2 回答
10367 浏览

android - 使用 XML/Java 覆盖的 Android glSurfaceView

我启动了一个 Android OpenGL 应用程序,我有以下类:

当调用 A 类的 onCreate 时,它​​会创建一个 B 类类型的对象并调用:

到目前为止它有效,我花了几天时间。

现在我想向我的应用程序添加按钮并找到 SurfaceViewOverlay 示例。它使用一些 XML 来创建视图层次结构。我想创建一些与我简单地剪切和粘贴 XML 代码非常相似的东西:

现在记住我原来的类层次结构,我将如何初始化我的视图?我应该在 A 类的 onCreate() 中写什么?

我尝试使用:

它确实在屏幕上绘制了按钮和 GL 视图,但 GL 视图无法接收来自点击/点击的任何输入。

这可能是因为 Bobject 的 onTouchEvent() 没有被调用,因为它仅用作:

而不是:

目的。

而不是上面的代码,我真正想要的是让 Bobject 替换 glSurfaceView。但我不知道该怎么做。当我确实 findViewById() 时,似乎现在已经创建了 glSurfaceView。我如何要求它为 GL 视图使用 B 类型的对象?

对不起任何新手的错误。对 Android 来说是全新的。

编辑:我也试过这个:

我还尝试了以下方法:在我的 XML 文件中,我将 GLSurfaceView 更改为:

在我的 A 类构造函数中,我正在调用:

我应该如何在我的 XML 文件/活动中使用扩展 glSurfaceView 的自定义类?

0 投票
2 回答
2097 浏览

android - 如何在 Android 上的 GLSurfaceView 上播放视频?

我在 ApiDeoms 的 Cube 演示中添加了一个 SurfaceView。并尝试使用 MediaPlayer 来玩它。但它因低级播放器错误而失败,这在不同设备上有所不同。是否可以在 GLSurfaceView 上播放视频,或者只是硬件支持?

0 投票
2 回答
4461 浏览

android - Android::获取视频的帧?

我有一个视频,我需要获取它的一些帧。

我曾经做过以下事情:使用相关视频的大小创建一个标准位图,创建一个画布并将其设置为在位图上绘制。

我使用 SurfaceView 和 surfaceHolder。一个 mediaPlayer 在surfaceView 上绘图,我有一个调用surfaceView.draw(canvas) 的方法,它在画布上绘制,它绘制到位图,我最终采用并使用...

我的问题是 60% 的时间我得到黑框。媒体播放器在单独的线程中播放其内容,我不知道视频什么时候开始,什么时候 - 不,所以我相信这就是我黑屏的原因。

我需要解决方法、修复程序或其他方法来获取视频帧。

提前致谢。

0 投票
4 回答
2513 浏览

android - 重新创建表面视图时可以重新启动媒体播放器吗?(安卓)

我有一个活动(比如活动 A),它使用媒体播放器显示视频,呈现在表面视图中。
用例是暂停视频,启动另一个活动(比如活动 B),然后回到活动 A。
活动 A 停止但在转到 B 时没有销毁,这很好。
表面视图(因为不可见)被破坏(从通知回调中观察到)。
当回到活动 A 并使用 start() 重新启动媒体播放器时,媒体播放器会播放音频,但看不到视频。Logcat 上会输出类似这样的错误:

不幸的是,使用SurfaceHolderas 提供的新实例surfaceCreated()并没有帮助(即提供相同的错误)。

我已经在各种帖子中阅读过一个解决方案是重置mediaplayer并完全重新启动它,但是它效率不高,因为最终用户必须等待cycle + seekTo last positio流中的整个播放器准备 n。

正如音频播放的事实所示,这应该是视频解码器和新的surfaceholder/view.

恢复活动时恢复视频播放的最佳解决方案(最佳 = 最快)应该是什么?

0 投票
1 回答
762 浏览

android - SurfaceFlinger的界面是如何工作的?

sp<> 在哪里定义在android源代码中。请根据surfaceflinger回答。

0 投票
2 回答
1799 浏览

android - Android 在 tabactivity 的两个选项卡上重用单个布局 xml 文件中的 SurfaceView

我有一个带有表面视图和各种按钮的 layout.xml 文件。

这被加载(setContentView)到一个类的两个实例中。每个实例都是不同选项卡上的一个活动(在另一个选项卡活动类中)。

问题:如果我使用 tab1 (setCurrentTab) 作为打开选项卡启动应用程序,它 (tab1) 可以在表面上绘制。如果我将 tab2 设置为打开选项卡,它可以在表面上绘制。但是运行时在选项卡之间切换,只有初始选项卡可以在表面上绘制。就好像最初的标签在表面上有一个锁。

我已经尝试在暂停和恢复期间使非活动选项卡上的表面视图不可见(setvisibility),但这只是覆盖(我认为)另一个选项卡的表面视图副本。

问题:两个选项卡可以共享一个布局的表面视图吗?“恢复”选项卡如何从“暂停”选项卡中获得控制?

PS 我已经重写,拆散,尝试重新加载(在 3 周内以多种方式重建了这个应用程序,我觉得我缺少一些关于共享布局的东西。

0 投票
2 回答
840 浏览

java - 如何将 admob 广告添加到应用程序中?

我有 SurfaceView 在那里我画了一些草图。但我不使用 xml 布局......我可以在 Java Android 中将 AdView 添加到 SurfaceView 中吗?可能吗?

例如,在 ActionScript 中,它将是这样的:surfaceView.addChild(adView);

java中有类似的东西吗?

谢谢你的帮助!

0 投票
2 回答
3007 浏览

android - SurfaceView:ClassCastException,无法启动活动

试图让 Android 2.2 应用程序以 SurfaceView 作为基本视图启动,并在其顶部靠近屏幕底部的位置放置一个按钮。到目前为止,没有运气。每次尝试启动时都会崩溃。我已检查以确保该活动已在清单中注册。

这是我的java代码:

这是我的main.xml

和我的清单:

这是我的错误:

11-29 11:58:52.620: ERROR/AndroidRuntime(512): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.Dragable}: java.lang.ClassCastException: android.view.SurfaceView

在 SO 上进行搜索似乎找不到任何相关的内容。如果以前有人问过这个问题,我很抱歉。

0 投票
1 回答
3117 浏览

android - 如何在surfaceview类中保存分数/高分(int)?

我试图在我的游戏中保存一个高分。我的类扩展了 SurfaceView 并实现了 SurfaceHolder.Callback。所以评分系统很完美,但我真的很想做一个高分系统(你知道先看看分数是不是你的最高分,如果它被设置为高分)。