蓝牙开发几个比较重要的类:BluetoothAdapter、BluetoothDevice、BluetoothSocket、OutputStream、InputStream。
1、BluetoothAdapter
getDefaultAdapter(),得到本地蓝牙适配器
getBondedDevices,得到已配对的BluetoothDevice对象,返回一个Set
startDiscovery(),开始扫描设备
cancelDiscovery(),取消扫描设备
getRemoteDevice(),获取扫描到的设备,形参是一个MAC地址,可以通过device.getAddress()获得这个地址。
isEnabled(),蓝牙是否打开
enable(),打开蓝牙
disable(),关闭蓝牙
2、BluetoothDevice
btDevice = btAdapter.getRemoteDevice(String MAC),这条语句就可获取device
createRfcommSocketToServiceRecord(String UUID),这个device对象主要是用来创建RfcommSocket通道
3、BluetoothSocket
btSocket = btDevice.createRfcommSocketToServiceRecord(MY_UUID),如上所述,通过device获得socket通道,形参MY_UUID是个常量,不同的UUID功能不一样,用作串口,private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"),定义这么个字段就好了。
connect(),socket通道打通后,连接指定的MAC地址的蓝牙设备。
close(),关闭socket通道
getOutputStream(),得到输出流
getInputStream(),得到输入流
4、OutputStream
write(),一般形参是个字节数组
5、InputStream
read(),形参也是字节数组,返回一个int
实用的广播:
BluetoothDevice.ACTION_FOUND,扫描到有蓝牙设备
BluetoothAdapter.ACTION_DISCOVERY_FINISHED,扫描结束
BluetoothDevice.ACTION_ACL_CONNECTED,蓝牙连接
BluetoothDevice.ACTION_ACL_DISCONNECTED,蓝牙断开连接。BluetoothSocket类有个isConnect()方法,连接成功一次后就返回true,无法实现实时判断,运用这个广播就可以了。
不贴代码了,直接上传源码,整个代码都有注释,希望对那些初学安卓蓝牙或者做蓝牙小车只关注下位机的同学提供一丁点帮助。
出第二版啦:
相对于第一版做了一些修正:
1、增加了重力感应控制台
2、不再显示已配对的蓝牙设备
3、控制时箭头变红,直观一点
4、连接处理做了一些改变
通信协议依旧:前进a,后退b,左转c,右转d,停止e。
如果对你有帮助,请在我的GitHub上为这个项目点个赞,你也可以直接在我的GitHub上下载源码和APK,O(∩_∩)O哈哈~