配对成功之后,就可以进行蓝牙连接了,蓝牙连接操作比较耗时,可以在一个线程中进行:
调用自己定义的
connect(listdevice.get(position));
同样传递的参数也是设备device
首先声明蓝牙套接字:
private BluetoothSocket mBluetoothSocket;
mBluetoothSocket = bluetoothDevice.createRfcommSocketToServiceRecord(BltContant.SPP_UUID);
BltContant.SPP_UUID是一个UUID常量,至于UUID是什么,大家可以自行百度,因为详细的文章已经很多了。
连接的时候要先判断蓝牙是否在扫描,如果在扫描就停止扫描,并且没有连接才进行连接,代码如下:
if (bluetoothadapter.isDiscovering()) {
bluetoothadapter.cancelDiscovery();
}
if (!mBluetoothSocket.isConnected()) {
mBluetoothSocket.connect();
}
比如我们让其连接成功后,跳转到消息通讯界面,界面中有edittext输入框并显示当前连接的设备名称如图所示:
在这里我们需要注意的是,当连接成功时,我们要让被连接的那部手机也自动跳转到聊天页面,所以我们要开启蓝牙服务端等待设备的连接,当设备连接时,自动跳转页面,蓝牙服务端代码如下:
/**
- 开启服务端
*/
public void startBluService() {
while (true) {
try {
if (getBluetoothServerSocket() == null){
Log.e(“在这里获取的为空”,“在这里获取的为空”);
}
bluetoothSocket = getBluetoothServerSocket().accept();
if (bluetoothSocket != null) {
APP.bluetoothSocket = bluetoothSocket;
EventBus.getDefault().post(new BluRxBean(SERVER_ACCEPT, bluetoothSocket.getRemoteDevice()));
//如果你的蓝牙设备只是一对一的连接,则执行以下代码
getBluetoothServerSocket().close();
//如果你的蓝牙设备是一对多的,则应该调用break;跳出循环
//break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务端运行也在一个线程中,一直处于等待状态直到有设备连接进来。
文末
我总结了一些Android核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。
以后的路也希望我们能一起走下去。(谢谢大家一直以来的支持)
部分资料一览:
- 330页PDF Android学习核心笔记(内含8大板块)
-
Android学习的系统对应视频
-
Android进阶的系统对应学习资料
- Android BAT大厂面试题(有解析)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!