1. 程式人生 > >攝像頭引數設定了,不一定設定成功,需要確認是否,這個思維邏輯要有

攝像頭引數設定了,不一定設定成功,需要確認是否,這個思維邏輯要有

設定攝像頭的解析度為 width = 640,height = 480,但是實際預覽時,卻是:
width==960 height==720(MI3 4.4.4 KTU84P,MIUI版本: MIUI 6.6.2.0(KXCCNCF)|穩定版)

width== 1024 height==576 (MI3 4.4.4 KTU84P,MIUI版本: MIUI 5.7.2|開發版)
有沒有知道這是怎麼回事啊?

已解決,不是硬體問題,是程式碼問題,原因:設定攝像頭引數失敗。定位到設定閃光燈這句程式碼。
parameters.setFlashMode(Parameters.FLASH_MODE_OFF); 把這句程式碼去掉就可以了。


解決此問題的過程有必要記錄一下,要從中吸取經驗教訓,以後再碰到此問題就可以迎刃而解了。

我的解決方式:(1)一開始是打斷點,進不去onPreview方法裡(但後來同事好像一開始也沒 進去,後來就進去了,還是要多嘗試幾次的),(2)然後換成打log,(3)根據log,,沒有打斷點,分析到的結果是:給攝像頭設定640X480,但不起作用,log顯示預覽時是1024x576,雖然有設定的解析度但是還是選擇best,。(設定引數,預設設定成功了,忽略了是否設定成功,當然了這是後話)

(2)然後斷定很可能是硬體問題,就去百度,搜對應的機型,設定攝像頭預覽解析度不起作用等。

 同事的做法:打斷點,針對有問題的程式碼,一步一步debug,(我當時線debug,太慢了,就打的log,結果log只分析了個大概)斷點進不去的地方,又嘗試了幾次就進去了,然後一步一步來,起先發現是攝像頭引數沒有設定成功(這一點我 沒有發現啊哭

),隨後定位到是parameters.setFlashMode(Parameters.FLASH_MODE_OFF);這句話有問題,刪掉就可以了

學到:

1.  (所有情況都適用)以後再遇到bug,一定要打斷點,debug,一步一步來,對有問題的程式碼,一步一步debug,別嫌麻煩,通過打log,有些情況是發現不了的。

我。

2.(針對此問題本身),攝像頭設定引數了,但不一定就設定成功。setPreviewSize 這家程式碼執行成功不一定mCamera.setPremerters(param)這句程式碼就執行成功了。