【问题标题】:Surfaceview is not creating immidiately after asking for runtime permissionSurfaceview 在请求运行时许可后没有立即创建
【发布时间】:2017-11-24 05:35:31
【问题描述】:

我被Surfaceviewruntime perssion这个问题困住了,

我需要在主要活动中使用 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。
  • 授权后初始化surfaceview
  • 展示你是如何做到的
  • 好的,我正在更新我的问题

标签: android surfaceview runtime-permissions


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2012-02-23
    • 2011-07-28
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    相关资源
    最近更新 更多