android zbar中的摄像头黑屏
我一直在我的一个android项目中工作,其中我需要集成扫描仪。我在项目中集成了Zbar扫描仪。我面临的问题有时是三星Tab 3的扫描仪区域显示黑屏。它在其他设备上工作得很好。我已经检查了nexus,帆布般的设备,它显示了完美的扫描屏幕。我的代码有问题吗?这是我的密码android zbar中的摄像头黑屏,android,barcode-scanner,zbar,Android,Barcode Scanner,Zbar,我一直在我的一个android项目中工作,其中我需要集成扫描仪。我在项目中集成了Zbar扫描仪。我面临的问题有时是三星Tab 3的扫描仪区域显示黑屏。它在其他设备上工作得很好。我已经检查了nexus,帆布般的设备,它显示了完美的扫描屏幕。我的代码有问题吗?这是我的密码 private void initControls() { try { { System.loadLibrary("iconv");
private void initControls() {
try {
{
System.loadLibrary("iconv");
}
surfaceViewFlash = (SurfaceView) mView.findViewById(R.id.PREVIEW);
surfaceViewFlash.setVisibility(View.INVISIBLE);
surfaceViewFlash.setVisibility(View.VISIBLE);
mCameraScanner = getCameraInstance();
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
previewingScanner = true;
autoFocusHandlerScanner = new Handler();
try {
// Instance barcode zBarScanner
zBarScanner = new ImageScanner();
zBarScanner.setConfig(0, Config.X_DENSITY, 3);
zBarScanner.setConfig(0, Config.Y_DENSITY, 3);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
mPreviewScanner = new CameraPreview(getActivity(), mCameraScanner, previewCb, autoFocusCB);
FrameLayout preview = (FrameLayout) mView.findViewById(R.id.cameraPreview);
preview.addView(mPreviewScanner);
if (barcodeScanned) {
barcodeScanned = false;
mCameraScanner.setPreviewCallback(previewCb);
mCameraScanner.startPreview();
previewingScanner = true;
Log.e("initControls", "initControls");
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* A safe way to get an instance of the Camera object.
*/
public Camera getCameraInstance() {
Camera c = null;
int frontId = 0, backId = 0;
try {
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
frontId = i;
} else if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
backId = i;
}
}
c = Camera.open(backId);
} catch (Exception e) {
e.printStackTrace();
GeneralAlertDialog.createDialog(getActivity(), getString(R.string.app_name), "Camera is not working, Please try again.", new DialogDismiss() {
@Override
public void onDismiss() {
getCallBackForCloseScanner().OnCloseButtonClickOfScanner();
}
});
}
return c;
}
private void releaseCamera() {
if (mCameraScanner != null) {
mCameraScanner.cancelAutoFocus();
previewingScanner = false;
mCameraScanner.setPreviewCallback(null);
mPreviewScanner.getHolder().removeCallback(mPreviewScanner);
mCameraScanner.stopPreview();
mCameraScanner.release();
mCameraScanner = null;
mPreviewScanner = null;
}
}
Runnable doAutoFocus = new Runnable() {
public void run() {
try {
if (previewingScanner) {
if (mCameraScanner == null)
mCameraScanner = getCameraInstance();
Camera.Parameters parameters = null;
Log.e("mCameraScanner", mCameraScanner + "");
if (null != mCameraScanner.getParameters()) {
parameters = mCameraScanner.getParameters();
}
List<String> focusModes = parameters.getSupportedFocusModes();
if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
mCameraScanner.setParameters(parameters);
mCameraScanner.autoFocus(autoFocusCB);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
private void initControls(){
试一试{
{
系统加载库(“iconv”);
}
surfaceViewFlash=(SurfaceView)mView.findViewById(R.id.PREVIEW);
surfaceViewFlash.setVisibility(视图不可见);
surfaceViewFlash.setVisibility(View.VISIBLE);
mCameraScanner=getCameraInstance();
getActivity().setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Grait);
previewingScanner=true;
autoFocusHandlerScanner=新处理程序();
试一试{
//实例条码扫描程序
zBarScanner=新的图像扫描仪();
zBarScanner.setConfig(0,Config.X_密度,3);
zBarScanner.setConfig(0,Config.Y_密度,3);
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
mPreviewScanner=新的CameraPreview(getActivity()、mCameraScanner、previewCb、autoFocusCB);
FrameLayout preview=(FrameLayout)mView.findviewbyd(R.id.cameraPreview);
preview.addView(mPreviewScanner);
如果(条形码扫描){
条形码扫描=假;
mCameraScanner.setPreviewCallback(previewCb);
mCameraScanner.startPreview();
previewingScanner=true;
Log.e(“initControls”、“initControls”);
}
}捕获(IllegalArgumentException e){
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
}
/**
*获取摄影机对象实例的安全方法。
*/
公共摄像机getCameraInstance(){
摄像机c=null;
int frontId=0,backId=0;
试一试{
Camera.CameraInfo CameraInfo=新的Camera.CameraInfo();
int numberOfCameras=Camera.getNumberOfCameras();
对于(int i=0;i
请帮我解决这个问题 在暂停和销毁时释放相机。当相机没有被任何资源释放,而您又重新启动它时,就会发生这种情况。希望这能对您有所帮助。谢谢您的回复,我已经完成了有关在onPause中释放相机的编码。不,问题仍然存在。我也有这个问题吗?我注意到相机是黑色的。