Articles of surfaceview

SurfaceView的renderingThread是否与视图或活动具有相同的生命周期?

创建SurfaceView时,通常还要创建一个单独的线程来绘制到曲面上。 是否更好的编程习惯是在活动同时创建和销毁线程,或者同时表面是什么? 这两种方式有哪些优点/缺陷?

如何在surfaceview android上绘制图像

我想在surfaceview上添加图像并使其可点击。 我可以通过xml使用布局来做到这一点。 但我无法从代码中动态地执行此操作。 我甚至不能使用lockcanvas在canvas上绘制图像,因为我将SurfaceHoldertypes设置为SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS。所以我需要做什么才能在我的应用程序中的surfaceview上绘制图像。 请指导我?

PreviewCallback onPreviewFrame不会更改数据

我想用相机中的图像进行一些image processing并将其显示在SurfaceView上,但我不知道如何修改相机框架。 我试图使用setPreviewCallbackWithBuffer和onPreviewFrame但它们不能按预期工作,框架不会被修改。 /** A basic Camera preview class */ public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback { private SurfaceHolder mHolder; private Camera mCamera; private byte[] mData; private long prevFrameTick = System.currentTimeMillis(); Canvas mCanvas; public CameraPreview(Context context, Camera camera) { super(context); mCamera = camera; // Install a SurfaceHolder.Callback so we get notified when the […]

如何使用Android SurfaceView实现每秒30帧?

我正在寻找示例代码示例,演示如何使用Android SurfaceView实现每秒30帧? 假设每个帧从位置x和y开始绘制一个圆,并且每个帧将x和y递增1。 奖金问题:除此之外,我想覆盖另一个视图以显示文本内容,以便绘制任何图形显示在此文本内容下方。 怎么做到这一点?

设置SurfaceView的背景图像

有没有办法设置SurfaceView的背景图像? 是否必须在xml中完成,或者我可以用Java完成所有操作 – 我的构造函数中有一些看起来像这样的东西: Drawable sky = (getResources().getDrawable(R.drawable.sky)); this.setBackgroundDrawable(sky); 但它仍然没有显示任何东西。

相机预览仅在Android 4.2.2(S4,全高清屏幕)上显示不需要的磁贴

我的应用程序运行许多设备,但有2个用户发送了类似的图像,如下所示。 据我所知,这种行为只能在Android 4.2.2(三星S4)上看到。 在全高清屏幕上,似乎有3个160×600像素的压缩磁贴。 我尝试过全高清屏的AVD,但无法启动。 在4.03设备上我没有看到这个。 我不使用瓷砖。 有没有人暗示这出错了什么?

SurfaceView和ANativeWindow

我有一个关于创建SurfaceView并随后从中获取ANativeWindow的问题。 这样做是否合适 mSurfaceView = new SurfaceView(this); 在: onCreate() onStart() 询问的原因:据我了解,当我们失去焦点时,SurfaceView会被破坏(其他东西会掩盖整个屏幕),因此我们需要在每次获得焦点时重新创建它(执行onStart())。 或者SurfaceView是否保持hibernate状态并可重复使用? 继续,现在我想从上面提到的表面(在本机代码中)创建一个本机窗口。 这样做是否合适 ANativeWindow* newwindow = ANativeWindow_fromSurface(jniEnv, joSurface) in: onSurfaceCreated_native(…, jobject surface) onSurfaceChanged_native(…, jobject surface) 询问的原因:onSurfaceChanged似乎总是在onSurfaceCreated之后onSurfaceCreated因此我们可以选择何时创建本机窗口。 一方面,在onSurfaceCreated执行此操作似乎是合乎逻辑的,但两个jobject surface似乎引用了不同的对象! (通过在onSurfaceCreated中创建一个弱的全局引用以及在onSurfaceChanged中对NULL和surface进行检查来检查,请参阅下面的代码) onSurfaceCreated_native(JNIEnv env, … ,jobject surface) { myWeakObjectGlobal = env->NewWeakGlobalRef(surface); } onSurfaceChanged_native(JNIEnv env, … ,jobject surface) { if (env->IsSameObject(surface, myWeakObjectGlobal)) { LOGW(“onSurfaceChanged_native: new surface is SAME as […]

如何从android mediaplayer分离/释放surfaceview

我有一个在后台服务中运行的mediaplayer实例。 在我的主要活动中,我有一个surfaceview。 当活动启动并创建了surfaceview时,我绑定到服务并将mediaplayer的显示表面设置为我的主活动的surfaceview。 我用mPlayer.setSurface(sv.getHolder().getSurface()); video显示,到目前为止一切正常。 当我的surfaceview被销毁时,在surfaceDestroyed()回调中,我尝试通过调用mPlayer.setSurface(null);从mediaplayer中分离surfaceview mPlayer.setSurface(null); 。 问题是,当我这样做时,我从媒体播放器收到错误(错误代码1)。 所以我的问题是,在我设置了一个MediaPlayer对象后,我用mPlayer.setSurface(sv.getHolder().getSurface());设置了mPlayer.setSurface(sv.getHolder().getSurface()); 有没有办法释放或分离该surfaceview而不停止或重新初始化mediaplayer对象? 提前致谢。

在android中记录平方分辨率video

我试图以方形模式录制video,如instagram和藤。 到目前为止,我已经尝试了Camera和MediaRecorder类,并尝试了各种方法,如设置预览大小或video大小。但我无法实现结果。 我应该用什么方法来实现平方分辨率video? 我可以说以下方法可以帮助我 录制video,然后以平方分辨率裁剪(是否有可用于裁剪的库?) 或者录制本身应该是方形分辨率。 请指导我或建议一些新的方法或技巧。

类似Instagram的照片浏览器和Android中的相机function

我正在开发一个应用程序,我正在尝试开发像instagram照片/​​video捕获工具。 我在iOS中find了非常好的教程示例: https://github.com/ytakzk/Fusuma 有没有人知道类似的android for android? 请帮忙。 我已经完成了相机surfaceview。 但它不稳定,各种设备都崩溃了。