Поддерживаемые размеры поддерживаемых камер Android

Я пытаюсь получить доступные размеры изображения камеры, поэтому я могу настроить камеру на предпочтительное разрешение изображения.

Чтобы получить размер камеры Android, я использовал следующий код:

camera=Camera.open(); Parameters params = camera.getParameters(); List sizes = params.getSupportedPictureSizes(); for (int i=0;i<sizes.size();i++){ Log.i("PictureSize", "Supported Size: " +sizes.get(i)); } 

Это дает мне следующий результат, который я не уверен, как перевести в размер.

 "Supported size: android.hardware.Camera$Size@65d4c50" "Supported size: android.hardware.Camera$Size@65d4a70" "Supported size: android.hardware.Camera$Size@3fe4e00" "Supported size: android.hardware.Camera$Size@3fe4cd0" "Supported size: android.hardware.Camera$Size@18f5600" "Supported size: android.hardware.Camera$Size@13f7860" 

Если бы кто-нибудь мог помочь мне понять результат, это мне очень помогло, спасибо!

Редактирование: я решил решить свою проблему, выполнив следующие действия:

 camera=Camera.open(); Parameters params = camera.getParameters(); List sizes = params.getSupportedPictureSizes(); Camera.Size result = null; for (int i=0;i<sizes.size();i++){ result = (Size) sizes.get(i); Log.i("PictureSize", "Supported Size. Width: " + result.width + "height : " + result.height); } 

getSupportedPictureSizes() возвращает List объектов Camera.Size . Camera.Size имеет элементы данных height и width которые сообщают вам высоту и ширину поддерживаемого размера изображения.

Вот пример проекта, который использует связанный getSupportedPreviewSizes() чтобы найти размер предварительного просмотра с наибольшей площадью, которая меньше размера SurfaceView .

 Camera camera = Camera.open(); Parameters params = camera.getParameters(); List sizes = params.getSupportedPictureSizes(); for (int i=0;i<sizes.size();i++) { Log.i("PictureSize", "Supported Size: " +sizes.get(i).width + "height : " + sizes.get(i).height); } 

Вы должны брать высоту и ширину от одного размера объекта

Ниже приведен пример того, как искать размер, который aprroaching максимальный размер (1024 * 768), например.

  List<Camera.Size> sizes = parameters.getSupportedPictureSizes(); //searches for good picture quality Camera.Size bestDimens = null; for(Camera.Size dimens : sizes){ if(dimens.width <= 1024 && dimens.height <= 768){ if (bestDimens == null || (dimens.width > bestDimens.width && dimens.height > bestDimens.height)) { bestDimens = dimens; } } } parameters.setPictureSize(bestDimens.width, bestDimens.height); camera.setParameters(parameters); 

Это то, что я закончил делать. Поскольку метод params.getSupportedPictureSizes() возвращает список типов Camera.Size , было легко сделать это:

  List<Camera.Size> sizes = p.getSupportedPictureSizes(); //searches for good picture quality for(Camera.Size dimens : sizes){ if(dimens.width <= 1024 && dimens.height <= 768){ Debug.WriteLine("Width: " + dimens.width + " Height: " + dimens.height); return dimens; } } Debug.WriteLine("Width: " + sizes.get(sizes.size()-1).width + " Height: " + sizes.get(sizes.size()-1).height); //returns the smallest camera size if worst comes to worst return p.getSupportedPictureSizes().get(sizes.size()-1); 

Вы можете получить List<Camera.Size> и пересечь его, как и любой другой список. Объект Camera.Size имеет свойство width и height .

Объявление вашего List таким образом может быть лучше, чем лить каждого элемента списка в тип Camera.Size внутри цикла.

На моих устройствах, если я смотрю на sizes.get(0) , он будет иметь самое высокое разрешение, а sizes.get( sizes.size()-1 ) имеют самое низкое. Однако я не уверен, что это верно для всех устройств. Кто-нибудь знает об этом?

Intereting Posts
RemoteView не отображает кнопки в пользовательском уведомлении Сделать строку кликабельной, подчеркнутую в TextView Сообщения Logcat исчезают через короткое время Ошибка GCM: не зарегистрировано Гистограмма диаграммы MPAndroidChart, как изменить цвет каждой метки Android: создание родительского макета и расширение его, чтобы поддерживать одинаковый внешний вид во всех действиях приложения Как получить цвет фона уведомлений по умолчанию для пользовательского уведомления в Lollipop? Как использовать аргумент LIMIT в SQLite Query с Android Таблица абстрактных классов ActiveAndroid Проблема в обнаружении подключения к Интернету в Android Android Studio – эмулятор – eglSurfaceAttrib не реализован Учебник Google OpenGL Google учит неправильной линейной алгебре? Android – прослушивание отключенной кнопки Несколько обратных фоновых изображений в соответствии с разрешениями экрана Как проверить неограниченный доступ в Интернет? (Обнаружение портативного портала)