Как сделать разрешение предварительного просмотра независимой камеры на Android? - PullRequest
4 голосов
/ 21 декабря 2010

Я делаю приложение для Android 1.6, которое использует камеру телефона.

Чтобы сделать это приложение независимым от разрешения, мне нужно установить совместимое соотношение сторон для предварительного просмотра камеры на SurfaceLayout. В 1.6 SDK нет возможности получить поддерживаемые размеры для предварительного просмотра камеры. Можно использовать соотношение сторон 4: 3 или 3: 2 и не получать ошибок при этом?

С другой стороны, мне нужен способ сделать макет xml, который представляет этот Surfacelayout с таким (неизвестным) соотношением сторон в каждом разрешении. Я предполагаю, что невозможно изменить размер SurfaceLayout во время выполнения. Могу ли я сделать это с "дп" единиц? Другой способ сделать этот макет программно?

Есть некоторые приложения, такие как Vignette или приложение для камеры Android, с некоторыми хитростями, например черными полосами (виньетка) или фиксированной панелью кнопок, но я не знаю, как это сделать в любом разрешении.

Есть идеи?

Спасибо!

1 Ответ

6 голосов
/ 12 января 2011

В 1.6 SDK нет возможности получить поддерживаемые размеры для предварительного просмотра камеры.

Есть. Вы можете получить их при разборе параметра камеры preview-size-values.

String supportedSizesString = parameters.get("preview-size-values");
List<Size> supportedSizes = new ArrayList<Size>();
if (supportedSizesString != null && supportedSizesString.length() > 0) {
    StringSplitter ss = new TextUtils.SimpleStringSplitter(',');
    ss.setString(supportedSizesString);
    for (String supportedSize : ss) {
        String[] dimentions = supportedSize.split("x");
        if (dimentions.length > 1) {
            Size size = mCamera.new Size(Integer.parseInt(dimentions[0]),
            Integer.parseInt(dimentions[1]));
            supportedSizes.add(size);
        }
    }
}
...