Параметры камеры Android setJpeg Качество устарело? Пользовательское приложение камеры

Я создаю специальное приложение камеры для Android. API Camera.Parameters содержит такие методы, как setPreviewSize или же setPictureSize, которые работают хорошо.

Но я пытаюсь использовать параметр setJpegQuality(int):

    Camera cam = getCameraInstance();
    if(cam == null){
        setResult(INSTANCE_ERROR);
        finish();
    }

    params = cam.getParameters();
    params.setJpegQuality(jpegQuality); 
    cam.setParameters(params);

Я тестирую свое приложение на 3 разных устройствах: HTC Desire Z, Galaxy S2 и Galaxy S4.

setJpegQuality работает на HTC (Android 2.2.1) и на Galaxy S2 (4.1.2), но не работает на устройстве Galaxy S4 (4.2.2).

Итак, мой вопрос: эта функция устарела? Есть ли другой способ установить качество изображения? В документации для разработчиков это не является устаревшей функцией, поэтому я немного запутался...

Я тоже пробовал

params.set("jpeg-quality", jpegQuality);

Но это то же самое:(

Спасибо за ответы.

3 ответа

Для S3 и S4 вы можете написать специальный код устройства, чтобы уменьшить размер файла.

Если вы выполняете поиск в Google, команда разработчиков Android также упоминает, что все зависит от реализации производителя ( https://code.google.com/p/android/issues/detail?id=8091). Реализация параметров и функций камеры полностью зависит от используемого оборудования, я думаю.

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

Я знаю, что это не то, что мы ожидаем от разработчика, но я верю, что мы, разработчики, можем исправить все.:)

Извините, я не вижу ответов, наконец, пришли:) Я даже не использую это не рабочие параметры больше

Я нашел решение, чтобы установить качество моей фотографии, когда я сохраняю ее в виде файла:

FileOutputStream fos = new FileOutputStream(finalFilePath);
bmp.compress(Bitmap.CompressFormat.JPEG, jpegQuality, fos);

Надеюсь, поможет

Я использую библиотеку CWAC-Camera для своей пользовательской камеры. Я разветвил основной репозиторий и добавил jpegQuality параметр к PictureTransaction:
https://github.com/cookbrite/cwac-camera/commit/65a0a2082194dfc8069f605f0191c43357bb0852

Это гарантирует, что полученное изображение всегда будет сжато до требуемого качества.

Одним из недостатков этого подхода является то, что он должен загружать и сжимать файл изображения в натуральную величину в коде приложения, при этом используя setJpegQuality на Camera.Parameters может быть более оптимизированным.

Другие вопросы по тегам