年前,自己做的Android相機嵌入到一款火爆的游戲中去了,經過幾次的修改升級,相機運行上報的錯誤也越來越少,
但是,前幾天剛上線的最新相機,卻老是在Android 2.3機器上出現startPreview failed的錯誤,不知為啥,后來,
在網絡上搜索,很多人也出現了這個問題,解決的方法是,給holder添加SURFACE_TYPE_PUSH_BUFFERS標記,
可是我明明就已經添加了,卻老是在startPreview時拋出異常。
Google 官方文檔已經說了,在2.3版本及以下需要手動添加改標記,而以上版本會自動(auto)添加。參考鏈接:
http://developer.android.com/reference/android/view/SurfaceHolder.html#setType(int)
相關截圖:
對比我以前最老的相機版本,它在2.3上跑的很正常,只是,給surfaceHolder添加標記時是在它初始化的時候添加的,
而新版本是在 surfaceHolder的回調函數surfaceCreated中設置的。
由此,才發現問題所在,我再surfaceHolder創建的時候調用該代碼:
if(PhoneInfo.getSdkVersion() <= 10)
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);