要求运行时权限后,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