在Apple的MFI文档中说明了,USB接口的播放器是需要接入USB的HID接口以及USB PCM接口。
驱动部分暂时先不说了,直接说framwork部分的添加PCM接口部分的事情了。
1.在android的源码中提供了pcm部分的接口,源码位置;\external\tinyalsa.这里面就有pcm部分的代码了。
a.打开audio设备:struct pcm *pcm_open(unsigned int card, unsigned int device,unsigned int flags, struct pcm_config *config)
参数说明:
card 声卡编号。 这个可以在 proc/asound/下看到card0 、card1、cards。 如果你有两个声卡设备你才看得到card1,也就是说,如果ipod的usb pcm驱动成功的话在这个里面你就可以看到了card1了。
devices这个就是接口设备、按照实际需要修改了。
flags:这个参数填入 PCM_IN,因为我们需要的是PCM输入设备。
config:这个就是配置信息项目了重点配置项目: format : PCM_FORMAT_S16_LE; channels : 2;还有就是rates:我们先默认配置44100.这个参数是需要根据ipod发送过来的参数实时调整的。
在pcm_open的源码里面我们可以看到,实际上是直接打开设备:
snprintf(fn, sizeof(fn), "/dev/snd/pcmC%uD%u%c", card, device,flags & PCM_IN ? 'c' :