其他分享
首页 > 其他分享> > 要求运行时权限后,Surfaceview不会立即创建

要求运行时权限后,Surfaceview不会立即创建

作者:互联网

我被Surfaceview和运行时问题困扰,

我需要在主要活动中使用Surfaceview显示摄像机预览,因此我在调用代码以显示摄像机预览时要求运行时权限.

但是我在授予摄像头许可后立即初始化Surfaceview,那时surfaceCreated()回调从不调用,并且许可也被授予(我已经从“设置”中进行了检查).

一旦我杀死了该应用程序并再次打开,它在此之后将非常完美.

这是我的诱人代码,

在MainActivity中

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    initCameraPreview();
}

在initCameraPreview()方法中,

public void initCameraPreview(){
    StartCameraPreview preview = new StartCameraPreview(context, surfaceView);

    preview.onCreate();
}

我在课堂上为SurfaceView创建了,
StartCameraPreview.java

public StartCameraPreview(Context context, SurfaceView surfaceView) {
    this.mContext = context;
    this.surfaceView = surfaceView;
}

public void onCreate() {
    if (checkCameraHardware()) {
        mCamera = getCameraInstance();

       // configure preview
        previewHolder = surfaceView.getHolder();
        previewHolder.addCallback(surfaceCallback);
        previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }
}

对不起,我不能分享很多代码.
所以我刚刚添加了初始化代码.
有谁遇到过这个问题,或者有人知道任何解决方案吗?

请帮忙
感谢在广告中.

解决方法:

最初尝试将SurfaceView的可见性设置为INVISIBLE,并在授予权限后将其设置为VISIBLE.这样,在许可结果之后将创建绘图图面.希望这可以帮助.

标签:surfaceview,runtime-permissions,android
来源: https://codeday.me/bug/20191111/2018509.html