You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MAUI中使用通知的MediaStyle样式?

在MAUI中使用Android MediaStyle通知的解决方案

可以在MAUI中使用MediaStyle,核心思路是直接调用Android原生的MediaStyle API,绕过MAUI封装层的限制,具体实现如下:

  • 直接实例化AndroidX的MediaStyle
    MAUI中虽然NotificationCompat没有直接暴露MediaStyle,但可以引用AndroidX.Media.App.NotificationCompat.MediaStyle类来创建样式,再传递给SetStyle方法。示例代码:

    using Android.App;
    using Android.Content;
    using AndroidX.Core.App;
    using AndroidX.Media.App;
    
    // 1. 创建通知操作的PendingIntent(需根据实际逻辑实现)
    var prevIntent = new Intent(Android.App.Application.Context, typeof(YourMediaReceiver));
    prevIntent.SetAction("ACTION_PREV");
    var prevPendingIntent = PendingIntent.GetBroadcast(Android.App.Application.Context, 0, prevIntent, PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Immutable);
    
    var pauseIntent = new Intent(Android.App.Application.Context, typeof(YourMediaReceiver));
    pauseIntent.SetAction("ACTION_PAUSE");
    var pausePendingIntent = PendingIntent.GetBroadcast(Android.App.Application.Context, 1, pauseIntent, PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Immutable);
    
    var nextIntent = new Intent(Android.App.Application.Context, typeof(YourMediaReceiver));
    nextIntent.SetAction("ACTION_NEXT");
    var nextPendingIntent = PendingIntent.GetBroadcast(Android.App.Application.Context, 2, nextIntent, PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Immutable);
    
    // 2. 构建基础通知
    var notificationBuilder = new NotificationCompat.Builder(Android.App.Application.Context, "media_notification_channel")
        .SetContentTitle("当前播放")
        .SetContentText("歌曲名称 - 艺术家")
        .SetSmallIcon(Resource.Drawable.ic_media_notification)
        .AddAction(Resource.Drawable.ic_prev, "上一首", prevPendingIntent)
        .AddAction(Resource.Drawable.ic_pause, "暂停", pausePendingIntent)
        .AddAction(Resource.Drawable.ic_next, "下一首", nextPendingIntent)
        .SetPriority(NotificationCompat.PriorityHigh);
    
    // 3. 创建并配置MediaStyle
    var mediaStyle = new MediaStyle()
        .SetShowActionsInCompactView(0, 1, 2) // 设置折叠状态下显示的操作按钮索引
        .SetMediaSession(yourMediaSession.Token); // 关联媒体会话Token(需提前初始化MediaSession)
    
    // 4. 应用样式并发送通知
    notificationBuilder.SetStyle(mediaStyle);
    var notificationManager = NotificationManagerCompat.From(Android.App.Application.Context);
    notificationManager.Notify(1001, notificationBuilder.Build());
    
  • 关键注意事项

    • 确保项目已引用AndroidX.Media NuGet包(MAUI项目通常默认包含,若缺失可手动安装)
    • 必须为Android 8.0及以上版本创建对应的通知渠道,否则通知无法正常显示
    • 媒体会话(MediaSession)的初始化是MediaStyle正常工作的前提,需实现MediaSessionCompat.Callback处理播放控制逻辑

内容的提问来源于stack exchange,提问作者Vilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:17:10