擷取Camera執行個體,在2.3之前可以用靜態方法Camera camera = Camera.open();,如果手機帶前後置的網路攝影機,那2.3之前sdk擷取到的執行個體為後置的主網路攝影機,自拍擷取不到。
擷取Parameters parameters = camera.getParameters(); parameters裡有個方法getSupportedPictureSizes(),擷取到所有支援的圖片像素。迴圈取最大的width和height(最大值一般是List的第一個元素,嫌麻煩可以直接get(0))。
width*height就為網路攝影機的像素!例如500百萬像素!
2.3以上sdk可以用Camera.getNumberOfCameras()擷取網路攝影機數,(有的手機是三個網路攝影機,前置一個,後置雙網路攝影機,但是這裡取出來的數值仍然是2)。Camera.open(int cameraId)擷取指數網路攝影機執行個體。
public int getCameraId(int type) { int numberOfCameras = Camera.getNumberOfCameras(); CameraInfo cameraInfo = new CameraInfo(); for (int i = 0; i < numberOfCameras; i++) { Camera.getCameraInfo(i, cameraInfo); if (cameraInfo.facing == type) { return i; } } return 2; }
其中int type為public static final int CAMERA_FACING_BACK = 0; public static final int CAMERA_FACING_FRONT = 1;
取出前網路攝影機或者後網路攝影機,按上面的方法計算網路攝影機的像素!注意:一般計算出來的數值都比網上標明的要小,廠商又誇大自家商品了= =!