我正在尝试使用sony smarteyeglass检测qr代码
当我使用CAMERA_MODE_STILL
时,我可以拍摄照片并检测其中的条形码工作正常!
现在我将录制模式更改为CAMERA_MODE_JPG_STREAM_LOW_RATE
我必须将分辨率设置为CAMERA_RESOLUTION_QVGA
否则setCameraMode
投掷“分辨率具有非法价值”,因为SmartEyeglassControlUtils
流支持仅包含QVGA
private static final List<Integer> CAMERA_JPEG_STREAM_SUPPORT_RESOLUTION = Arrays.asList(
SmartEyeglassControl.Intents.CAMERA_RESOLUTION_QVGA
);
我已经尝试过修改它,但是相机不再工作了。
那么如何在不必实际拍照并将其发送到zxing库的情况下检测QR码呢?有没有办法提高质量,仍然使用流?或者我是否必须使用Stillmode并实际捕获图片以便我可以使用3M分辨率?
答案 0 :(得分:0)
很抱歉迟到的回复。您应该能够使用CAMERA_MODE_JPG_STREAM_LOW_RATE选项并逐帧捕获所需的图像并将它们发送到zing。如果从SampleCameraControl示例开始并打开“SampleCameraControl.java”文件,则可以在SampleCameraControl构造函数中修改侦听器,如下所示:
// Initialize listener for camera events
SmartEyeglassEventListener listener = new SmartEyeglassEventListener() {
// When camera operation has succeeded
// handle result according to current recording mode
@Override
public void onCameraReceived(final CameraEvent event) {
/*
* Turn over full control of the streamed video to the barcode scanner library
* */
byte[] bitmapdata = event.getData();
//Convert the camera data to a bitmap
Bitmap originalBitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
//Create a blank bitmap canvas so we can draw text
Bitmap mainBitMap = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_8888);
Canvas mainCanvas = new Canvas(mainBitMap);
//Add the main bitmap to the new blank canvas
mainCanvas.drawBitmap(originalBitmap, 0, 0, new Paint());
mainCanvas = drawScanText(mainCanvas, "Scan:null");
//Scan the barcode with Zxing
scanBarcodeTask = new scanBarcodeTask().execute(originalBitmap);
}
// Called when camera operation has failed
// We just log the error
@Override
public void onCameraErrorReceived(final int error) {
Log.d(Constants.LOG_TAG, "onCameraErrorReceived: " + error);
}
// When camera is set to record image to a file,
// log the operation and clean up
@Override
public void onCameraReceivedFile(final String filePath) {
Log.d(Constants.LOG_TAG, "onCameraReceivedFile: " + filePath);
mode.closeCamera(utils);
}
};