基于安卓与PC间蓝牙技术的数据通信首先分为蓝牙部分,上位机部分以及安卓手机部分。蓝牙部分是作为上位机与安卓手机之间的互联设备。蓝牙设备可以通过串口连接与PC通信,也可以通过蓝牙无线传输与安卓手机进行数据交换。用VS2013在电脑上编译一个打电话的上位机程序,可以直接实现上位机对于手机的操控。再用Eclipse编译一个安卓的手机应用,可以通过这个应用实现打电话的这个功能[4,5]。
如图4-1分析总体的系统结构:
系统结构
4。2硬件设计
4。2。1蓝牙通讯过程
如图4-2所示,首先是主设备发起呼叫,查找周围的从设备,找到从设备后,与从设备进行配对,并输入PIN码(PIN:个人识别码),配对完成后,从设备记录主设备的信任信息,链路就建立成功了,就可以进行双向通讯。发现蓝牙设备需要用到startDiscovery()函数,然而连接蓝牙设备需要用到connect()函数。连接步骤如下:在发现后到远程设备Address,根据Addresss得到代表远程设备的BluetoothDevice,然后创建BluetoothSocket,最后connect()[5,6,7]。
蓝牙在通讯连接下,有4种状态。四种状态分别是激活ACTIVE、呼吸SHIFF、保持HOLD、休眠PARK。其中激活是正常工作状态,另外三种是节能规定的低功耗模式。 “呼吸”模式就是在一个微微网内,从设备降低了“ 监听”信息的速率。“保持”模式就是从设备和主设备还在连接中,只是没有数据传送,只有一个计数器在工作。从节能来说呼吸>保持>休眠。
蓝牙通讯过程
4。2。2 蓝牙设备地址的获取
蓝牙地址的组成分为 LAP(24位地址低端部分)、UAP(8位地址高端部分)和NAP(16位无意义地址部分)。其中,NAP和UAP是生产厂商的唯一标识码,必须由蓝牙权威部门分配给不同的厂商。而LAP是由厂商内部自由分配。对于某一种型号的手机或者设备,所有个体的NAP、UAP是固定的,可变的是LAP。
安卓软件获得蓝牙设备地址步骤有:蓝牙具体的搜索,连接均由android底层驱动软件完成。在蓝牙建立连接时,安卓设备系统会保存关于设备的详细信息,比如设备地址,设备类型,设备profile等。这些信息被保存成文件形式保存在/data/misc/bluetoothd文件下。安卓系统已经在固件层中封装好了获取这些文件信息的方法。使用如下方法即可获得连接过的蓝牙设备的地址信息。
获取本地的蓝牙适配器中配对过的蓝牙设备方法是BluetoothAdapter。 getDefaultAdapter()。 etBondedDevices(),遍历所有配对过的蓝牙设备,使用device。getAddress()语句获得单独某个设备的地址。使用for (BluetoothDevice device : pairedDevices) {device。getAddress(); }语句实现。