最近公司需要,刚好做了关于蓝牙的开发,大约一年多以前,做过关于手机蓝牙控制相控矩阵,时间太久,都忘记了,特意写个笔记来加深下记忆,首先呢去查了下官网的api,地址是https://developer.android.com/guide/topics/connectivity/bluetooth.html?hl=zh-cn,其实这个上面已经讲的很全了,不过自己为了加深下记忆再写一遍。
提供的API的可操作如下:
1.搜索其他蓝牙设备
2. 查询适配设备
3.建立RFCOMM通道
4.通过发现服务连接其他蓝牙设备
5.交换数据
6.管理多项连接
下面就具体的来分析下:
封装的接口都在andoird.bluttooth这个包下
1.搜索其他设备所需要的用到的BluttoothAdapter
BluetoothAdapter adapter=BluetoothAdapter.getDafaultAdapter();
通过这个静态的方法来获取蓝牙适配器
作用:
1.通过adapter是否为空来判断该设备是否支持蓝牙;
2.通过adapter.disconvery();这个方法来搜索远程设备;
3.通过搜索到的远程设备的地址实例化远程设备;
4.建立本地服务端BluetoothServerSocket和远程设备进行通信;
2.BluetoothDevice
作用:
1.表示的是一个远程设备,可以获取到远程设备的地址 UIID等信息;
2.通过远程设备创建BluetoothSocket建立远程连接;
3.BluetoothServerSocket;
作用:
表示服务器socket,用来监听未来的请求(和TCP ServerSocket类似)。为了能使两个蓝牙设备进行连接,一个设备必须使用该类开启服务器socket,当远程的蓝牙设备请求该服务端设备时,如果连接被接受,BluetoothServerSocket将会返回一个已连接的BluetoothSocket类对象。
总体的开发流程:
UI的绘制就不说了
配置蓝牙权限》打开蓝牙》搜索蓝牙》注册广播》根据在广播中搜索到的设备建立远程连接》IO读写管理
相关的api在官网上已经很详细了 用的时候查一下文档就可以了,值得注意一点是执行设备搜索的操作是一项很繁重的任务,会消耗大量的资源。一旦你找到了一个设备并要进行连接,请务必确认是否停止搜索设备的操作。如果已经进行了连接,那么搜索操作将会显著地降低连接的速率,因此你应当在连接时停止搜索。可通过cancelDiscovery()方法停止搜索。
参考:http://www.jianshu.com/p/fc46c154eb77
感谢广阔的网络资源可以学习