編輯:關於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程序設計有所幫助。
從Android2.3開始支持NFC。不過NFC應用只能在Android手機(或平板電腦)上測試和開發,而且Android手機還必須有NFC芯 片。而且如果測試NFC傳輸
import android.content.Context; import android.graphics.Bitmap; import android.grap
本文實例講述了Android使用GridView展示圖片的方法。分享給大家供大家參考,具體如下:今天說說GridView的使用。所謂GvidView翻譯過來就是網格布局:
當出現崩潰,軟件不會閃退,會出現彈出一個對話框,異常錯誤信息會自動保存在sd卡crash這個文件夾下。後續需要還可以發送到服務器的。看效果圖。1、實現效果圖2、全局異常捕