我需要幫助 android camera 2 api 自動(dòng)閃光。此解決方案適用于一部手機(jī),但不適用于另一部手機(jī)。我花了幾個(gè)小時(shí)尋找解決方案,但沒(méi)有成功。我的拍照代碼:pictureTaken = false; if (null == cameraDevice) { Log.e(TAG, "cameraDevice is null"); return; } CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE); try { int width = 1024; int height = 768; cv.setBackground(getResources().getDrawable(R.drawable.fotak_zeleny)); ImageReader reader = ImageReader.newInstance(width, height, ImageFormat.JPEG, 1); List<Surface> outputSurfaces = new ArrayList<Surface>(2); outputSurfaces.add(reader.getSurface()); outputSurfaces.add(new Surface(textureView.getSurfaceTexture())); final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); captureBuilder.addTarget(reader.getSurface()); captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO); captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO); captureBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest.CONTROL_AF_TRIGGER_START); if (flashMode == FLASH_AUTO) { captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH); } else if (flashMode == FLASH_ON) { captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH); } else if (flashMode == FLASH_OFF) { captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF); } // Orientation int rotation = getWindowManager().getDefaultDisplay().getRotation(); captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, ORIENTATIONS.get(rotation)); final File file = new File(fileName); if (file.exists()) { file.delete(); } etc....
3 回答

GCT1015
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
您還應(yīng)該為預(yù)覽請(qǐng)求設(shè)置所選的 AE_MODE,并在用戶切換閃光模式時(shí)更新它。此外,您需要在高于 LEGACY 級(jí)別的任何設(shè)備上運(yùn)行預(yù)捕獲序列。
僅針對(duì)單個(gè)靜態(tài)拍攝請(qǐng)求更改閃光模式將無(wú)法正常工作,因?yàn)槭謾C(jī)沒(méi)有機(jī)會(huì)觸發(fā)預(yù)閃以正確計(jì)算閃光功率。
看看camera2basic用于運(yùn)行precapture序列。如果可能,它總是將 AE 模式設(shè)置為 AE_MODE_AUTO_FLASH,但相同的代碼適用于其他閃光模式(盡管如果閃光燈設(shè)置為關(guān)閉,您可以跳過(guò)預(yù)捕捉序列,通常,只要對(duì)焦質(zhì)量正常)。

慕標(biāo)5832272
TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
我使用默認(rèn)的相機(jī)應(yīng)用程序,因?yàn)檫@個(gè)相機(jī) api 在不同的手機(jī)上是不同的。
添加回答
舉報(bào)
0/150
提交
取消