前段时间,以为老铁遇到了一个问题。就是在使用ZXingLibrary第三方二次封装(非常的好用,在此安利一下)的时候,想满足一个需求:那就是在启动摄像头的时候,想直接打开闪光灯,但是一直会报错,初步判断是因为闪光灯在打开的时候,摄像头还没有初始化完全导致的。
进入zxing源码,发现了相关的摄像头初始化方法:
private void initCamera(SurfaceHolder surfaceHolder) {
try {
CameraManager.get().openDriver(surfaceHolder);
camera = CameraManager.get().getCamera();
} catch (Exception e) {
if (callBack != null) {
callBack.callBack(e);
}
return;
}
if (callBack != null) {
callBack.callBack(null);
}
if (handler == null) {
handler = new CaptureActivityHandler(this, decodeFormats, characterSet, viewfinderView);
}
}
既然找到了根源那就好办了,我注意到原来这里已经有了初始化的回调方法,只是访问权限为空,Java程序员都知道,默认访问权限为protected,但是此时要在外部类调用,只能将其访问权限改为public,此时便可以在回调方法里面完成闪光灯 的开启了,哈哈!
修改如下:
然后便可以在开启闪光灯的回调方法处调用闪光灯的开启方法啦:
由于修改十分简单,所以就不上源码了,哈哈!