6
我在這裏條碼掃描儀的最初的例子玩:訪問自動對焦/閃光燈與谷歌視覺條碼閱讀器
他們能夠將照相機廠這樣內開始自動對焦/閃光:
// Creates and starts the camera. Note that this uses a higher resolution in comparison
// to other detection examples to enable the barcode detector to detect small barcodes
// at long distances.
CameraSource.Builder builder = new CameraSource.Builder(getApplicationContext(), barcodeDetector)
.setFacing(CameraSource.CAMERA_FACING_BACK)
.setRequestedPreviewSize(1600, 1024)
.setRequestedFps(15.0f);
// make sure that auto focus is an available option
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
builder = builder.setFocusMode(
autoFocus ? Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE : null);
}
mCameraSource = builder
.setFlashMode(useFlash ? Camera.Parameters.FLASH_MODE_TORCH : null)
.build();
但是,cameraSource構建器上的此方法在當前版本中消失,因此無法訪問此設置。此外,我需要在使用過程中更改FlashMode,所以這也不是做到這一點的方法。我發現這種醜陋的解決方案,以訪問攝像機:
public static Camera getCamera(@NonNull CameraSource cameraSource) {
Field[] declaredFields = CameraSource.class.getDeclaredFields();
for (Field field : declaredFields) {
if (field.getType() == Camera.class) {
field.setAccessible(true);
try {
Camera camera = (Camera) field.get(cameraSource);
if (camera != null) {
return camera;
}
return null;
} catch (IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}
return null;
}
雖然它的工作原理,它並不能幫助:調用getParameters().setFocusMode()
當我得到這個異常:
Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference
顯然我在做什麼不是正確的做法,但似乎沒有關於它的文件。
感謝提示。
這對我很好。謝謝!儘管Camera1 api已被棄用。任何Camera2更新的機會? –
'getCamera' return' null' –
這似乎很奇怪,這是不正式支持,但這對我有用! – SleepingLlama