[Interest] Select front/rear camera on Android
Lopes Yoann
Yoann.Lopes at digia.com
Tue Jan 7 14:19:16 CET 2014
On Jan 7, 2014, at 12:28 PM, Cornelius Hald wrote:
The only workaround is to create a custom QML item in C++...
That's fine with me. However I'm not really sure how to do that as it
looks like QDeclarativeCamera has only private headers. Could you give
me a hint please.
I meant to basically rewrite QDeclarativeCamera adding the missing feature...
But forget about that, there's actually a much simpler workaround using the Camera's mediaObject property.
The property is declared with "SCRIPTABLE false" so it's not accessible from QML, but you can access it from C++.
Create a CameraSelector QML item in C++, something like this:
class CameraSelector : public QObject
{
Q_OBJECT
Q_PROPERTY(QObject* cameraObject READ ... WRITE setCameraObject ...)
Q_PROPERTY(int selectedCameraDevice READ ... WRITE setSelectedCameraDevice ...)
void setCameraObject(QObject *cam)
{
// get the QCamera from the declarative camera's mediaObject property.
m_camera = qvariant_cast<QCamera*>(cam->property("mediaObject"));
// get the video device selector control
QMediaService *service = m_camera->service();
m_deviceSelector = qobject_cast<QVideoDeviceSelectorControl*>(service->requestControl(QVideoDeviceSelectorControl_iid));
}
void setSelectedCameraDevice(int cameraId)
{
// A camera might already be started, make sure it's unloaded
m_camera->unload();
m_deviceSelector->setSelectedDevice(cameraId);
}
QCamera *m_camera;
QVideoDeviceSelectorControl *m_deviceSelector;
}
Then in QML:
Camera {
id: camera
}
CameraSelector {
id: selector
cameraObject: camera
}
Button {
id: activateRearCamera
onClicked: {
selector. selectedCameraDevice = 0;
camera.start();
}
}
Button {
id: activateFrontCamera
onClicked: {
selector. selectedCameraDevice = 1;
camera.start();
}
}
I didn't try any of this, but it should work ;)
--
Yoann
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20140107/bea7b23d/attachment.html>
More information about the Interest
mailing list