Страницы

Поиск по вопросам

суббота, 6 октября 2018 г.

Управление вспышкой камеры

Как управлять вспышкой камеры на Android устройствах из Qt? Ищется решение исключительно в стиле Qt. Если на данном этапе развития Qt это не возможно тогда, полагаю, решением может являться связка Qt Android Extras C++ + код управления камерой на Java. К сожалению в Java не силен чтобы реализовать этот вариант.
На Qt пробовал следующие варианты:
QML:
Torch { power: 75 // 75% of full power enabled: true // On }
другой вариант
Camera { flash.mode: Camera.FlashTorch }
с++:
auto* camera = new QCamera(QCamera::BackFace); QObject::connect(camera, &QCamera::stateChanged, [=](QCamera::State state){ qDebug() << "state:" << state; if (state == QCamera::LoadedState) { auto *exposure = camera->exposure(); qDebug() << "FlashTorch: " << exposure->isFlashModeSupported(QCameraExposure::FlashTorch); qDebug() << "FlashOn: " << exposure->isFlashModeSupported(QCameraExposure::FlashOn); if (exposure->isFlashModeSupported(QCameraExposure::FlashTorch)) { exposure->setFlashMode(QCameraExposure::FlashTorch); } else if (exposure->isFlashModeSupported(QCameraExposure::FlashOn)){ exposure->setFlashMode(QCameraExposure::FlashOn); } qDebug() << "flashMode:" << exposure->flashMode(); } }); camera->load();
Оба варианта не работают. Получаю вывод на консоль:
FlashTorch: false FlashOn: true
Но вспышка не включается.
AndroidManifest.xml:

Тестовый стенд:
Qt Creator 3.5.0 (opensource) Qt 5.5.0 (GCC 4.9.1 20140922, 64 бита) android 5.0.1 телефон Samsung GALAXY S4
Update 11.01.2016:
Еще одна попытка на QML. Пример взят отсюда Camera QML Type
Item { width: 640 height: 360
Camera { id: camera position: Camera.BackFace captureMode: Camera.CaptureVideo
imageProcessing.whiteBalanceMode: CameraImageProcessing.WhiteBalanceFlash
exposure { exposureCompensation: -1.0 exposureMode: Camera.ExposurePortrait }
flash.mode: Camera.FlashOn
imageCapture { onImageCaptured: { photoPreview.source = preview // Show the preview in an Image } } }
VideoOutput { source: camera anchors.fill: parent focus : visible // to receive focus and capture key events when visible }
Image { id: photoPreview } }
Button { text: "Start" onClicked: { camera.start() } }


Ответ

Вспышка поддерживается только в режиме видео захвата.

Комментариев нет:

Отправить комментарий