Android BLE开发的一些体会与总结

本文转载自:http://bbs.9tech.cn/topic-364762-1.html

很高兴也很无奈的做一个BLE的项目,高兴的是BLE是未来的一种趋势,有了这个经验以后可以混口饭吃,无奈的是身为一个Android developer android系统对ble的支持实在是太差了。在经历了三星的4.1,4.2 和最新的4.3之后生出了一种前所未有的迫切想转行IOS的想法,因为Android的ble真是太要命了。发了这么多牢骚,活还是要干的。这篇博客主要是为了记录一下开发情况以及过程,便于以后开发的时候查看,有兴趣的同学也可以瞅瞅。

 

首先是现在BLE的开发情况(截止到今天2013-11-08),现在Android ble开发一般分为四个版本:

 

1、三星的4.0 和 4.1系统 。这个版本的ble开发没有官方的支持,只是三星说我的某些手机支持ble。然后民间的一些大神们开发反编译三星的rom,找到了一系列的三星未开放的关于ble的方法。可以通过反射调用也可以通过导入一些反编译的jar包(基本没用就不上传了)来调用。但是经过1一个半月的折磨,终于发现连接太不稳定了,根本就不能拿来当产品。

 

2、MOTO放出的sdk。这个版本我没有接触过不知道怎么样,不多说只是提一下。

 

3、三星的4.2系统。大概是看到程序猿们太辛苦了(只是自己YY而已),三星放出了官方的SDK。但是这个sdk只支持三星自己的4.2的手机。三星虽然出货多但是android阵营的手机品牌实在是太多了三星的4.2又太少,加上当时有传闻google4.3很快就要发布,包含4.3的API。所以这个版本的ble我没做过,不过貌似做这个版本的人还不少。

 

4、万众期待的Android4.3。这个版本是现在最流行的,因为是google官方的所以只要是每个手机官方的4.3系统都可以用BLE的API。有的同学会刷4.3的系统也可以开发,这是因为rom里面包含了适合手机蓝牙的驱动。如果你的手机用了一款很偏的蓝牙芯片,而rom里面又没有这款芯片的驱动 ,那么恭喜你----4.3的API依然不好用。但是目前来看大多数手机还是没问题的像小米三星等。

 

介绍完了BLE的情况,就可以选择版本开发了。很多人想做通用版的,但是本人技术有限做不了通用版的。所以如果有哪位大神偶尔看到这篇blog而且已经做出通用版的了,请让我抱个大腿!

 

除去各个版本不谈,ble的开发还是比较简单的,但是还是要大体了解BT4.0关于Low Energy的一些协议(GATT)。一个BLE设备包含很多的服务(BLUETOOTHSERVICE),每个服务又包含很多的特征(characteristic),每个characteristic包含3个value。characteristic可以是可读写的、只读、只写、或者通知类型,还有一个什么类型我忘了- -!因为我从来没用到过。每个服务和characteristic都有一个UUID来唯一确定,所有想要开发BLE必须知道你想要用哪个服务的那个characteristic也就是要知道对应的UUID。很多人说我传的demo不好用,就是因为UUID都不换成自己设备的。

 

具体流程就是 scan(搜索) -->  connect(连接) --> discoverService(发现ble设备的服务)--> 遍历service里的characteristic -->读写characteristic。

 

由于每个版本的方法名称不一样实现逻辑不一样,就不给大家写代码了只发两个版本的demo,但是走的流程都是一样的。

 

三星的4.0 4.1demo看看就好 基本没人用了

SamsungDemo1

这个demo要改UUID

 

Android4.3demo 这个demo是4.3的可以研究一下,包含了读写以及通知

android4.3

 

关于android4.3 还有两点要说的:

1、最好做到从手机端发出去的每个命令之间最好sleep一段时间。

2、android端与设备保持连接可能要占用cpu,所以设备端中断最好不要太频繁

乱七八糟的先写到这,有时间好好整理一下。有什么进度也会更新过来。

