相关疑难解决方法(0)

SurfaceHolder回调如何与Activity生命周期相关?

我一直在尝试实现一个需要在表面上进行相机预览的应用程序.在我看到事物时,活动和表面生命周期都包含以下状态:

  1. 当我第一次启动我的活动: onResume()->onSurfaceCreated()->onSurfaceChanged()
  2. 当我离开我的活动: onPause()->onSurfaceDestroyed()

在此方案中,我可以像打开/释放相机相应的调用和启动/停止在预览onPause/onResumeonSurfaceCreated()/onSurfaceDestroyed().

它工作正常,除非我锁定屏幕.当我启动应用程序时,然后锁定屏幕并在以后解锁它我看到:

onPause()- 屏幕锁定后没有别的 - 然后onResume()解锁后 - 之后没有表面回调.实际上,onResume()在按下电源按钮并且屏幕打开后调用,但是锁定屏幕仍然处于活动状态,因此,在活动变得均匀可见之前.

通过这种方案,我在解锁后得到一个黑屏,并且没有调用表面回调.

这是一个代码片段,不涉及相机的实际工作,而是SurfaceHolder回调.即使在我的手机上使用此代码,也会重现上述问题(按"后退"按钮时会以正常顺序调用回调,但在锁定屏幕时会丢失):

class Preview extends SurfaceView implements SurfaceHolder.Callback {

    private static final String tag= "Preview";

    public Preview(Context context) {
        super(context);
        Log.d(tag, "Preview()");
        SurfaceHolder holder = getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        Log.d(tag, "surfaceCreated");
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        Log.d(tag, "surfaceDestroyed");
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { …
Run Code Online (Sandbox Code Playgroud)

camera android surfaceview

71
推荐指数
2
解决办法
4万
查看次数

如何在运行时检查授权权限?

Android M(预览)中,用户可以选择特定应用并检索特定权限.

所以我问如何在运行时检查授权权限

android android-permissions android-6.0-marshmallow

39
推荐指数
4
解决办法
8万
查看次数

`opencv.android.JavaCameraView`和`opencv.android.NativeCameraView`有什么区别?

正如主题中所述:opencv.android.JavaCameraView和之间有什么区别opencv.android.NativeCameraView.一个是另一个有哪些优点,主要有哪些优势?

java camera android opencv

12
推荐指数
2
解决办法
1万
查看次数

您的设备似乎不支持相机

我遇到过一个错误,我猜这个错误在OpenCV应用程序中很常见.当我尝试运行该应用程序时,它说"看起来您的设备不支持相机(或它被锁定)".我已经看过这个这个,我已经做了他们所说的任何事情,比如授予摄像机许可并重启设备等.但问题仍然存在.我知道这个问题意味着任何其他应用程序必须使用相机,因此它被锁定.当我使用可能使用相机的相机清除所有应用程序的缓存时,它只能运行一次.在同样的问题之后.任何解决这个问题的方法?

谢谢.

camera android opencv locked

1
推荐指数
1
解决办法
7826
查看次数