27 if (m_cameraSession) {
30 isPendingSetActive = active;
36 return m_cameraSession ? m_cameraSession->
isActive() :
false;
43 if (m_cameraSession) {
46 for (
int i = 0;
i < cameras.size(); ++
i) {
54 reactivateCameraSession();
59void QAndroidCamera::reactivateCameraSession()
65 qWarning() <<
"Changing camera during recording not supported";
85 if (m_service == captureSession)
88 m_service = captureSession;
90 disconnect(m_cameraSession,
nullptr,
this,
nullptr);
91 m_cameraSession =
nullptr;
97 if (!m_cameraFormat.
isNull())
106 if (isPendingSetActive) {
108 isPendingSetActive =
false;
114 if (!m_cameraSession || !m_cameraSession->
camera())
154 return (m_cameraSession && m_cameraSession->
camera()) ? m_supportedFocusModes.
contains(
mode) :
false;
157void QAndroidCamera::onCameraOpened()
162 m_supportedFocusModes.
clear();
163 m_continuousPictureFocusSupported =
false;
164 m_continuousVideoFocusSupported =
false;
165 m_focusPointSupported =
false;
172 m_continuousPictureFocusSupported =
true;
175 m_continuousVideoFocusSupported =
true;
188 m_focusPointSupported =
true;
203 m_zoomRatios.
clear();
211 m_maxExposureCompensationIndex*m_exposureCompensationStep);
213 m_supportedExposureModes.
clear();
215 if (!sceneModes.isEmpty()) {
216 for (
int i = 0;
i < sceneModes.size(); ++
i) {
217 const QString &sceneMode = sceneModes.at(
i);
256 isFlashSupported =
false;
257 isFlashAutoSupported =
false;
258 isTorchSupported =
false;
261 for (
int i = 0;
i < flashModes.size(); ++
i) {
264 isFlashAutoSupported =
true;
266 isFlashSupported =
true;
268 isTorchSupported =
true;
273 m_supportedWhiteBalanceModes.
clear();
275 for (
int i = 0;
i < whiteBalanceModes.size(); ++
i) {
276 const QString &wb = whiteBalanceModes.at(
i);
333void QAndroidCamera::setCameraFocusArea()
335 if (!m_cameraSession)
352 1.f - focusSize.width());
355 1.f - focusSize.height());
371 if (!m_cameraSession || !m_cameraSession->
camera())
376 float newZoom = m_zoomRatios.
at(validZoomIndex) /
qreal(100);
383 if (!m_cameraSession || !m_cameraSession->
camera())
403 if (!m_cameraSession || !m_cameraSession->
camera())
409 return isFlashSupported;
411 return isFlashAutoSupported;
423 if (!m_cameraSession)
441 if (!m_cameraSession || !m_cameraSession->
camera())
447 return isTorchSupported;
458 if (!m_cameraSession || !m_cameraSession->
camera())
534 int biasIndex =
qRound(
bias / m_exposureCompensationStep);
535 biasIndex =
qBound(m_minExposureCompensationIndex, biasIndex, m_maxExposureCompensationIndex);
536 float comp = biasIndex * m_exposureCompensationStep;
548 if (!m_cameraSession)
555 camera->setWhiteBalance(wb);
562#include "moc_qandroidcamera_p.cpp"
void setFlashMode(const QString &value)
void setExposureCompensation(int value)
float getExposureCompensationStep()
void setFocusAreas(const QList< QRect > &areas)
QStringList getSupportedFocusModes()
void previewSizeChanged()
QStringList getSupportedSceneModes()
void setSceneMode(const QString &value)
void setFocusMode(const QString &value)
QSize previewSize() const
int getMaxNumFocusAreas()
QStringList getSupportedWhiteBalance()
int getMinExposureCompensation()
int getMaxExposureCompensation()
QStringList getSupportedFlashModes()
QList< int > getZoomRatios()
void setActive(bool active)
void error(int error, const QString &errorString)
int getSelectedCameraId()
void setCameraFormat(const QCameraFormat &format)
void setSelectedCameraId(int cameraId)
AndroidCamera * camera() const
void setCaptureSession(QPlatformMediaCaptureSession *session) override
void setExposureCompensation(float bias) override
void setFocusMode(QCamera::FocusMode mode) override
void setExposureMode(QCamera::ExposureMode mode) override
bool isTorchModeSupported(QCamera::TorchMode mode) const override
QAndroidCamera(QCamera *camera)
void setFlashMode(QCamera::FlashMode mode) override
bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const override
void zoomTo(float factor, float rate) override
void setCamera(const QCameraDevice &camera) override
bool isFocusModeSupported(QCamera::FocusMode mode) const override
bool setCameraFormat(const QCameraFormat &format) override
bool isFlashReady() const override
void setWhiteBalanceMode(QCamera::WhiteBalanceMode mode) override
bool isFlashModeSupported(QCamera::FlashMode mode) const override
virtual ~QAndroidCamera()
void setActive(bool active) override
bool isActive() const override
bool isExposureModeSupported(QCamera::ExposureMode mode) const override
void setTorchMode(QCamera::TorchMode mode) override
QMediaRecorder::RecorderState state() const
void stop(bool error=false)
The QCameraDevice class provides general information about camera devices.
The QCamera class provides interface for system camera devices.
WhiteBalanceMode
\value WhiteBalanceAuto Auto white balance mode.
@ WhiteBalanceFluorescent
TorchMode
\value TorchOff Torch is Off.
void setFlashMode(FlashMode mode)
FocusMode
\value FocusModeAuto Continuous auto focus mode.
FlashMode
\value FlashOff Flash is Off.
ExposureMode
\value ExposureAuto Automatic mode.
const_reference at(qsizetype i) const noexcept
void append(parameter_type t)
iterator insert(const Key &key, const T &value)
T value(const Key &key, const T &defaultValue=T()) const
bool contains(const Key &key) const
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
\inmodule QtCore\reentrant
constexpr qreal x() const noexcept
Returns the x coordinate of this point.
constexpr qreal y() const noexcept
Returns the y coordinate of this point.
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
QRect intersected(const QRect &other) const noexcept
constexpr int height() const noexcept
Returns the height.
constexpr int width() const noexcept
Returns the width.
constexpr bool isValid() const noexcept
Returns true if both the width and height is equal to or greater than 0; otherwise returns false.
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
Combined button and popup list for selecting options.
int qRound(qfloat16 d) noexcept
static int area(const QSize &s)
constexpr const T & qBound(const T &min, const T &val, const T &max)
static bool contains(const QJsonArray &haystack, unsigned needle)
GLint GLint GLint GLint GLint x
[0]
GLint GLsizei GLsizei GLenum format
QLatin1StringView QLatin1String
#define QStringLiteral(str)
myObject disconnect()
[26]
bool contains(const AT &t) const noexcept