diff options
Diffstat (limited to 'examples')
12 files changed, 101 insertions, 21 deletions
diff --git a/examples/multimedia/audiodecoder/audiodecoder.cpp b/examples/multimedia/audiodecoder/audiodecoder.cpp index 86904f7c9..f812fd3b6 100644 --- a/examples/multimedia/audiodecoder/audiodecoder.cpp +++ b/examples/multimedia/audiodecoder/audiodecoder.cpp @@ -129,16 +129,16 @@ void AudioDecoder::error(QAudioDecoder::Error error) case QAudioDecoder::NoError: return; case QAudioDecoder::ResourceError: - m_cout << "Resource error" << endl; + m_cout << "Resource error\n"; break; case QAudioDecoder::FormatError: - m_cout << "Format error" << endl; + m_cout << "Format error\n"; break; case QAudioDecoder::AccessDeniedError: - m_cout << "Access denied error" << endl; + m_cout << "Access denied error\n"; break; case QAudioDecoder::ServiceMissingError: - m_cout << "Service missing error" << endl; + m_cout << "Service missing error\n"; break; } @@ -149,10 +149,10 @@ void AudioDecoder::stateChanged(QAudioDecoder::State newState) { switch (newState) { case QAudioDecoder::DecodingState: - m_cout << "Decoding..." << endl; + m_cout << "Decoding...\n"; break; case QAudioDecoder::StoppedState: - m_cout << "Decoding stopped" << endl; + m_cout << "Decoding stopped\n"; break; } } @@ -160,12 +160,12 @@ void AudioDecoder::stateChanged(QAudioDecoder::State newState) void AudioDecoder::finished() { if (!m_fileWriter.close()) - m_cout << "Failed to finilize output file" << endl; + m_cout << "Failed to finilize output file\n"; - m_cout << "Decoding finished" << endl; + m_cout << "Decoding finished\n"; if (m_isPlayback) { - m_cout << "Starting playback" << endl; + m_cout << "Starting playback\n"; m_soundEffect.setSource(QUrl::fromLocalFile(m_targetFilename)); m_soundEffect.play(); } else { @@ -176,7 +176,7 @@ void AudioDecoder::finished() void AudioDecoder::playbackStatusChanged() { if (m_soundEffect.status() == QSoundEffect::Error) { - m_cout << "Playback error" << endl; + m_cout << "Playback error\n"; emit done(); } } @@ -184,7 +184,7 @@ void AudioDecoder::playbackStatusChanged() void AudioDecoder::playingChanged() { if (!m_soundEffect.isPlaying()) { - m_cout << "Playback finished" << endl; + m_cout << "Playback finished\n"; if (m_isDelete) QFile::remove(m_targetFilename); emit done(); @@ -200,7 +200,7 @@ void AudioDecoder::updateProgress() progress = position / (qreal)duration; if (progress > m_progress + 0.1) { - m_cout << "Decoding progress: " << (int)(progress * 100.0) << "%" << endl; + m_cout << "Decoding progress: " << (int)(progress * 100.0) << "%\n"; m_progress = progress; } } diff --git a/examples/multimedia/audiodecoder/main.cpp b/examples/multimedia/audiodecoder/main.cpp index c0947b83f..9c536ef0a 100644 --- a/examples/multimedia/audiodecoder/main.cpp +++ b/examples/multimedia/audiodecoder/main.cpp @@ -63,10 +63,10 @@ int main(int argc, char *argv[]) QTextStream cout(stdout, QIODevice::WriteOnly); if (app.arguments().size() < 2) { - cout << "Usage: audiodecoder [-p] [-pd] SOURCEFILE [TARGETFILE]" << endl; - cout << "Set -p option if you want to play output file." << endl; - cout << "Set -pd option if you want to play output file and delete it after successful playback." << endl; - cout << "Default TARGETFILE name is \"out.wav\" in the same directory as the source file." << endl; + cout << "Usage: audiodecoder [-p] [-pd] SOURCEFILE [TARGETFILE]\n"; + cout << "Set -p option if you want to play output file.\n"; + cout << "Set -pd option if you want to play output file and delete it after successful playback.\n"; + cout << "Default TARGETFILE name is \"out.wav\" in the same directory as the source file.\n"; return 0; } @@ -85,7 +85,7 @@ int main(int argc, char *argv[]) int sourceFileIndex = (isPlayback || isDelete) ? 2 : 1; if (app.arguments().size() <= sourceFileIndex) { - cout << "Error: source filename is not specified." << endl; + cout << "Error: source filename is not specified.\n"; return 0; } sourceFile.setFile(app.arguments().at(sourceFileIndex)); diff --git a/examples/multimedia/declarative-camera/doc/src/declarative-camera.qdoc b/examples/multimedia/declarative-camera/doc/src/declarative-camera.qdoc index 69963c360..2818c22b0 100644 --- a/examples/multimedia/declarative-camera/doc/src/declarative-camera.qdoc +++ b/examples/multimedia/declarative-camera/doc/src/declarative-camera.qdoc @@ -29,6 +29,7 @@ \example multimedia/declarative-camera \title QML Camera Example \ingroup multimedia_examples +\ingroup camera_examples_qml \brief The Camera Example shows how to use the API to capture a still image or video. diff --git a/examples/multimedia/video/qmlvideo/Info.plist b/examples/multimedia/video/qmlvideo/Info.plist new file mode 100644 index 000000000..92908df4b --- /dev/null +++ b/examples/multimedia/video/qmlvideo/Info.plist @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleExecutable</key> + <string>qmlvideo</string> + <key>CFBundleIdentifier</key> + <string>io.qt.${PRODUCT_NAME:rfc1034identifier}</string> + <key>CFBundleDisplayName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>NSCameraUsageDescription</key> + <string>Qt Multimedia Example</string> +</dict> +</plist> diff --git a/examples/multimedia/video/qmlvideo/main.cpp b/examples/multimedia/video/qmlvideo/main.cpp index e288c0ae4..01178acaa 100644 --- a/examples/multimedia/video/qmlvideo/main.cpp +++ b/examples/multimedia/video/qmlvideo/main.cpp @@ -62,6 +62,23 @@ #include "performancemonitordeclarative.h" #endif +#ifdef REQUEST_PERMISSIONS_ON_ANDROID +#include <QtAndroid> + +bool requestStoragePermission() { + using namespace QtAndroid; + + QString permission = QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE"); + const QHash<QString, PermissionResult> results = requestPermissionsSync(QStringList({permission})); + if (!results.contains(permission) || results[permission] == PermissionResult::Denied) { + qWarning() << "Couldn't get permission: " << permission; + return false; + } + + return true; +} +#endif + static const QString DefaultFileName1 = ""; static const QString DefaultFileName2 = ""; @@ -72,6 +89,10 @@ int main(int argc, char *argv[]) #ifdef PERFORMANCEMONITOR_SUPPORT PerformanceMonitor::qmlRegisterTypes(); #endif +#ifdef REQUEST_PERMISSIONS_ON_ANDROID + if (!requestStoragePermission()) + return -1; +#endif QString source1, source2; qreal volume = 0.5; diff --git a/examples/multimedia/video/qmlvideo/qml/qmlvideo/VideoItem.qml b/examples/multimedia/video/qmlvideo/qml/qmlvideo/VideoItem.qml index 8372acb7e..6614863ec 100644 --- a/examples/multimedia/video/qmlvideo/qml/qmlvideo/VideoItem.qml +++ b/examples/multimedia/video/qmlvideo/qml/qmlvideo/VideoItem.qml @@ -71,7 +71,7 @@ VideoOutput { MediaPlayer { id: mediaPlayer autoLoad: false - loops: Audio.Infinite + loops: MediaPlayer.Infinite onError: { if (MediaPlayer.NoError != error) { diff --git a/examples/multimedia/video/qmlvideo/qmlvideo.pro b/examples/multimedia/video/qmlvideo/qmlvideo.pro index 022835f12..4a73d6883 100644 --- a/examples/multimedia/video/qmlvideo/qmlvideo.pro +++ b/examples/multimedia/video/qmlvideo/qmlvideo.pro @@ -2,6 +2,10 @@ TEMPLATE = app TARGET = qmlvideo QT += quick multimedia +android: qtHaveModule(androidextras) { + QT += androidextras + DEFINES += REQUEST_PERMISSIONS_ON_ANDROID +} LOCAL_SOURCES = main.cpp LOCAL_HEADERS = trace.h @@ -16,6 +20,8 @@ include($$SNIPPETS_PATH/performancemonitor/performancemonitordeclarative.pri) target.path = $$[QT_INSTALL_EXAMPLES]/multimedia/video/qmlvideo INSTALLS += target +macos: QMAKE_INFO_PLIST = Info.plist + EXAMPLE_FILES += \ qmlvideo.png \ qmlvideo.svg diff --git a/examples/multimedia/video/qmlvideofx/main.cpp b/examples/multimedia/video/qmlvideofx/main.cpp index 814c85368..ec547795f 100644 --- a/examples/multimedia/video/qmlvideofx/main.cpp +++ b/examples/multimedia/video/qmlvideofx/main.cpp @@ -61,6 +61,23 @@ #include "performancemonitordeclarative.h" #endif +#ifdef REQUEST_PERMISSIONS_ON_ANDROID +#include <QtAndroid> + +bool requestStoragePermission() { + using namespace QtAndroid; + + QString permission = QStringLiteral("android.permission.WRITE_EXTERNAL_STORAGE"); + const QHash<QString, PermissionResult> results = requestPermissionsSync(QStringList({permission})); + if (!results.contains(permission) || results[permission] == PermissionResult::Denied) { + qWarning() << "Couldn't get permission: " << permission; + return false; + } + + return true; +} +#endif + int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); @@ -68,6 +85,10 @@ int main(int argc, char *argv[]) #ifdef PERFORMANCEMONITOR_SUPPORT PerformanceMonitor::qmlRegisterTypes(); #endif +#ifdef REQUEST_PERMISSIONS_ON_ANDROID + if (!requestStoragePermission()) + return -1; +#endif QUrl fileName; qreal volume = 0.5; diff --git a/examples/multimedia/video/qmlvideofx/qml/qmlvideofx/ContentVideo.qml b/examples/multimedia/video/qmlvideofx/qml/qmlvideofx/ContentVideo.qml index ade7012b1..7b3bba2b3 100644 --- a/examples/multimedia/video/qmlvideofx/qml/qmlvideofx/ContentVideo.qml +++ b/examples/multimedia/video/qmlvideofx/qml/qmlvideofx/ContentVideo.qml @@ -61,7 +61,7 @@ VideoOutput { id: mediaPlayer autoPlay: true volume: 0.5 - loops: Audio.Infinite + loops: MediaPlayer.Infinite } function play() { mediaPlayer.play() } diff --git a/examples/multimedia/video/qmlvideofx/qmlvideofx.pro b/examples/multimedia/video/qmlvideofx/qmlvideofx.pro index 097ad7516..07047aec8 100644 --- a/examples/multimedia/video/qmlvideofx/qmlvideofx.pro +++ b/examples/multimedia/video/qmlvideofx/qmlvideofx.pro @@ -2,6 +2,10 @@ TEMPLATE = app TARGET = qmlvideofx QT += quick multimedia +android: qtHaveModule(androidextras) { + QT += androidextras + DEFINES += REQUEST_PERMISSIONS_ON_ANDROID +} SOURCES += filereader.cpp main.cpp HEADERS += filereader.h trace.h diff --git a/examples/multimediawidgets/camera/doc/src/camera.qdoc b/examples/multimediawidgets/camera/doc/src/camera.qdoc index 26de47ccf..68e19aac3 100644 --- a/examples/multimediawidgets/camera/doc/src/camera.qdoc +++ b/examples/multimediawidgets/camera/doc/src/camera.qdoc @@ -32,6 +32,7 @@ \example multimediawidgets/camera \title Camera Example \ingroup multimedia_examples +\ingroup camera_examples \brief The Camera Example shows how to use the API to capture a still image or video. diff --git a/examples/multimediawidgets/customvideosurface/customvideoitem/videoplayer.cpp b/examples/multimediawidgets/customvideosurface/customvideoitem/videoplayer.cpp index 1fdd1c7f7..2a9900c2b 100644 --- a/examples/multimediawidgets/customvideosurface/customvideoitem/videoplayer.cpp +++ b/examples/multimediawidgets/customvideosurface/customvideoitem/videoplayer.cpp @@ -55,7 +55,7 @@ #include <QVideoSurfaceFormat> #if !defined(QT_NO_OPENGL) -# include <QGLWidget> +# include <QOpenGLWidget> #endif VideoPlayer::VideoPlayer(QWidget *parent) @@ -71,7 +71,7 @@ VideoPlayer::VideoPlayer(QWidget *parent) QGraphicsView *graphicsView = new QGraphicsView(scene); #if !defined(QT_NO_OPENGL) - graphicsView->setViewport(new QGLWidget); + graphicsView->setViewport(new QOpenGLWidget); #endif scene->addItem(videoItem); |