C

QMediaSessionManager 类

QMediaSessionManager 类提供了当前设备上所有活跃的 媒体控制器 的列表。[技术预览](https://whats-new-in-this-release.html#features-that-are-a-technical-preview)。[更多...](#details)

头文件 #include <QMediaSessionManager>
CMake find_package(Qt6 REQUIRED COMPONENTS AndroidAutomotiveMedia)
target_link_libraries(mytarget PRIVATE Qt6::AndroidAutomotiveMedia)
qmake QT += media
QtAndroidAutomotive 6.5
继承 QObject

公共函数

QList<QMediaSessionController *>activeControllers() const

信号

静态公共成员

QMediaSessionManager *instance()

详细描述

QMediaSessionManager管理设备上的活跃 媒体控制器 列表。如果检测到系统中添加了新的控制器,或者活跃的控制器被从系统中删除,则会更新活跃控制器列表并发出信号通知变点。

要访问 Android 中的控制器,您需要具有 MEDIA_CONTENT_CONTROL 权限,或者用户需要为您的应用程序授予通知访问权限。对于通知访问,需要在 AndroidManifest.xml 文件中添加 QtMediaNotificationListener 类,如下所示

<service
    android:name="org.qtproject.qt.android.mediasession.QtMediaNotificationListener"
    android:enabled="true"
    android:exported="true"
    android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
    <intent-filter>
        <action android:name="android.service.notification.NotificationListenerService" />
    </intent-filter>
</service>

请参阅Qt Android Manifest File ConfigurationAndroid Manifest <service> 元素和 Android NotificationListenerService 文档以获取更多信息。

媒体会话已知问题、错误和缺陷

影响此 API 的所有已知问题、错误和缺陷在此列出并描述。这些问题的状态将在每次发布时更新。

在权限授予之前调用 onListenerConnected

当前,媒体会话 API 依赖于 onListenerConnected 方法来确定用户是否已授予通知访问权限。但是,有时 Android 甚至在通知访问权限授予之前就会调用 onListenerConnected 方法。这是一个 open bug 在 Android 上,并且已在 此处 报告。

一种解决方法是,在卸载应用程序之前取消安装应用程序的权限。

另请参阅:QMediaSessionController

成员函数文档

QList<QMediaSessionController *> QMediaSessionManager::activeControllers() const

返回设备上活动的控制器列表。

当应用程序播放媒体时,它可以创建一个媒体会话,以便其他应用程序可以选择控制正在播放的媒体。这些控制器代表了设备上的活动会话。

注意:控制器属于QMediaSessionManager。当发出QMediaSessionManager::activeControllersChanged() 信号时,控制器将被删除,并且任何引用都无效。

[信号] void QMediaSessionManager::activeControllersChanged()

媒体控制器列表更新时,会发出此信号。例如,当添加新控制器或删除旧控制器时。

[静态] QMediaSessionManager *QMediaSessionManager::instance()

返回单例实例的指针。

在特定的Qt许可下可用。
了解更多信息。