蓝牙开发教程安卓

Android 蓝牙开发(三)-蓝牙的详细介绍

前面的两篇文章,主要是在 Android 官网关于蓝牙介绍的基础上加上自己的理解完成的主要针对的是 Android 开发中的一些 API 的使用
第一篇文章 Android 蓝牙开发(一) 主要是介绍了普通的蓝牙在 Android 开发中的运用
第二篇文章 Android 蓝牙开发(二) 主要是介绍了低功耗蓝牙的开发
这篇文章主要介绍的是蓝牙的历史和一些关于蓝牙的通用知识,还有广播包的知识要想彻底了解蓝牙开发,这些基础的知识也是需要的,就像网络协议一样,这些都是基础的内容我们的 API 的调用都是以这个为基础的,了解这些,开发过程中遇到问题,才可以知道什么怎么一回事

下篇文章主要讲的就是实际开发中的一些坑

蓝牙其实就是一种近距离无线通信技术

从下到上分别为:控制器(Controller)-->主机(host)-->应用(Application)

详细介绍各个层的含义:

BLE 应用可以分为两大类:基于非连接的和基于连接的

意思就是外设和周边设备不发生连接,主要靠扫描到的广播来获取信息发送广播的一方叫做 broadcaster 监听广播的一方叫做 oberver 在 GAP 层有对应的角色定义

网络拓扑图:

这种方式就是广播设备不断的向外发送广播(含有特定的信息),然后观察者接受到广播按照两者之间约定好的协议进行解析拿到有用的信息例如:iBeacon,通过这种设备我们可以实现室内定位

其实这些设备的角色可以即使广播者又是观察者接收到广播后作出了处理,然后又发送广播这样就形成了双向的网络,类似于因特网,这就是蓝牙 Mesh 组网

广播数据包格式:

每个广播数据包由 31 byte 组成分为有效数据和无效数据两部分

例子:

这里是扫描的数据包(转换成了 16 进制,两个代表一个字节),第一个字节是 02 表示后面的两个字节是数据部分,然后第二个字节是 01 表示了数据的类型后面一个字节就是真正的数据了这个广播数据单元就分析完了下面就是另一个数据单元了依次类推,关于数据类型的解释,官网有

这是数据类型对应的含义表

网络拓扑图:

一个中心设备可连接多个外设,但是一个外设只能连接一个中心(外设连接成功后就会停止对外广播,别人就发现不了它了)其中一个中心设备的连接外设的数量也是有限的

链接: https://mp.weixin.qq.com/s?__biz=MzU5NzA2NjQzMg==&mid=2247484141&idx=1&sn=fd7e71864189b3631ce529afeb4cf669&scene=21#wechat_redirect

安卓开发 蓝牙 后台Android 蓝牙编程的基本步骤:
1.获取蓝牙适配器BluetoothAdapter blueadapter=BluetoothAdapter.getDefaultAdapter();
如果BluetoothAdapter 为null,说明android手机没有蓝牙模块
判断蓝牙模块是否开启,blueadapter.isEnabled() true表示已经开启,false表示蓝牙并没启用
2.启动配置蓝牙可见模式,即进入可配对模式Intent in=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
in.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200);
startActivity(in); ,200就表示200秒
3.获取蓝牙适配器中已经配对的设备Set<BluetoothDevice> device=blueadapter.getBondedDevices();
4.还需要在androidManifest.xml中声明蓝牙的权限
<uses-permission android:name="android.permission.BLUETOOTH" />

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
接下来就是根据自己的需求对BluetoothAdapter 的操作了

(随机推荐阅读本站500篇优秀文章点击前往:500篇优秀随机文章)
来源:本文由易搜IT博客原创撰写,欢迎分享本文,转载请保留出处和链接!