我正在创建一个Android应用,允许用户扫描小卡(例如yu gi oh卡)上的代码。 问题在于我要读取的数字非常小,很难集中精力弄清楚。所以我想设置参数以在最接近的距离上获得最佳结果。
首先,我将按照本教程创建一个简单的相机预览:https://inducesmile.com/android/android-camera2-api-example-tutorial/
接下来,我尝试更改相机预览设置以禁用自动对焦,效果很好,但是后来我尝试手动设置对焦距离,没有任何改变。
这是相机预览创建方法中的代码摘录:
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
//Disable auto-focus
captureRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_OFF);
//Try to make it at the shortest distance (do not work)
captureRequestBuilder.set(CaptureRequest.LENS_FOCUS_DISTANCE, characteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE)
我在焦距上尝试了不同的参数,但没有任何变化。 也许我只是在犯一个错误,但这不是改善此错误的正确方法。
答案 0 :(得分:0)
手动对焦控制不是保证功能。许多低端设备不支持它,而仅支持自动对焦。您可以检查设备是否具有MANUAL_SENSOR功能。有些相机是完全定焦的(大多数是自拍相机),所以那些相机甚至不能自动对焦。
对于您的用例,只要小卡片能填满大部分可见场景,自动对焦无论如何都应该足够好。
请注意,许多设备的最小聚焦距离为8-10厘米,因此您无法将卡真正靠近地握住并期望获得清晰的图像。