ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-11-11 08:26:39  阅读:291  来源: 互联网

标签:surfaceview runtime-permissions android


我被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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有