Audio Player Module
Introduction
The AudioPlayer_C
module provides a streamlined interface for playing audio using the QMediaPlayer framework on MConn or desktop. It provides core multimedia functionalities such as play, pause, stop, seek, and volume control functionalities.
This module is ideal for applications that need media playback integration and want to control or monitor the player from QML in real-time.
Primary Functions of AudioPlayer_C
initMediaPlayer (public function) Initializes the QMediaPlayer object, connects its internal signals to update playback status, and sets initial volume.
void AudioPlayer_C::initMediaPlayer();
destroyMediaPlayer (public function) Destroys the QMediaPlayer object to release the audio hardware (used especially when switching control to other modules like a radio player).
void AudioPlayer_C::destroyMediaPlayer();
play (public function)
Plays a local audio file. Default path is /rw_data/test.wav
.
void AudioPlayer_C::play(QString path = "/rw_data/test.wav");
pause (public function) Pauses playback.
void AudioPlayer_C::pause();
stop (public function) Stops playback and resets internal state.
void AudioPlayer_C::stop();
repeat (public function) Enables or disables repeat mode. Internally, a timer checks for end of playback to restart the track.
void AudioPlayer_C::repeat(bool repeat);
setVolume / getVolume (public function) Sets or gets the volume. Volume value is expected as a percentage (0–100), internally scaled to ALSA's 0.0–1.0 range.
void AudioPlayer_C::setVolume(double volume);
double AudioPlayer_C::getVolume();
formatMillisec (public function) Converts milliseconds into a formatted time string hh:mm:ss.
QString AudioPlayer_C::formatMillisec(int milliseconds);
prepareHardware / resetHardware (public function) Controls GPIO pin 149 to switch audio routing hardware for playback.
void AudioPlayer_C::prepareHardware(bool rds_out = false);
void AudioPlayer_C::resetHardware();
QML-Accessible Properties
These properties are exposed via Q_PROPERTY
and are directly bindable in QML:
Property | Type | Description |
---|---|---|
position | int | Current playback position in milliseconds |
duration | int | Total duration of audio track |
volume | double | Current volume level (0–100%) |
isPlaying | bool | True if audio is currently playing |
Usage
Initialize and Expose to QML
m_audioPlayer = std::make_shared<AudioPlayer_C>(this);
m_engine->rootContext()->setContextProperty("AudioPlayer_Q", m_audioPlayer.get());
Playback from QML
Button {
text: AudioPlayer_Q.isPlaying ? "Pause" : "Play"
onClicked: {
if (AudioPlayer_Q.isPlaying)
AudioPlayer_Q.pause()
else
AudioPlayer_Q.play("/rw_data/test.wav")
}
}
Button {
text: "Stop"
onClicked: AudioPlayer_Q.stop()
}
Volume Control in QML
Slider {
from: 0
to: 100
value: AudioPlayer_Q.volume
onMoved: AudioPlayer_Q.setVolume(value)
}
Seek Functionality in QML
Slider {
from: 0
to: AudioPlayer_Q.duration
value: AudioPlayer_Q.position
onMoved: AudioPlayer_Q.position = value
}
Enable Repeat Playback
CheckBox {
text: "Repeat"
onCheckedChanged: AudioPlayer_Q.repeat(checked)
}