[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_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


    QCamera *m_camera;
    QVideoDeviceSelectorControl *m_deviceSelector;

Then in QML:

Camera {
    id: camera

CameraSelector {
    id: selector
    cameraObject: camera

Button {
    id: activateRearCamera
    onClicked: {
        selector. selectedCameraDevice = 0;

Button {
    id: activateFrontCamera
    onClicked: {
        selector. selectedCameraDevice = 1;

I didn't try any of this, but it should work ;)


-------------- 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