Android自定義照相機(jī)Camera出現(xiàn)黑屏的解決方法
本文實(shí)例講述了Android自定義照相機(jī)Camera出現(xiàn)黑屏的解決方法。分享給大家供大家參考,具體如下:
對(duì)于一些手機(jī),像HTC,當(dāng)自定義Camera時(shí),調(diào)用Camera.Parameters的 parameters.setPreviewSize(width, height)方法時(shí),如果width和height為奇數(shù)情況下,則會(huì)出現(xiàn)黑屏現(xiàn)象,解決辦法可參考SDK提供的ApiDemos中關(guān)于Camera的 例子:
List<Size> sizes = parameters.getSupportedPreviewSizes(); Size optimalSize = getOptimalPreviewSize(sizes, w, h); parameters.setPreviewSize(optimalSize.width, optimalSize.height);
同時(shí),在HTC手機(jī)中,設(shè)置parameters.setPictureSize(width,height)屬性,也會(huì)導(dǎo)致黑屏,而在三星手機(jī)上則沒有問題。還有如果設(shè)置setPreviewSize屬性的寬高錯(cuò)誤的話,拍出的照片也會(huì)存在失真等Bug,所以遇到適配問題時(shí),最好的辦法就是不設(shè)置PreviewSize和PictureSize屬性。
getOptimalPreviewSize方法
private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
final double ASPECT_TOLERANCE = 0.05;
double targetRatio = (double) w / h;
if (sizes == null)
return null;
Size optimalSize = null;
double minDiff = Double.MAX_VALUE;
int targetHeight = h;
// Try to find an size match aspect ratio and size
for (Size size : sizes) {
double ratio = (double) size.width / size.height;
if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE)
continue;
if (Math.abs(size.height - targetHeight) < minDiff) {
optimalSize = size;
minDiff = Math.abs(size.height - targetHeight);
}
}
// Cannot find the one match the aspect ratio, ignore the requirement
if (optimalSize == null) {
minDiff = Double.MAX_VALUE;
for (Size size : sizes) {
if (Math.abs(size.height - targetHeight) < minDiff) {
optimalSize = size;
minDiff = Math.abs(size.height - targetHeight);
}
}
}
return optimalSize;
}
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android拍照與圖片處理技巧總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
Android自定義標(biāo)尺滑動(dòng)選擇值效果
這篇文章主要為大家詳細(xì)介紹了Android自定義標(biāo)尺滑動(dòng)選擇值效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Android重寫View實(shí)現(xiàn)全新的控件
這篇文章主要介紹了Android重寫View來實(shí)現(xiàn)全新的控件,最難的一種自定義控件形式,感興趣的小伙伴們可以參考一下2016-05-05
Android實(shí)現(xiàn)倒計(jì)時(shí)方法匯總
這篇文章主要為大家詳細(xì)總結(jié)了Android實(shí)現(xiàn)倒計(jì)時(shí)的3種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Android RadioButton 圖片位置與大小實(shí)例詳解
這篇文章主要介紹了Android RadioButton 圖片位置與大小實(shí)例詳解的相關(guān)資料,這里提供實(shí)例代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-11-11
Android開發(fā)升級(jí)AGP7.0后的一些適配方法技巧
這篇文章主要為大家介紹了升級(jí)AGP7.0后的一些適配方法技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android手機(jī)聯(lián)系人帶字母索引的快速查找
這篇文章主要為大家詳細(xì)介紹了Android手機(jī)聯(lián)系人帶字母索引的快速查找實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2016-03-03

