媒体开始播放时是否有系统广播?

问题描述 投票:0回答:1

我希望每当媒体开始在 Android 设备上播放时我的应用程序都会收到通知。我似乎找不到发生这种情况时发出的任何系统广播。我知道我可以使用 audiomanager.isMusicActive() 检查,但这需要我不断轮询。

我也知道你可以请求audioFocus,然后在失去焦点时监听,但我也不一定想请求音频焦点!

android audio media android-audiomanager
1个回答
0
投票

您可以考虑另一种方法 - 使用 MediaSession 和 MediaController。

  • 在播放媒体的应用程序中使用 MediaSession。
  • 在应用程序中使用 MediaController 来获取有关播放状态的更新。

这是示例代码:

// In the app playing media
MediaSession mediaSession = new MediaSession(context, "YourMediaSessionTag");
mediaSession.setActive(true);

// In your app
MediaController mediaController = new MediaController(context, mediaSession.getSessionToken());
mediaController.registerCallback(new MediaController.Callback() {
    @Override
    public void onPlaybackStateChanged(PlaybackState state) {
        super.onPlaybackStateChanged(state);
        // Check the playback state, including whether it's playing
        if (state != null && state.getState() == PlaybackState.STATE_PLAYING) {
            // Media is playing
        }
    }
});

通过使用MediaController,您可以在播放状态发生变化时收到通知,而无需不断轮询。请注意,此方法假设播放媒体的应用程序已正确实现 MediaSession。

© www.soinside.com 2019 - 2024. All rights reserved.