【发布时间】:2017-11-24 05:35:31
【问题描述】:
我被Surfaceview和runtime 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