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

概述我被Surfaceview和运行时问题困扰,我需要在主要活动中使用Surfaceview显示摄像机预览,因此我在调用代码以显示摄像机预览时要求运行时权限.但是我在授予摄像头许可后立即初始化Surfaceview,那时surfaceCreated()回调从不调用,并且许可也被授予(我已经从“设置”中进行了检查).一

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

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

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

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

这是我的诱人代码,

在MainActivity中

@OverrIDepublic 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不会立即创建全部内容,希望文章能够帮你解决要求运行时权限后,Surfaceview不会立即创建所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1080464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存