Android獲得攝像頭詳細信息

這篇資料不錯,



核心提示: 如何獲取Android設備上的詳細的攝像頭信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置攝像頭,獲取Android攝像頭的詳細信息,Android獲取攝像頭詳細信息,在Android 2.3 SDK中得到了增強:在android.hardware.Camera類中,API Level 9的S

如何獲取Android設備上的詳細的攝像頭信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置攝像頭,獲取Android攝像頭的詳細信息,在Android 2.3 SDK中得到了增強:

在android.hardware.Camera類中,API Level 9的SDK中加入了兩個比較重要的方法,使用getNumberOfCameras這個static類型方法可以獲取當前Android設備上的攝像頭數 量,比如Nexus S有兩個,方法原型如下

[java] view plaincopy
  1. public static int getNumberOfCameras ()  

而對於具體的每個攝像頭的信息,可以通過Camera類的getCameraInfo()這個靜態方法獲取,該方法有兩個參數,參數一的ID,我們 通過getNumberOfCameras獲取的值減1即可,類似數組索引從0開始一樣,用循環遍歷每個攝像頭信息,參數二是 android.hardware.Camera.CameraInfo類,有關getCameraInfo方法的原型如下:

[java] view plaincopy
  1. public static void getCameraInfo (int cameraId, Camera.CameraInfo cameraInfo)  

對於Camera.CameraInfo類而言,比較簡單,包含兩個字段

public int facing 代表攝像頭的方位,目前有定義值兩個分別爲CAMERA_FACING_FRONT前置和CAMERA_FACING_BACK後置
public int orientation下面是拍照的旋轉方向,一般自然些有0度、90度、180度和270度,這樣可以獲取我們正確的手握設備是橫着還是豎着,有關拍照時的方向設置,可以參考下面的代碼設置

[java] view plaincopy
  1. public static void setCameraDisplayOrientation(Activity activity,<br>  
  2.     int cameraId, android.hardware.Camera camera) {<br>  
  3.     android.hardware.Camera.CameraInfo info =<br>  
  4.     new android.hardware.Camera.CameraInfo();<br>  
  5.     android.hardware.Camera.getCameraInfo(cameraId, info);<br>  
  6.     int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();<br>  
  7.     int degrees = 0;<br>  
  8.     switch (rotation) {<br>  
  9.         case Surface.ROTATION_0: degrees = 0break;<br>  
  10.         case Surface.ROTATION_90: degrees = 90break;<br>  
  11.         case Surface.ROTATION_180: degrees = 180break;<br>  
  12.         case Surface.ROTATION_270: degrees = 270break;<br>  
  13.     }<br>  
  14. <br>  
  15.     int result;<br>  
  16.     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {<br>  
  17.         result = (info.orientation + degrees) % 360;<br>  
  18.         result = (360 - result) % 360;// compensate the mirror<br>  
  19.     } else {// back-facing<br>  
  20.         result = (info.orientation - degrees + 360) % 360;<br>  
  21.     }<br>  
  22.     camera.setDisplayOrientation(result);<br>  
  23. }  

轉:http://blog.csdn.net/raindrophust/article/details/6205455



發佈了76 篇原創文章 · 獲贊 3 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章