Bluetooth蓝牙通信技术之旅

最近项目上需要蓝牙通信,由于以前没有接触过,所以折腾了一段时间,现在记录下蓝牙通信踩过的坑

 蓝牙是一种短距离无线通信技术,具有耗电量低、成本低、安全性、稳定性、易用性等优点

文献:https://blog.csdn.net/DJY1992/article/details/10144843

一:蓝牙的用法

 (一)蓝牙相关的权限

<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permissionandroid:name="android.permission.BLUETOOTH" />

 需要动态申请

(二)蓝牙相关介绍:低功耗蓝牙和经典蓝牙

(三)蓝牙相关的类:

1:BluetoothAdapter 蓝牙适配器,是所有蓝牙交互的入口。它可以调用startDiscovery()方法开启扫描附件的蓝牙设备,    cancleDiscovery()取消扫描,通过注册广播BroadcastReceive来接受扫描到的设备,主要有如下功能

(1)、开关蓝牙设备

(2)、扫描蓝牙设备

(3)、设置/获取蓝牙状态信息,例如:蓝牙状态值、蓝牙Name、蓝牙Mac地址等;

2:BluetoothDevice表示远程的蓝牙设备,并用此类通过BluetoothSocket类可以请求连接远程设备,或查询这台设备的信息如其名称、 地址、绑定状态

3:BluetoothServiceSocket    监听蓝牙连接的类 

     BluetoothSocket     蓝牙连接类

(四)Android蓝牙代码:

     (1):注册蓝牙接收广播

MyBroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_FOUND);
intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(receiver, intentFilter);

IntentFilter statusFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(mStatusReceive, statusFilter);

       (3):搜索蓝牙设备 
       BluetoothAdapter _bluetooth = BluetoothAdapter.getDefaultAdapter();
       bluetooth.startDiscovery();

       4). 创建BluetoothSocket客户端对象,进行连接
         BluetoothSocket socket = device.createRfcommSocketToServiceRecord(UUID.fromString(UUID号));
         socket.connect();

  ( 5)利用socket获取输入流
     BluetoothSocket socket = _serverSocket.accept();
     InputStream inputStream = socket.getInputStream();

二: 成熟的蓝牙框架

      implementation 'com.inuker.bluetooth:library:1.4.0',这个框架封装了蓝牙的扫描,连接,获取输入流的数据并读取整个过程

三: 分包

    由于蓝牙底层规定每个包的长度最多20byte 要传送的数据很多 所以设备分了好多包

 

 

    

           

    

 

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值