第一种是直接用SDK的蓝牙Socket类来进行蓝牙通信,外部设备再用蓝牙转串口进行控制。这种方式有较高延时,蓝牙模块需要供电,低带宽。
第二种是使用USB转RS232方式(使用内核驱动和使用安卓驱动两种方式)这种方式不需要硬件改动,不需要另外的供电,延时很小且有较高带宽。但是安卓设备需要硬件上支持USBHOST接口(一般安卓平板支持安卓手机一般是没有的),另外可能需要ROOT以改变、dev/ttyusb0文件权限来加载一个内核模块。开发需要使用android-seriaport-api。
第三种是最容易的方案,直接使用串口进行连接,但是这种方式兼容性不好,只有少数设备支持,而且串口不支持流控制(由安卓提供的USB HOST API决定的)。使用时也用android-seriaport-api。
第四种是将安卓作为USB从机,外部设备作为USB主机与之通信,这种方式几乎与所有安卓设备兼容(一般都有USB从口),无需ROOT,低延迟,高带宽。