gpt4 book ai didi

android - 控制另一个应用程序的音频播放

转载 作者:行者123 更新时间:2023-12-03 01:37:20 25 4
gpt4 key购买 nike

我正在尝试编写应用程序以控制其他应用程序的音频播放。

例如:我在Google Play上听音乐,而我的应用可以拦截对此音频流的控制。我不知道会不会是带有通知的窗口小部件或前台服务,但是我找不到有关如何检查系统中是否正在播放音乐以及如何获得对其进行控制的信息。

我找到了MediaSessionMediaBrowserService等。但这是关于一个应用程序内部的实现,该应用程序具有创建服务以播放音乐背景并将客户端部分创建为i UI部分并获得对Auto,Google Assistant等的访问权限。但是我只想编写客户端部分,获取有关当前正在播放音乐的信息,并编写一些小部件来由我自己控制

我可以用Google找出解决方案吗?

最佳答案

Service extends NotificationListenerService解决

服务内部使用了MediaSessionManagerMediaController

MediaSessionManager mediaSessionManager;
ComponentName componentName;
MediaController controller;

MediaSessionManager.OnActiveSessionsChangedListener sessionsChangedListener = new MediaSessionManager.OnActiveSessionsChangedListener() {
@Override
public void onActiveSessionsChanged(@Nullable List<MediaController> controllers) {
Log.d(TAG, "onActiveSessionsChanged: session is changed");
for (MediaController controller : controllers) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Log.d(TAG, "onActiveSessionsChanged: controller = " + controller.getPackageName());
MediaMetadata meta = controller.getMetadata();
Log.d(TAG, "onCreate: artist = " + meta.getString(MediaMetadata.METADATA_KEY_ARTIST));
Log.d(TAG, "onCreate: song = " + meta.getString(MediaMetadata.METADATA_KEY_TITLE));
}
}
}
};

@Override
public void onCreate() {
super.onCreate();
componentName = new ComponentName(this, TestMediaService.class);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
mediaSessionManager = (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE);
mediaSessionManager.addOnActiveSessionsChangedListener(sessionsChangedListener, componentName);

List<MediaController> controllers = mediaSessionManager.getActiveSessions(componentName);
Log.d(TAG, "onCreate listener: controllers size = " + controllers.size());
for (MediaController mediaController : controllers) {
controller = mediaController;
Log.d(TAG, "onCreate: controller = " + controller.getPackageName());
MediaMetadata meta = controller.getMetadata();
Log.d(TAG, "onCreate: artist = " + meta.getString(MediaMetadata.METADATA_KEY_ARTIST));
Log.d(TAG, "onCreate: song = " + meta.getString(MediaMetadata.METADATA_KEY_TITLE));
}
}
}

关于android - 控制另一个应用程序的音频播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51326579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com