1. 程式人生 > >Android菜鳥筆記-獲取攝像頭畫素值

Android菜鳥筆記-獲取攝像頭畫素值

前言:

獲取攝像頭的畫素值,通過獲取相機設定中支援拍照的最大寬度和最大高度就可算到攝像頭的畫素值了,當然跟手機廠商標稱的還是有差別的。比如標稱200W的通過計算1200*1600=1920000=192W≈200W。

定義CameraUtils類:

import java.util.List;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Size;

public class CameraUtils {
	
	public static final int CAMERA_FACING_BACK = 0;
	public static final int CAMERA_FACING_FRONT = 1;
	public static final int CAMERA_NONE = 2;
	
	 public static int HasBackCamera()
	  {
		  int numberOfCameras = Camera.getNumberOfCameras();  
	        CameraInfo cameraInfo = new CameraInfo();  
	        for (int i = 0; i < numberOfCameras; i++) {  
	            Camera.getCameraInfo(i, cameraInfo);  
	            if (cameraInfo.facing == CAMERA_FACING_BACK) {  
	                return i;  
	            }  
	        }  
	        return 2;
	  }

	  public static int HasFrontCamera()
	  {
		  int numberOfCameras = Camera.getNumberOfCameras();  
	        CameraInfo cameraInfo = new CameraInfo();  
	        for (int i = 0; i < numberOfCameras; i++) {  
	            Camera.getCameraInfo(i, cameraInfo);  
	            if (cameraInfo.facing == CAMERA_FACING_FRONT) {  
	                return i;  
	            }  
	        }  
	        return 2;
	  }

	  public static String getCameraPixels(int paramInt)
	  {
	    if (paramInt == 2)
	      return "無";
	    Camera localCamera = Camera.open(paramInt);
	    Camera.Parameters localParameters = localCamera.getParameters();
	    localParameters.set("camera-id", 1);
	    List<Size> localList = localParameters.getSupportedPictureSizes();
	    if (localList != null)
	    {
	    	int heights[] = new int[localList.size()]; 
	    	int widths[] = new int[localList.size()]; 
	    	for (int i = 0; i < localList.size(); i++) 
	    	{ 
	    	Size size = (Size) localList.get(i); 
	    	int sizehieght = size.height; 
	    	int sizewidth = size.width; 
	    	heights[i] = sizehieght; 
	    	widths[i] =sizewidth;	 
	    	}
	    	int pixels = getMaxNumber(heights) * getMaxNumber(widths);
		    localCamera.release();
		    return String.valueOf(pixels / 10000) + " 萬";
	   
	    }
	    else return "無";
	   
	  }

	  public static int getMaxNumber(int[] paramArray)
	  {
		  int temp = paramArray[0];
		  for(int i = 0;i<paramArray.length;i++)
		  {
			  if(temp < paramArray[i])
			  {
				  temp = paramArray[i];
			  }
		  }
		  return temp;
	  }
}

呼叫:

String piexls = "\n前置攝像頭: "+CameraUtils.getCameraPixels(CameraUtils.HasFrontCamera())
+"\n後置攝像頭: "+CameraUtils.getCameraPixels(CameraUtils.HasBackCamera());

OK,Done~