如何在Android端GeckoView中实现通知栏音乐控制控件功能
GeckoView实现通知栏音乐播放器控件方案
你要实现的和Chrome一致的通知栏媒体控制效果参考如下:
GeckoView本身已经兼容W3C标准Media Session API,和Chrome的实现逻辑一致,只需要完成网页侧和原生侧的对应配置即可实现同类效果,具体步骤如下:
一、前端网页侧配置
- 正常调用标准Media Session API注册媒体元数据、播放状态、控制回调即可,代码示例如下:
if ('mediaSession' in navigator) { // 注册媒体元数据 navigator.mediaSession.metadata = new MediaMetadata({ title: '正在播放的歌曲名', artist: '歌手名', album: '专辑名', artwork: [ { src: '专辑封面地址', sizes: '512x512', type: 'image/png' } ] }); // 注册控制动作回调 navigator.mediaSession.setActionHandler('play', () => { /* 执行播放逻辑 */ }); navigator.mediaSession.setActionHandler('pause', () => { /* 执行暂停逻辑 */ }); navigator.mediaSession.setActionHandler('previoustrack', () => { /* 执行上一首逻辑 */ }); navigator.mediaSession.setActionHandler('nexttrack', () => { /* 执行下一首逻辑 */ }); }
- 确保网页内的音频/视频元素在播放时没有被静音,且页面处于激活状态
二、Android原生侧配置
- 首先要给App申请必要的权限,在
AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- Android 13及以上需要 -->
- 初始化GeckoView时开启媒体会话相关开关,在GeckoRuntime的设置中启用对应配置:
val settings = GeckoRuntimeSettings.Builder() .mediaSessionEnabled(true) // 核心开关,开启Media Session支持 .mediaHardwareKeyHandlingEnabled(true) // 支持硬件按键控制,比如线控、蓝牙控制 .build() val runtime = GeckoRuntime.create(context, settings) geckoView.setSession(GeckoSession(), runtime)
- (可选)如果需要自定义通知栏的样式,你可以通过继承
GeckoMediaSessionDelegate来重写通知创建逻辑,替换默认的通知样式:
class CustomMediaSessionDelegate: GeckoMediaSession.Delegate { override fun onUpdateNotification(session: GeckoMediaSession, metadata: MediaMetadata, playbackState: Int) { // 自定义创建通知并展示,同时绑定MediaSession的控制逻辑 } } // 给MediaSession设置自定义Delegate runtime.mediaSession.delegate = CustomMediaSessionDelegate()
常见注意事项
- 如果通知栏没有展示控件,先检查是否开启了App的通知权限,以及Android 13及以上是否动态申请了
POST_NOTIFICATIONS权限 - 网页端的Media Session API调用要在音频开始播放之后执行,否则可能不会触发通知栏创建
- 不要手动禁止GeckoView的前台服务权限,媒体播放通知依赖前台服务实现
内容的提问来源于stack exchange,提问作者user9615788
相关产品推荐
相关产品推荐

