How to get sound on iOS

From Qt Wiki
Revision as of 13:47, 21 July 2020 by Hitokage (talk | contribs) (Described my approach that was the only one that worked for me. Couldn't make the above example work.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

iOS Sound

To play a sound file on IOS platform you can't store it in the qrc file but you have to put it in the bundle together with the qml files. Here https://github.com/niqt/iosqt you can find my example that plays sound on IOS. The most important part is in the .pro file), where the qml and audio are put in the bundle:

DATA_FILES = $$PWD/qml/iosqt/main.qml ../iosqt/page.qml ../iosqt/audio.mp3 ios: {

 data.files = $$DATA_FILES
 data.path = Documents
 QMAKE_BUNDLE_DATA *= data

}

obviously you have to include the plugin: QTPLUGIN *= qtaudio_coreaudio QTPLUGIN *= qtmedia_audioengine QTPLUGIN *= qavfcamera QTPLUGIN *= qavfmediaplayer

thus in main.qml: MediaPlayer {

 id: playMusic
 volume: 0.5
 source: "audio.mp3"

}

Alternate approach

Tested in 2020 and the above example was not working for me. Instead I made it work by these edits:

1) Included all content in my audio folder where I stored the sound files. The path attribute creates a new directory for your data. I haven't used it here keeping the bundled data in root.

ios: {
    BUNDLE_DATA.files = $$files($$PWD/audio/*.mp3)
    QMAKE_BUNDLE_DATA += BUNDLE_DATA
}

2) Used the same plugin inclusions as above. 3) Had to locate the file in QML like this:

source: StandardPaths.locate(StandardPaths.AppDataLocation, "file.mp3", StandardPaths.LocateFile)

Providing the URL by Standard Paths made it possible for the Media Player to open the file. The file couldn't be found without this.