Как получить поддерживаемые разрешения видео камеры в Android? - PullRequest
7 голосов
/ 09 мая 2011

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

Все работает хорошо, за исключением того, что мне нужно иметь доступ к списку поддерживаемых разрешений камеры, чтобы я мог выбрать во время выполнения, какой из них использовать. Я ищу что-то вроде getSupportedPictureSizes(), но для видео. Android 3.0 имеет эту функциональность, но я ищу что-то для 2.2.

На данный момент я использую CamcorderProfile.QUALITY_HIGH / QUALITY_LOW, но это дает мне только два варианта, и на телефонах, на которых я тестировал, размеры файлов находятся на каждом пределе. (QUALITY_LOW - 216 кбит / с, а QUALITY_HIGH -> 3 МБ / с)

Любая помощь будет принята с благодарностью, Спасибо!

Ответы [ 2 ]

9 голосов
/ 09 мая 2011

Вы пытались использовать метод getSupportedVideoSizes() из Camera.Parameters класса?

public List<Camera.Size> getSupportedVideoSizes()

Этот метод возвращает список объектов Size.Он вернет null, если камера не имеет отдельного предварительного просмотра и вывода видео. Ответ здесь указывает, что когда он возвращает null, вы можете использовать список getSupportedPreviewSizes().

5 голосов
/ 10 мая 2011

Хорошо, думаю, я понял это. Кажется, он корректно работает на телефонах, на которых я тестировал.

List<Size> tmpList = camera.getParameters().getSupportedPreviewSizes();

    final List<Size> sizeList = new Vector<Size>();

    //compair the apsect ratio of the candidate sizes against the real ratio
    Double aspectRatio = (Double.valueOf(getWindowManager().getDefaultDisplay().getHeight()) / getWindowManager().getDefaultDisplay().getWidth());
    for(int i=0; i<tmpList.size(); i++){
        Double tmpRatio = Double.valueOf(tmpList.get(i).height) / tmpList.get(i).width;
        if(Math.abs(aspectRatio - tmpRatio) < .15){
            sizeList.add(tmpList.get(i));
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...