Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android自定義照相機Camera出現黑屏的解決方法

Android自定義照相機Camera出現黑屏的解決方法

編輯:關於Android編程

本文實例講述了Android自定義照相機Camera出現黑屏的解決方法。分享給大家供大家參考,具體如下:

對於一些手機,像HTC,當自定義Camera時,調用Camera.Parameters的 parameters.setPreviewSize(width, height)方法時,如果width和height為奇數情況下,則會出現黑屏現象,解決辦法可參考SDK提供的ApiDemos中關於Camera的 例子:

List<Size> sizes = parameters.getSupportedPreviewSizes();
Size optimalSize = getOptimalPreviewSize(sizes, w, h);
parameters.setPreviewSize(optimalSize.width, optimalSize.height);

同時,在HTC手機中,設置parameters.setPictureSize(width,height)屬性,也會導致黑屏,而在三星手機上則沒有問題。還有如果設置setPreviewSize屬性的寬高錯誤的話,拍出的照片也會存在失真等Bug,所以遇到適配問題時,最好的辦法就是不設置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;
}

更多關於Android相關內容感興趣的讀者可查看本站專題:《Android拍照與圖片處理技巧總結》、《Android開發入門與進階教程》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》

希望本文所述對大家Android程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved