小米手机锁屏不显示播放控件,主因是权限、通知、元数据、wake_lock配置或miui系统限制未满足:需开启锁屏通知与悬浮窗权限,填全title/singer/coverimgurl,manifest中正确配置转义的wake_lock权限并云打包,封面图需≥512×512且直链可访问。

小米手机锁屏不显示播放控件?先确认权限和通知是否打开
锁屏界面不显示播放器,90% 是系统级权限没开全。MIUI 对后台音频控制特别敏感,缺一不可。
- 进入 设置 → 通知和状态栏 → 通知管理,找到你的 App,确保「允许通知」和「锁屏通知」都开启
- 进入 安全中心 → 应用管理 → 权限 → 应用权限管理,检查是否授予了「后台弹出界面」「显示在其他应用上方」(部分 MIUI 版本叫「悬浮窗」)
- 如果用了
uni.getBackgroundAudioManager(),但锁屏仍无控件,大概率是 iOS 风格的元数据缺失——小米也认title、singer、coverImgUrl这三个字段,缺一个就不显示
manifest.json 里 WAKE_LOCK 权限写错位置就白配
Android 端锁屏后几秒暂停,不是代码问题,而是 WAKE_LOCK 没生效。小米系机型尤其明显。
小米/米家智能家居设备控制。通过MCP Server工具控制家中设备,包括灯、空气净化器、电暖气、空调、风扇、扫地机器人、窗帘等。触发场景:用户提到智能家居控制指令,如"把灯关掉"、"开空调"、"净化器调到睡眠模式"、"客厅太暗了"、"家里空气不好"等。即使未明确提及"小米"或"米家",只要涉及家居设备控制即可触发。
- 必须在
manifest.json的app-plus → distribute → android → permissions下添加:["<uses-permission android:name='\"android.permission.WAKE_LOCK\"'></uses-permission>"] - 注意 XML 标签要完整转义,不能漏掉斜杠,也不能写成字符串数组如
["WAKE_LOCK"] - 改完必须重新云打包,本地调试或热更新完全不生效;打包日志里搜
wakelock或background audio确认是否注入成功
MIUI 12+ 锁屏音乐样式需手动匹配系统
即使权限全开、元数据填满,MIUI 12 及以上版本仍可能只显示默认“播放中”文字,不展示封面和进度条——这是系统策略,不是 uni-app 能绕过的。
- App 内无需额外配置 UI 样式,MIUI 会自动拉取
coverImgUrl渲染锁屏封面,但要求图片尺寸 ≥ 512×512,且格式为 JPG/PNG - 若封面模糊或不显示,检查图片 URL 是否可直链访问(小米会直接 fetch,不走 uni-app 请求拦截)
- 进度条拖动、下一首等操作依赖系统 MediaSession,uni-app 仅通过
bgm.onPlay()、bgm.onPause()等事件同步状态,无法主动推送自定义控件
别在 H5 或小程序里测试锁屏功能
uni.getBackgroundAudioManager() 在 H5 和小程序端根本不会触发锁屏控件——它只在 App 端(iOS/Android 原生层)有效,其他平台静默降级。
- H5 端调用后无报错,但
play()实际无效;小程序端虽支持该 API,但锁屏界面由微信统一管控,第三方 App 无法写入 - 真机测试务必用小米手机安装云打包后的正式包,模拟器、自定义基座、HBuilderX 运行都不反映真实行为
- 切后台后听不到声音?先看 logcat 有没有
Wakelock acquired日志,再确认音频源是 HTTPS 地址(HTTP 在 MIUI 会直接拦截)
?v=timestamp 强制刷新,或托管到带正确 Cache-Control 头的静态资源服务上。










