In the QML project below, I want to play the audio file (kimya.mp3, in the sounds folder in the project's directory) when the project is installed on iOS, by touching the green rectangle on the screen.
The .pro file:
QT += quick multimedia
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Refer to the documentation for the
# deprecated API to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
ios {
APP_Sounds.files = $$PWD/sounds/kimya.mp3
APP_Sounds.path = sounds
QMAKE_BUNDLE_DATA += APP_Sounds
}
The main.cpp file: (intact, without changes)
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
And, this is main.qml:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtMultimedia 5.12
Window {
visible: true
width: 640; height: 480
title: qsTr("Hello World")
Rectangle {
width: 100; height: 100
color: "green"
anchors.centerIn: parent
MouseArea {
anchors.fill: parent
onClicked: playExplosion.play()
}
}
SoundEffect {
id: playExplosion
source: "file:///Users/Me/QML/soundTest/soundTest/sounds/kimya.mp3"
}
}
The audio file plays on other platforms, say Windows, Android and even Mac, but I don't know where in the code is faulty that when I install this project on iOS whatever I touch the green rectangle, no sound is played!
Do you have any experience in this case, please?
The way more simple is to add the sound file to the qrc and do:
SoundEffect { id: playExplosion source: "qrc:/assets/test.wav" volume: 1.0 }