mirror of
https://github.com/kavishdevar/librepods.git
synced 2026-04-28 00:56:07 +00:00
[Linux] Pause music when airpods disconnect
This commit is contained in:
@@ -359,13 +359,15 @@ private slots:
|
|||||||
LOG_WARN("Socket is still open, closing it");
|
LOG_WARN("Socket is still open, closing it");
|
||||||
socket->close();
|
socket->close();
|
||||||
socket = nullptr;
|
socket = nullptr;
|
||||||
discoveryAgent->start();
|
|
||||||
}
|
}
|
||||||
if (phoneSocket && phoneSocket->isOpen())
|
if (phoneSocket && phoneSocket->isOpen())
|
||||||
{
|
{
|
||||||
phoneSocket->write(AirPodsPackets::Connection::AIRPODS_DISCONNECTED);
|
phoneSocket->write(AirPodsPackets::Connection::AIRPODS_DISCONNECTED);
|
||||||
LOG_DEBUG("AIRPODS_DISCONNECTED packet written: " << AirPodsPackets::Connection::AIRPODS_DISCONNECTED.toHex());
|
LOG_DEBUG("AIRPODS_DISCONNECTED packet written: " << AirPodsPackets::Connection::AIRPODS_DISCONNECTED.toHex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mediaController->pause();
|
||||||
|
discoveryAgent->start();
|
||||||
}
|
}
|
||||||
void bluezDeviceDisconnected(const QString &address)
|
void bluezDeviceDisconnected(const QString &address)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -73,14 +73,7 @@ void MediaController::handleEarDetection(const QString &status) {
|
|||||||
QString playbackStatus = process.readAllStandardOutput().trimmed();
|
QString playbackStatus = process.readAllStandardOutput().trimmed();
|
||||||
LOG_DEBUG("Playback status: " << playbackStatus);
|
LOG_DEBUG("Playback status: " << playbackStatus);
|
||||||
if (playbackStatus == "Playing") {
|
if (playbackStatus == "Playing") {
|
||||||
int result = QProcess::execute("playerctl", QStringList() << "pause");
|
pause();
|
||||||
LOG_DEBUG("Executed 'playerctl pause' with result: " << result);
|
|
||||||
if (result == 0) {
|
|
||||||
LOG_INFO("Paused playback via Playerctl");
|
|
||||||
wasPausedByApp = true;
|
|
||||||
} else {
|
|
||||||
LOG_ERROR("Failed to pause playback via Playerctl");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -183,6 +176,20 @@ MediaController::MediaState MediaController::mediaStateFromPlayerctlOutput(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MediaController::pause() {
|
||||||
|
int result = QProcess::execute("playerctl", QStringList() << "pause");
|
||||||
|
LOG_DEBUG("Executed 'playerctl pause' with result: " << result);
|
||||||
|
if (result == 0)
|
||||||
|
{
|
||||||
|
LOG_INFO("Paused playback via Playerctl");
|
||||||
|
wasPausedByApp = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG_ERROR("Failed to pause playback via Playerctl");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MediaController::~MediaController() {
|
MediaController::~MediaController() {
|
||||||
if (playerctlProcess) {
|
if (playerctlProcess) {
|
||||||
playerctlProcess->terminate();
|
playerctlProcess->terminate();
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ public:
|
|||||||
void removeAudioOutputDevice();
|
void removeAudioOutputDevice();
|
||||||
void setConnectedDeviceMacAddress(const QString &macAddress);
|
void setConnectedDeviceMacAddress(const QString &macAddress);
|
||||||
|
|
||||||
|
void pause();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void mediaStateChanged(MediaState state);
|
void mediaStateChanged(MediaState state);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user