zoukankan      html  css  js  c++  java
  • 【转载】Android基础——实现安卓蓝牙2.0模块的通信功能

    实现安卓蓝牙2.0模块的通信功能

    事先说明:

    安卓蓝牙2.0的开发和BLE4.0的开发完全是不一样的,不过很多设备都采用双模蓝牙,所以掌握2.0也是很有必要的

    安卓蓝牙需要手动申请定位权限,可参考我的博客点击打开链接

    蓝牙连接过程:

    1、查询用户是否开启蓝牙。

    2、搜索附近的可用的蓝牙。

    3、进行蓝牙配对。

    4、进行蓝牙连接。

    5、获取输入流和输出流。

    6、发送消息。

    蓝牙开发思路:

    蓝牙从连接到通信整个过程都是通过接收和发送广播进行的,下面是蓝牙进行特定操作时发出来的广播图,晒上我自己画的美图

    蓝牙广播内容:

    ACTION_STATE_CHANGED   当你蓝牙开启或者关闭的时候发送
    
    
    ACTION_FOUND  当你匹配到附近蓝牙设备时发送
    
    
    ACTION_DISCOVERY_STARTED  当你开始搜索附近蓝牙设备时发送
    ACTION_DISCOVERY_FINISHED  当你结束搜索附近蓝牙设备时发送
    ACTION_BOND_STATE_CHANGED  当你蓝牙设备匹配状态发生变化时发送


     

    实现需要的权限:

    由于安卓4.x以上的版本使用蓝牙,需要开启定位权限才能搜索到附近的蓝牙设备

    
    
    

    这里使用俩手机,实现蓝牙之间的通信,下面是Demo的效果图

     

    (一)服务端

     

    实现思路:

    1、拿到本地蓝牙设备。

    2、蓝牙之间的通讯需要一个唯一识别UUID来匹配正确的设备,使用UUID获取蓝牙的通讯Socket。

    3、开启获取数据的线程

    
    
    
    

    (二)客户端

    实现思路:

    1、检查是否开启蓝牙。

    2、注册一系列蓝牙的广播。

    3、由于蓝牙每经过一个阶段都会发送一个广播,根据广播来实现对应的方法。

    4、蓝牙配对->蓝牙连接->发送消息(UUID必须相同)奥斯卡

    其实客户端的操作就是上面那张思路图,根据里面的步骤进行就可以完成

    ① 检查蓝牙

    
    
    
    

    ② 注册广播

    
    
    
    

    ③ 搜索附近设备

    
    
    
    

    ④ 获取搜索到设备的通知

    
    
    
    

    ⑤ 进行连接

    
    
    
    

    ⑥ 读取数据

    
    
    
    

    ⑦ 发送数据

    
    
    
    
    蓝牙2.0比较简单,大家可以通过源码进行理解
    源码下载:工具是Android Studio2.1 (建议使用Import Project导入)
  • 相关阅读:
    centos 查看版本(转)
    防火墙内设置FileZilla Server注意事项
    mycat读写分离与主从切换
    用mycat做读写分离:基于 MySQL主从复制
    mysql处理海量数据时的一些优化查询速度方法
    CentOS下LVS DR模式负载均衡配置详解
    Linux清除arp缓存
    扫描局域网内所有主机和MAC地址的Shell脚本
    Windows+Python 3.6环境下安装PyQt4
    Python 爬虫-豆瓣读书
  • 原文地址:https://www.cnblogs.com/zhanglixina/p/9597633.html
Copyright © 2011-2022 走看看