2017-09-08 16 views
0

私のアプリでアンドロイド携帯電話の解像度を把握しようとしています。
私はカメラの解像度をプログラムで見つける

public float getBackCameraResolutionInMp() { 

    try { 
     int noOfCameras = Camera.getNumberOfCameras(); 
     float maxResolution = -1; 
     long pixelCount = -1; 
     Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
     Camera.getCameraInfo(BACK_CAMERA_ID, cameraInfo); 
     if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) { 
      try { 
       releaseCameraAndPreview(); 
       if (camera == null) { 
        camera = Camera.open(BACK_CAMERA_ID); 
       } 
       Camera.Parameters cameraParams = camera.getParameters(); 
       for (int j = 0; j < cameraParams.getSupportedPictureSizes().size(); j++) { 
        long pixelCountTemp = cameraParams.getSupportedPictureSizes().get(j).width * cameraParams.getSupportedPictureSizes().get(j).height; // Just changed i to j in this loop 
        if (pixelCountTemp > pixelCount) { 
         pixelCount = pixelCountTemp; 
         maxResolution = ((float) pixelCountTemp)/(1024000.0f); 
        } 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
     return maxResolution; 
    } catch (Exception e) { 
     logException(e, "CameraInfoFragment_getBackCameraResolutionInMp()"); 
     return -1; 
    } 

} 

を使用していました。しかし、それは、おおよその解像度正確ではない私を返します。解像度が16MPなら、それは15.55MPを返します。あなたはカメラの正確な解像度を守る方法を教えてください。

+0

[カメラの実際のメガピクセルを取得するにはどうすればいいですか?](https://stackoverflow.com/questions/25590721/how-to-get-real-camera-max-megapixels-of-a-デバイス) –

答えて

0

1024000ではなく、1000000で割り切ってください。ここでは、Mega PixelsについてはMega Bytesではなく、1 Megabyte = 1,048,576 Bytesと同じですが、1 Megapixel = 1,000,000 Pixelsを使用しています。プラス1024000が間違っている、それは1048576または2^20だったはずです。 1000000で割ると、16MPに近い数値が得られます。

関連する問題