如何使用 Lollipop 之前版本的支持库获取 MediaSessionCompat 列表?
How to get list of MediaSessionCompat using support library for pre-Lollipop versions?
因此 Google 弃用了整个 RemoteControlClient,并将其替换为 MediaSession。然后,为了添加向后兼容性,在支持库中添加了 MediaSessionCompat,因此您不再需要使用 RemoteControlClient。
但是,他们没有添加 接收 元数据和播放状态的替代品,也无法 控制 它。当然,如果您 是 媒体播放器,您可以制作自己的 MediaSessionCompat
,但如果您只想远程控制其他媒体播放器怎么办?
我的问题是,MediaSessionManager
使用支持库的替代品是什么?具体来说,如何获取系统上所有当前 MediaSessionCompat
会话的列表(例如 MediaSessionManager.addOnActiveSessionsChangedListener()
使用新的 API)?
基本上,我如何让下面的代码在 API < 21:
上工作
private MediaSessionManager mSessionManager;
private MediaController mController;
private MediaSessionManager.OnActiveSessionsChangedListener sessionListener = new MediaSessionManager.OnActiveSessionsChangedListener() {
@Override
public void onActiveSessionsChanged(List<MediaController> controllers) {
mController = controllers.get(0);
mController.registerCallback(controllerCallback);
}
};
@Override
public void onCreate() {
super.onCreate();
mSessionManager = (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE);
ComponentName componentName = new ComponentName(this, "com.example.MyNotificationListener");
mSessionManager.addOnActiveSessionsChangedListener(sessionListener, componentName);
}
这不可能。支持库中没有 MediaSessionManager 的替代品,因此您只能使用它。
因此 Google 弃用了整个 RemoteControlClient,并将其替换为 MediaSession。然后,为了添加向后兼容性,在支持库中添加了 MediaSessionCompat,因此您不再需要使用 RemoteControlClient。
但是,他们没有添加 接收 元数据和播放状态的替代品,也无法 控制 它。当然,如果您 是 媒体播放器,您可以制作自己的 MediaSessionCompat
,但如果您只想远程控制其他媒体播放器怎么办?
我的问题是,MediaSessionManager
使用支持库的替代品是什么?具体来说,如何获取系统上所有当前 MediaSessionCompat
会话的列表(例如 MediaSessionManager.addOnActiveSessionsChangedListener()
使用新的 API)?
基本上,我如何让下面的代码在 API < 21:
上工作private MediaSessionManager mSessionManager;
private MediaController mController;
private MediaSessionManager.OnActiveSessionsChangedListener sessionListener = new MediaSessionManager.OnActiveSessionsChangedListener() {
@Override
public void onActiveSessionsChanged(List<MediaController> controllers) {
mController = controllers.get(0);
mController.registerCallback(controllerCallback);
}
};
@Override
public void onCreate() {
super.onCreate();
mSessionManager = (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE);
ComponentName componentName = new ComponentName(this, "com.example.MyNotificationListener");
mSessionManager.addOnActiveSessionsChangedListener(sessionListener, componentName);
}
这不可能。支持库中没有 MediaSessionManager 的替代品,因此您只能使用它。