2016-11-10 183 views
1

我正在從我的相機拍攝的照片,一切似乎不錯,我用Camera2Basic樣本,這個代碼僅offre相機背面,所以我增加了一個按鈕來切換2個相機這樣的:安卓:背部和前置攝像頭之間切換Camera2

布爾facingCamera = TRUE; //初始化

onClick() { 
    facingCamera = !facingCamera; 
    closeCamera(); 
    openCamera(mTextureView.getWidth(), mTextureView.getHeight()); 
} 

而且我改變了這樣的方法setUpCameraOutputs代碼:

if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) { 
    continue; 
} 

if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT && !facingCamera 
|| facing != null && facing == CameraCharacteristics.LENS_FACING_BACK && facingCamera) { 
    continue; 
} 

這適用於Nexus 4,但對我的LG-D802做工精細不工作正常(onConfigureFailed被稱爲每次我嘗試更換相機)

如何正確解決這個問題,以便在所有設備上正常工作?

回答

2

您是否檢查CameraManager是否給您提供2個可用的相機?使用cameraManager.getCameraIdList()進行檢查。還記得使用CameraCharacteristics以獲得每個攝像頭的右側預覽尺寸:

StreamConfigurationMap rearMap = rearCameraCharacteristics.get(
     CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); 
StreamConfigurationMap frontMap = frontCameraCharacteristics.get(
     CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); 

做到這一點使用一個值來初始化你預覽,如果您使用的是相同的值的正面和背面攝像頭,也許你有後它的問題會導致您的前置攝像頭不支持該分辨率大小。

+0

感謝您的回覆,我想這就是問題所在,日誌表明,與有時找到合適的分辨率大小的問題,有時預覽被拉伸。我可以找到您可以在面對相機和背部相機之間切換的示例,有沒有? –

+0

即時通訊面臨同樣的問題,當我切換相機有時預覽延伸,你有沒有找到一個解決方案呢? – Andrea

+0

太棒了!在切換相機時,我被困在了正確的預覽尺寸上。謝謝! :) – Debdeep

相關問題