最近老大交給了一個任務,說是要在本地視頻端能夠調節攝像頭焦距。
碰到了一些問題:
1.手機支不支持攝像頭變焦
2.系統自帶攝像軟件可以變焦,但是自己編寫的程序不支持變焦,
這個問題網上也有很多童鞋碰到了:
public void setZoomIn(){
try{
params = camera.getParameters();
zoomValue +=5;
params.setZoom(zoomValue);
camera.setParameters(params);
Log.d(TAG, "Is support Zoom " + params.isZoomSupported());
}catch (Exception e) {
e.printStackTrace();
}
}
這段代碼在Lg上可以運行,但是在htc sensation上crash了。
這哥們和我遇到了同樣的問題,我的手機也是htc sensation哦。請問 android 相機 怎么變焦啊:
我查了api2.2
說是調用這個函數就好了
mCamera.startSmoothZoom(zoom);
但是,調用了沒有任何反應!
然后,嘗試了:
mCamera.getParameters().setZoom(zoom);
也沒有任何反應
說是zoom改變會調用ZoomChangeListener,于是我加了監聽,但是監聽一直都未被調用過
mCamera.setZoomChangeListener();
其實問題比較簡單:第一:調用mCamera.getParameters().isSmoothZoomSupported()返回為false,則不支持變焦,設置zoom出錯
第二:調用mCamera.getParameters().isZoomSupported()返回為true,mCamera.getParameters().isSmoothZoomSupported()返回為false,可能手機自帶的攝像應用支持zoom,變焦,只是我們自己的應用就不行了。這個問題,我現在也沒想到辦法解決。
所以在編寫變焦攝像或者視頻的時候就使用isSmoothZoomSupported判斷,這樣就不會再其他不支持變焦的手機上crash了。