转载于:https://www.cnblogs.com/phone1/p/3429079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android BLE开发是指在Android平台上使用蓝牙低功耗(BLE)技术进行应用程序开发BLE是一种省电的蓝牙通信技术,被广泛应用于智能穿戴设备、医疗设备、家居设备等领域。 Android平台提供了一套完整的API来支持BLE开发开发者可以使用这些API来搜索和连接BLE设备、发送和接收数据、读取和写入BLE特征值等等。 首先,开发者需要在AndroidManifest.xml文件中添加必要的权限,如蓝牙和蓝牙管理器权限。然后,在代码中实例化一个BluetoothManager对象来获取BluetoothAdapter(蓝牙适配器)实例。 接下来,开发者可以使用BluetoothAdapter的方法来搜索和连接BLE设备。搜索时,可以通过实现BluetoothAdapter.LeScanCallback接口来获取搜索到的设备信息。连接时,可以通过实现BluetoothGattCallback接口来处理与设备的通信。 一旦成功连接到BLE设备,开发者可以使用BluetoothGatt对象来发送和接收数据。通过BluetoothGatt对象,可以发现服务和特征值,读取和写入特征值等等操作。同时,开发者也可以监控设备发出的通知和指示。 在开发过程中,开发者还需要注意BLE通信的一些特点。例如,BLE是基于事件驱动的,所以开发者需要处理相关的回调方法;BLE设备的连接是一种异步过程,所以开发者需要在连接过程中处理各种状态;BLE通信是基于GATT协议,开发者需要熟悉相关的概念和操作等。 总而言之,Android BLE开发提供了一种在Android平台上与BLE设备进行通信的方式。通过使用AndroidBLE API,开发者可以方便地实现与BLE设备的连接和数据传输,为开发各种BLE应用程序提供了便利。 ### 回答2: Android BLE开发是指在Android设备上使用BLE(蓝牙低功耗)技术进行应用开发的过程。BLE是一种蓝牙技术,相比传统的蓝牙技术具有低功耗、简单、成本低等优势,适用于低功耗设备之间的通信。 在Android BLE开发中,首先需要通过在AndroidManifest.xml文件中声明蓝牙权限来获取蓝牙访问权限。然后,需要使用BluetoothAdapter类来获取蓝牙适配器,并检查设备是否支持BLE功能。 接下来,在开发中需要使用BluetoothGatt类来建立与远程BLE设备的连接和通信。使用BluetoothGattCallback类可以监听到连接状态的改变,以及接收到的数据。 在与BLE设备通信时,需要使用GATT(通用属性配置配置文件)协议来发送和接收数据。GATT协议通过将数据分为服务(Service)和特征(Characteristic)进行管理。服务代表一个特定的功能,而特征代表服务的具体属性。 在开发过程中,还可以使用BluetoothLeScanner类进行扫描周围的BLE设备。当发现设备后,可以通过BluetoothDevice类来获取设备的详细信息,如设备名称、MAC地址等。 总结来说,Android BLE开发需要了解蓝牙低功耗技术以及相关API的使用。通过建立连接、发送数据、接收数据等操作,可以实现与BLE设备的通信。开发人员需要注意处理连接状态、数据解析等问题,以确保应用的可靠性和稳定性。 ### 回答3: Android BLE开发是指基于Android系统的蓝牙低功耗(Bluetooth Low Energy,以下简称BLE)技术进行应用开发的过程。 在Android BLE开发中,首先需要进行设备扫描。通过使用与蓝牙相关的API,我们可以搜索附近的BLE设备并获取设备的相关信息,例如设备名称、信号强度、MAC地址等。扫描到设备后,可以使用设备的唯一标识符(UUID)进行连接。 连接设备后,可以进行数据通信。BLE通信主要通过GATT(通用属性配置文件)协议进行,该协议规定了BLE设备和Android应用之间的数据传输格式和规则。开发者可以通过GATT API访问BLE设备的服务和特征,读取和写入相应的属性值。 在数据通信过程中,也可以进行数据处理。开发者可以对从BLE设备接收到的数据进行解析、处理和展示。例如,对传感器采集的数据进行分析、计算和展示,或者根据接收到的数据进行特定的操作和控制。 在开发过程中,还需要注意一些注意事项。例如,保持正确的扫描周期,避免频繁的连接和断开操作,合理处理设备不可用的情况等等。此外,对于BLE通信的兼容性,开发者应考虑不同设备的支持情况,以确保应用在各种Android设备上的正常运行。 总结来说,Android BLE开发是在Android平台上利用BLE技术进行应用开发的过程。通过设备扫描、连接和数据通信,开发者可以实现与BLE设备之间的无线数据交互。通过合理的数据处理和注意事项的考虑,可以提高应用的稳定性和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值