![【AVRCP】规范精讲[40]:属性请求截断,单条歌曲信息如何适配MTU限制](http://pic.xiahunao.cn/yaotu/【AVRCP】规范精讲[40]:属性请求截断,单条歌曲信息如何适配MTU限制)
用过车载蓝牙听歌的朋友,可能遇到过这种情况:点击一首歌曲,车机上只显示了歌名和歌手,专辑封面、流派、时长等信息全是空的,或者直接显示“信息缺失”。很多人以为是手机没传全数据,其实这背后藏着AVRCP里一个极易被忽略的细节——GetItemAttributes命令的MTU截断机制。目录一、场景与核心问题:为什么歌曲属性会不全?二、核心流程:MTU限制下的属性截断全链路三、关键协议知识点四、代码示例:控制器属性请求与解析逻辑五、开发避坑指南六、测验和上一篇讲的文件夹列表批量截断不同,这次是单条歌曲的多属性请求被MTU限制住了。比如你一次性请求10个属性,但控制器的接收缓冲区只能装下6个,目标设备只能返回前6个,剩下的就只能标记为不可用。如果没处理好这个流程,就会出现歌曲信息残缺、界面显示异常,甚至车机直接卡死的问题。本文把这个场景拆透,讲清楚MTU如何限制单条属性的传输、截断规则怎么跑、开发里最容易踩的坑有哪些,把这个高频考点彻底讲明白。一、场景与核心问题:为什么歌曲属性会不全?在蓝牙音频的文件浏览场景里,控制器(CT,比如车机、耳机)会向目标设备(TG,比如手机、播放器)发送GetItemAttributes命令,请求某一首歌曲的详细信息,比如歌名、艺术家、专辑、流派、时长、封面ID等。但控制器的接收缓冲