关注迅速公众平台

关注迅速公众平台

企业电话:021-64391578

蓝牙开发的几个重要步骤


不管是基于IOS蓝牙,还是Android 蓝牙,的过程都包含下面几个重要的步骤:
1.搜索设备
       设备搜索是一个扫描程序,它会搜索本地附近启用了蓝牙的设备,并从这些设备上获取一些信息(这个过程有时简称为“发现中”、“查询中”或者“扫描中”)。然而,在本地区域范围内的蓝牙设备只有在它是允许被发现的模式下才会响应其它设备扫描发现的请求。如果一个设备是可被发现的状态模式,它会通过共享一些信息来响应搜索发现的请求,例如设备名字,设备类型和它唯一的MAC地址。使用这些信息,执行扫描的设备才能创建一个连接连接上被发现的设备。
通过蓝牙设备搜索的代码
a.获取适配器:mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
b.打开适配器:Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
c.搜索蓝牙设备:
获取已配对设备:Set>BluetoothDevice< pairedDevices = mBtAdapter.getBondedDevices();
搜索周边设备:mBtAdapter.startDiscovery();
BluetoothDevice.ACTION_FOUND找到一个;
BluetoothAdapter.ACTION_DISCOVERY_FINISHED搜索结束。
 
2.连接到蓝牙ConnectThread:
       服务端设备和客户端设备获取BluetoothSocket的方法不同。服务端设备将会在接受一个传入的连接请求时获得。客户端设备会在它打开与服务端设备的RFCOMM通道时获得。
一种解决方案是自动将每一台设备作为服务端,这样每一台设备都拥有一个server socket可以监听连接。之后,每一台设备都可以启动一个与其它设备的连接并变成客户端设备。另外,也可以明确一台设备作为服务端根据需要启动一个server socket,其它设备只要简单的建立连接。
a.根据地址获取设备:
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
b.获取设备soceket:
device.createRfcommSocketToServiceRecord(MY_UUID_SECURE);
c.取消扫描设备,连接soceket:端口:
mAdapter.cancelDiscovery();
mmSocket.connect();
 
3.数据信息交互ConnectedThread:
       首先,你需要为所有数据流的读写操作分派一个特定的线程。这是非常重要的,因为read(byte[])和write(byte[])方法都是会阻塞的方法。read(byte[])方法在从数据流中读取到数据之前会一直阻塞。write(byte[])方法不会经常阻塞,但是在远程设备没有及时调用read(byte[])方法并且中间缓冲区满的时候也会进行阻塞。因此,你的线程中的主循环应该专门用来从InputStream中读取数据。线程中再指定一个公共方法将数据写入到OutputStream中。
a.获取读写流
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
b.阻塞方法读取:
bytes = mmInStream.read(buffer);
c.发送消息
mmOutStream.write(buffer);
d.通过handler将文本添加到listview,成为新的消息
mConversationArrayAdapter.add("Me: " + writeMessage);

相关推荐
罗永浩开始做直播电商了?难度直播电商是下一个蓝海市场?
实体零售如何通过口碑促进销量增长?
企业服务SaaS,能否从竞争中脱颖而出?
补单平台软件开发功能有哪些?
携程去哪儿合并了!在线旅游走向如何?

特别申明:本站的主旨在于收集互联网运营相关的干货知识,给运营小伙伴提供便利。 网站所收集到的公开内容均来自于互联网或用户投稿,并不代表本站认同其观点, 也不对网站内容的真实性负责,如有侵权,请联系站长删除

您可以联系我们

彼此协助, 彼此信任

方能将美好的蓝图兑现