问题标签 [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 - 表面支架上的凸轮图片,绘制:因表面类型而出现异常
我正在使用 aSurfaceView
以SurfaceHolder
在我的测试应用程序中使用相机预览开始。
我想使用 CameraPreview(随 SDK 版本 7 的 SDK 示例提供)。在 UI 上单击即可拍摄一张照片。这是Preview
课程:
}
接下来我尝试Canvas
对SurfaceHolder
. 因此我打电话给canvas = holder.lockCanvas()
. 这将导致IllegalArgumentException
带有消息:
现在,文档声明不推荐使用这些表面类型,设置的值将被忽略。但是,仅当我将类型设置为此特定值时,相机预览才有效。
How can I achieve drawing on the Canvas
of the SurfaceView
the picture taken is displayed in? Or should that be put on a different layer/view?
android - 让正在运行的 android.media.MediaPlayer 跨应用程序中的活动持续存在
我正在尝试显示一个视频流,该视频流从我的应用程序的一个活动开始,并跟随用户到应用程序中的其他活动,而无需重新准备。对活动更改稍作停顿是可以的,但不应重新启动。在一项活动中一切正常,但在切换活动时,MediaPlayer
似乎不想连接到新的SurfaceHolder
. 音频效果很好,几乎没有障碍。
我一直在尝试通过SurfaceView
使用应用程序上下文初始化的子类来做到这一点。Button
(当我改用简单的视图(例如通过 HTTP——是的,我验证了我可以正常使用 MediaPlayer 播放它),然后调用prepareAsync
. 在我SurfaceHolder.Callback
的surfaceCreated
方法中,我调用setDisplay
and (如果玩家已完成准备)start
。在surfaceDestroyed
我调用的方法pause
中。如果表面已经创建,我会在准备回调中调用 start。
在这一点上,我不知道该怎么做。有任何想法吗?
android - SurfaceHolder.lockCanvas() 返回 null
我正在制作一款游戏,由于我是 Android 新手,我的设计基于LunarLander 示例代码。在其设计中,GameThread.doStart()
调用 from GameActivity
,然后线程从其GameThread.run()
循环中运行所有内容,如下所示(为清楚起见,已删除大部分代码):
.
为了尝试解决我遇到的一些问题,我尝试将更多的控制权交给 GameActivity,如下所示:
.
除非我这样做lockCanvas()
总是返回 null,因此我无法在屏幕上绘制任何内容。正如我所说,我对 Android 还是很陌生,所以我不知道为什么第二种情况不起作用。任何人都知道发生了什么或为什么它不起作用?
编辑:根据我的测试,永远不会创建表面。在此期间GameView.onResume()
,我让活动等待表面被创建,然后再继续游戏,但它一直在等待。为什么第一个实例是创建表面的唯一情况?
android - Canvas 停止识别痕迹 Android
试图制作一个使用 MotionEvent.ACTION_MOVE 的画布。然而,在线程启动后,水平线绘制正确,但其他线均无效或零星。一旦我发布事件,线条就会自行清除。
[编辑] 这是因为画布嵌套在 ScrollView 中。
android - 如果表面不在前景中,SurfaceHolder.lockCanvas 返回 null
我目前正在使用 Android 中的 LiveWallpaper 进行测试。我正在使用如下代码在画布上绘制一些东西:
这部分在正常情况下工作正常。但是,我有一个侦听器,只要在与此服务对应的设置中更改设置时,它就会执行此代码。似乎每当我从设置活动中执行此代码时,我都会得到一个NullPointer
方法c.save()
。
似乎只有当墙纸不在前台时,holder.lockCanvas()。当它不在前景时,是否不可能绘制到这个表面?
java - 安卓——SurfaceView。在不清除屏幕的情况下更新。(注:我是菜鸟)
我在尝试使用 SurfaceView 时遇到了一个奇怪的问题。像这个一样,它可以工作,但它会在 2 帧之间闪烁*。另外,unlockCanvasAndPost 大约需要 30-50Ms,这正常吗?
在这种情况下,每次重绘所有内容都不是一个好主意,我认为每帧重绘 350 个点不是一个好主意。
*在两帧之间闪烁:假设我在 (X,X) 处每帧画一个点,X 是帧号。我会看到点 1,1 3,3 5,5 7,7 9,9 出现在每个受损帧上,点 2,2 4,4 6,6 8,8 出现在每对帧上。
这是绘制的代码:
android - 是否可以通过缓冲区将摄像机中的视频录制到文件中?
特别是,这是我想要的设置:Android 设备上的内置摄像头正在录制实时视频。该视频正在保存到一个缓冲区中,该缓冲区可以保存几秒钟的视频。当缓冲区已满时,缓冲区中最旧的帧将被添加到磁盘上的视频文件中,以便为来自摄像机的新帧腾出空间。然后可以使用缓冲区中的数据在视频中短暂向后跳过。
我在想我们会使用 mediaRecorder(和 mediaPlayer?)和 Surface 来分别获取视频,使用 addCallbackBuffer 创建缓冲区,然后使用 setPreviewCallbackWithBuffer 显示缓冲区中的视频。我不完全确定从那里去哪里,或者那是否完全是错误的轨道;我在这方面有点新手。
java - Android 相机将无法工作。开始预览失败
我从 LogCat 收到这些错误:
这是活动类:
MySurfaceView 类:
CameraSurfaceView 类:
最后是 MyRender 类:
android - 取消意图选择器后重新打开相机
我创建了一个CameraView
扩展的自定义相机预览视图,SurfaceView
它还实现了SurfaceHolder.Callback
接口。视图与相机一起操作。当您打开视图时,它会显示相机预览。在同一屏幕上,还覆盖了两个按钮 - “拍照”、“从图库中选择”。保存CameraView
发布和重新打开相机的活动onPause()
和onResume()
方法。
如果我单击“从图库中选择”按钮,则会创建以下意图:
如果只有一个活动可以响应此意图,那很好。活动自动打开,相机被释放。我也可以在画廊时进行回击,然后我将回到CameraView
活动中,并恢复相机预览。
如果有多个活动可以处理这个意图,那么有趣的部分就会开始,并且会弹出意图选择器对话框。当意图选择器对话框产生,onPause()
在父活动中被调用并且相机被释放时,屏幕变黑。如果我没有从对话框中选择意图,而是单击手机上的后退按钮,onResume()
则会调用,但相机预览永远不会回来。要让相机预览再次显示,我需要返回上一个活动并返回预览活动。
发生以下问题是因为,当对话框被引发时,只会onPause()
被调用,但如果我实际上切换到不同的活动,surfaceDestroyed()
也会被调用。onResume()
当使用后退按钮取消对话框surfaceChanged()
并且surfaceCreated()
永远不会被调用时,情况也是如此。
我的问题是如果取消意图选择器对话框,如何让相机预览重新出现。有没有办法显式触发SurfaceHolder.Callback
方法?我知道有 hiddenhideSurface()
和showSurface()
in SurfaceView
,但我不想走这条路。
android - android俄罗斯方块中的错误 - getEntry
当时我和一个朋友正在为一个学校项目编写经典游戏俄罗斯方块。我已经编程了一段时间,并且已经实现了旋转和移动块,以及 newBlock、draw 等方法,所以我认为现在可能是第一次运行它的最佳时机。但后来我收到错误消息:
我正在使用一个使用自建视图(surfaceHolder/surfaceView)的线程运行它,使用方法,基本上我正在学习老师的课程,她在那里编写了一个蛇游戏。因此,随着方法的更新,它们对俄罗斯方块来说是正确的,它应该可以工作,但现在我看不到错误。任何人都知道错误消息的含义,如果需要更多信息,只需粘贴问题。
我已经添加了很多 LOG 命令,我只是从 TetrisView (surfaceView) 构造函数和 Thread 中的构造函数中获得了 LOG,所以它永远不会在任何方法中。