You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Maui Community Toolkit MediaElement崩溃问题求助

使用MAUI Community Toolkit MediaElement遇到的问题

我在使用MAUI Community Toolkit的MediaElement时遇到异常,为排查问题,创建了全新的MAUI App模板,按官方文档仅添加如下代码:

<toolkit:MediaElement HeightRequest="400" WidthRequest="400" Source="https://commondatastorage.googleapis.com/gtv-videosbucket/sample/BigBuckBunny.mp4" ShouldShowPlaybackControls="True" />

控制台持续报错:

MediaManager: Error: AndroidX.LocalBroadcastManager.Content.LocalBroadcastManager not supported on Android 13 and above.

实际项目中问题更严重:集成Toolkit的IPopupService后,MediaElement会导致应用崩溃,日志显示:

Information: 0 : MediaControlsService destroyed.
The program 'xxxxx.MAUI.dll' has exited with code 0 (0x0).

问题原因

  • Android 13+兼容性问题:Android 13(API 33)起官方废弃了LocalBroadcastManager,但MediaElement底层依赖的MediaManager库仍在使用该组件,触发兼容性报错。
  • 生命周期冲突:MediaElement的后台播放服务(MediaControlsService)与IPopupService的Popup组件生命周期管理冲突,服务销毁时未正确释放资源,导致应用崩溃。

解决方法

1. 升级MAUI Community Toolkit到最新版本

社区工具包团队已修复Android 13+的兼容性问题,优先更新NuGet包:

  • 在项目NuGet包管理器中,将CommunityToolkit.Maui升级至最新稳定版
  • 同步项目后重新运行,LocalBroadcastManager的报错通常会消失

2. 禁用MediaElement后台控制服务

若升级后Popup崩溃问题仍存在,可通过禁用后台播放控制规避冲突:
在XAML中添加ShouldEnableMediaControls="False"属性:

<toolkit:MediaElement 
    HeightRequest="400" 
    WidthRequest="400" 
    Source="https://commondatastorage.googleapis.com/gtv-videosbucket/sample/BigBuckBunny.mp4" 
    ShouldShowPlaybackControls="True"
    ShouldEnableMediaControls="False" />

该配置会关闭后台的MediaControlsService,避免与Popup生命周期产生冲突。

3. 自定义Android平台实现(进阶)

如果以上方法无效,可自定义Android平台的MediaElement逻辑,替换废弃的LocalBroadcastManagerContextCompat.registerReceiver等现代API,此方案需要具备MAUI平台自定义开发经验。

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

火山引擎 最新活动