diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp
index 3afe59324c90bf8e5c7846abd34f17fea943d24c..714de7a4d480b2c0266d374f55832f9882659105 100644
--- a/examples/multimediawidgets/camera/camera.cpp
+++ b/examples/multimediawidgets/camera/camera.cpp
@@ -46,6 +46,7 @@
 #include <QMediaService>
 #include <QMediaRecorder>
 #include <QCameraViewfinder>
+#include <QCameraInfo>
 #include <QMediaMetaData>
 
 #include <QMessageBox>
@@ -53,6 +54,8 @@
 
 #include <QtWidgets>
 
+Q_DECLARE_METATYPE(QCameraInfo)
+
 Camera::Camera(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::Camera),
@@ -65,26 +68,23 @@ Camera::Camera(QWidget *parent) :
     ui->setupUi(this);
 
     //Camera devices:
-    QByteArray cameraDevice;
 
     QActionGroup *videoDevicesGroup = new QActionGroup(this);
     videoDevicesGroup->setExclusive(true);
-    foreach(const QByteArray &deviceName, QCamera::availableDevices()) {
-        QString description = camera->deviceDescription(deviceName);
-        QAction *videoDeviceAction = new QAction(description, videoDevicesGroup);
+    foreach (const QCameraInfo &cameraInfo, QCameraInfo::availableCameras()) {
+        QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup);
         videoDeviceAction->setCheckable(true);
-        videoDeviceAction->setData(QVariant(deviceName));
-        if (cameraDevice.isEmpty()) {
-            cameraDevice = deviceName;
+        videoDeviceAction->setData(QVariant::fromValue(cameraInfo));
+        if (cameraInfo == QCameraInfo::defaultCamera())
             videoDeviceAction->setChecked(true);
-        }
+
         ui->menuDevices->addAction(videoDeviceAction);
     }
 
     connect(videoDevicesGroup, SIGNAL(triggered(QAction*)), SLOT(updateCameraDevice(QAction*)));
     connect(ui->captureWidget, SIGNAL(currentChanged(int)), SLOT(updateCaptureMode()));
 
-    setCamera(cameraDevice);
+    setCamera(QCameraInfo::defaultCamera());
 }
 
 Camera::~Camera()
@@ -94,16 +94,13 @@ Camera::~Camera()
     delete camera;
 }
 
-void Camera::setCamera(const QByteArray &cameraDevice)
+void Camera::setCamera(const QCameraInfo &cameraInfo)
 {
     delete imageCapture;
     delete mediaRecorder;
     delete camera;
 
-    if (cameraDevice.isEmpty())
-        camera = new QCamera;
-    else
-        camera = new QCamera(cameraDevice);
+    camera = new QCamera(cameraInfo);
 
     connect(camera, SIGNAL(stateChanged(QCamera::State)), this, SLOT(updateCameraState(QCamera::State)));
     connect(camera, SIGNAL(error(QCamera::Error)), this, SLOT(displayCameraError()));
@@ -398,7 +395,7 @@ void Camera::displayCameraError()
 
 void Camera::updateCameraDevice(QAction *action)
 {
-    setCamera(action->data().toByteArray());
+    setCamera(qvariant_cast<QCameraInfo>(action->data()));
 }
 
 void Camera::displayViewfinder()
diff --git a/examples/multimediawidgets/camera/camera.h b/examples/multimediawidgets/camera/camera.h
index 52f03cbd366add53e0ff3ced2a9494dce8351308..faa02ccd75949c47df5c651bad9427bebc309870 100644
--- a/examples/multimediawidgets/camera/camera.h
+++ b/examples/multimediawidgets/camera/camera.h
@@ -60,7 +60,7 @@ public:
     ~Camera();
 
 private slots:
-    void setCamera(const QByteArray &cameraDevice);
+    void setCamera(const QCameraInfo &cameraInfo);
 
     void startCamera();
     void stopCamera();