Параметры камеры 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
может быть более оптимизированным.