Попробуй вот так.
CameraManager cameraManager = (CameraManager) getContext().getSystemService(Context.CAMERA_SERVICE);
for (final String cameraId : cameraManager.getCameraIdList()) {
CameraCharacteristics cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId);
StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] sizes = streamConfigurationMap.getOutputSizes(ImageFormat.RAW_SENSOR);
Log.d(TAG, "onCreate:" + getCameraMP(sizes);
}
private String getCameraMP(Size[] size) {
String finalCameraRes = getMP(size[0], 1);
int maxSize = size[0].getHeight() * size[0].getWidth();
for (Size camSize : size) {
int tempMax = camSize.getHeight() * camSize.getWidth();
if (tempMax > maxSize) {
maxSize = tempMax;
finalCameraRes = getMP(camSize, 1);
}
}
return finalCameraRes;
}
private String getMP(Size size, int decimalPlaces) {
float mp = (size.getWidth() * size.getHeight()) / 1000000f;
if (decimalPlaces == 1) {
return String.format(Locale.US, "%.1f", mp) + " MP";
} else if (decimalPlaces == 2) {
return String.format(Locale.US, "%.2f", mp) + " MP";
} else {
return String.format(Locale.US, "%.2f", mp) + " MP";
}
}
Это будет работать практически на всех устройствах Android 5.0+, даже если разрешение камеры не предоставлено.