BLE 和经典蓝牙Android编程说明

合集下载

AndroidBLE开发——Android手机与BLE终端通信初识

AndroidBLE开发——Android手机与BLE终端通信初识

AndroidBLE开发——Android⼿机与BLE终端通信初识设备:MX5⼿机⼀台,农药残留检测仪⼀台(BLE终端设备)⽬的:实现⼿机控制仪器,如发送打印指令,仪器能进⾏打印操作等关于如何打开蓝⽛,配置相关权限,搜索BLE设备等步骤⽹上有很多资料,这⾥就不多做作解释了,本⽂主要讲通信⽅⾯的内容。

需要注意的是搜索BLE设备的结果是异步返回的,在BluetoothAdapter.LeScanCallback这个回调中返回,并且搜索过程是⼀个⾮常耗电的过程,所以我们应该做好相应处理,例如可以让它搜索10s就停⽌搜索等。

在我们理解Android设备与BLE终端设备通信过程之前,我们需要来先了解⼏个类:BluetoothGatt:BluetoothGatt 是我们⽤的最多,也是我们最重要的⼀个类,为了尽可能通俗的理解,这⾥我们可以把它看成Android ⼿机与BLE终端设备建⽴通信的⼀个管道,只有有了这个管道,我们才有了通信的前提。

BluetoothGattService:蓝⽛设备的服务,在这⾥我们把BluetoothGattService⽐喻成班级。

⽽Bluetoothdevice我们把它⽐喻成学校,⼀个学校⾥⾯可以有很多班级,也就是说我们每台BLE终端设备拥有多个服务,班级(各个服务)之间通过UUID(唯⼀标识符)区别。

BluetoothGattCharacteristic:蓝⽛设备所拥有的特征,它是⼿机与BLE终端设备交换数据的关键,我们做的所有事情,⽬的就是为了得到它。

在这⾥我们把它⽐喻成学⽣,⼀个班级⾥⾯有很多个学⽣,也就是说我们每个服务下拥有多个特征,学⽣(各个特征)之间通过UUID(唯⼀标识符)区别。

总结:当我们想要⽤⼿机与BLE设备进⾏通信时,实际上也就相当于我们要去找⼀个学⽣交流,⾸先我们需要搭建⼀个管道,也就是我们需要先获取得到⼀个BluetoothGatt,其次我们需要知道这个学⽣在哪⼀个班级,学号是什么,这也就是我们所说的serviceUUID,和charUUID。

Android开发之蓝牙(Bluetooth)操作(一)--扫描已经配对的蓝牙设备

Android开发之蓝牙(Bluetooth)操作(一)--扫描已经配对的蓝牙设备

W hatever is worth doing is worth doing well.Never put off the work till tomorrow what you can put off today.A ndroid开发之蓝牙(Bluetooth)操作(一)--扫描已经配对的蓝牙设备分类: android 2012-08-14 16:41 1224人阅读 评论(10) 收藏举报androidbuttonnull通讯apiimport一. 什么是蓝牙(Bluetooth)?1.1 BuleTooth是目前使用最广泛的无线通信协议1.2 主要针对短距离设备通讯(10m)1.3 常用于连接耳机,鼠标和移动通讯设备等.二. 与蓝牙相关的API2.1 BluetoothAdapter:代表了本地的蓝牙适配器2.2 BluetoothDevice代表了一个远程的Bluetooth设备三. 扫描已经配对的蓝牙设备(1)注:必须部署在真实手机上,模拟器无法实现首先需要在AndroidManifest.xml 声明蓝牙权限<user-permission android:name="android.permission.BLUETOOTH" />配对蓝牙需要手动操作:1. 打开设置--> 无线网络 --> 蓝牙 勾选开启2. 打开蓝牙设置 扫描周围已经开启的蓝牙设备(可以与自己的笔记本电脑进行配对),点击进行配对电脑上会弹出提示窗口: 添加设备显示计算与设备之间的配对码,要求确认是否配对手机上也会显示类似的提示.四. 扫描已经配对的蓝牙设备(2)4.1 获得BluetoothAdapter对象4.2 判断当前移动设备中是否拥有蓝牙4.3 判断当前移动设备中蓝牙是否已经打开4.4 得到所有已经配对的蓝牙设备对象实现代码如下:MainActivity:import java.util.Iterator;import java.util.Set;import android.app.Activity;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button button = null;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);button = (Button)findViewById(R.id.buttonId);button.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {//获得BluetoothAdapter对象,该API是android 2.0开始支持的BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();//adapter不等于null,说明本机有蓝牙设备if(adapter != null){System.out.println("本机有蓝牙设备!");//如果蓝牙设备未开启if(!adapter.isEnabled()){Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);//请求开启蓝牙设备startActivity(intent);}//获得已配对的远程蓝牙设备的集合Set<BluetoothDevice> devices = adapter.getBondedDevices();if(devices.size()>0){for(Iterator<BluetoothDevice> it = devices.iterator();it.hasNext();){BluetoothDevice device = (BluetoothDevice)it.next();//打印出远程蓝牙设备的物理地址System.out.println(device.getAddress());}}else{System.out.println("还没有已配对的远程蓝牙设备!");}}else{System.out.println("本机没有蓝牙设备!");}}});}}。

[转载]蓝牙4-Android BLE开发官方文档翻译

[转载]蓝牙4-Android BLE开发官方文档翻译
作者 风雨byt (/users/fdba5151fd6e) 2016.03.02 15:07 写了24530字,被50人关注,获得了98个喜欢 (/users/fdba5151fd6e)
添加关注 (/sign_in)
[转载]蓝牙4.0——Android BLE开发官方文档翻译
字数3340 阅读1719 评论2 喜欢19
... } 如果你只想扫描指定类型的外围设备,可以改为调用startLeScan(UUID[], BluetoothAdapter.LeScanCallback)),需要提供 你的app支持的GATT services的UUID对象数组。 作为BLE扫描结果的接口,下面是BluetoothAdapter.LeScanCallback的实现。
发现BLE设备 为了发现BLE设备,使用startLeScan())方法。这个方法需要一个参数BluetoothAdapter.LeScanCallback。你必须实现它 的回调函数,那就是返回的扫描结果。因为扫描非常消耗电量,你应当遵守以下准则: 只要找到所需的设备,停止扫描。 不要在循环里扫描,并且对扫描设置时间限制。以前可用的设备可能已经移出范围,继续扫描消耗电池电量。 下面代码显示了如何开始和停止一个扫描: // 扫描和显示可以提供的蓝牙设备.
// 使用此检查确定BLE是否支持在设备上,然后你可以有选择性禁用BLE相关的功能 if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show(); finish(); }

android平台蓝牙编程

android平台蓝牙编程

android平台蓝⽛编程Android平台⽀持蓝⽛⽹络协议栈,实现蓝⽛设备之间数据的⽆线传输。

本⽂档描述了怎样利⽤android平台提供的蓝⽛API去实现蓝⽛设备之间的通信,蓝⽛设备之间的通信主要包括了四个步骤:设置蓝⽛设备、寻找局域⽹内可能或者匹配的设备、连接设备和设备之间的数据传输。

以下是建⽴蓝⽛连接的所需要的⼀些基本类:类:代表了⼀个本地的蓝⽛适配器。

他是所有蓝⽛交互的的⼊⼝点。

利⽤它你可以发现其他蓝⽛设备,查询绑定了的设备,使⽤已知的MAC地址实例化⼀个蓝⽛设备和建⽴⼀个(作为服务器端)来监听来⾃其他设备的连接。

类:代表了⼀个远端的蓝⽛设备,使⽤它请求远端蓝⽛设备连接或者获取远端蓝⽛设备的名称、地址、种类和绑定状态。

(其信息是封装在bluetoothsocket中)。

Bluetoothsocket类:代表了⼀个蓝⽛套接字的接⼝(类似于tcp中的套接字),他是应⽤程序通过输⼊、输出流与其他蓝⽛设备通信的连接点。

Blueboothserversocket类:代表打开服务连接来监听可能到来的连接请求(属于server端),为了连接两个蓝⽛设备必须有⼀个设备作为服务器打开⼀个服务套接字。

当远端设备发起连接连接请求的时候,并且已经连接到了的时候,Blueboothserversocket类将会返回⼀个bluetoothsocket。

Bluetoothclass类:描述了⼀个蓝⽛设备的⼀般特点和能⼒。

他的只读属性集定义了设备的主、次设备类和⼀些相关服务。

然⽽,他并没有准确的描述所有该设备所⽀持的蓝⽛⽂件和服务,⽽是作为对设备种类来说的⼀个⼩⼩暗⽰。

下⾯说说具体的编程实现: 必须确定你的设备⽀持蓝⽛,并保证他可以⽤。

如果你的设备⽀持蓝⽛,将它使能。

当然,有两种⽅法,⼀种是在你的系统设置⾥开启蓝⽛,另外⼀中是在你的应⽤程序⾥启动蓝⽛功能,第⼀种⽅法就不讲了,具体讲⼀个第⼆种⽅法:⾸先通过调⽤静态⽅法获取蓝⽛适配器bluetoothadapter,以后你就可以使⽤该对象了。

Android

Android

Android 蓝⽛BLE开发完全指南⽬录介绍连接模式GATT协议使⽤过程扫描连接设备连接发现服务数据传输其他断开连接参考总结介绍1.BLE 是 Bluetooth Low Energy 的缩写,意思为低功耗蓝⽛。

由蓝⽛技术联盟(Bluetooth SIG)设计的⽆线通讯技术,主要⽤于医疗,健⾝,安全和家庭娱乐⾏业。

与传统蓝⽛相⽐,蓝⽛低功耗旨在⼤幅降低功耗和成本,同时也能够达到相同的通讯效果。

⽀持多个平台,包括 IOS,Android,Windows Phone 和 BlackBerry 以及 macOS,Linux,Windows 8 和 Windows 10 在内的移动操作系统本⾝⽀持蓝⽛低功耗。

蓝⽛ SIG 预测,到 2018 年,超过 90%的蓝⽛智能⼿机将⽀持蓝⽛低功耗。

在安卓平台,在 Android 4.3 (API level 18) 以后引进来的,通过这些 API 可以扫描蓝⽛设备、连接设备,查询 services、读写设备的characteristics(属性特征),然后通过属性进⾏数据传输。

特点:低功耗,使⽤ BLE 与周围设备进⾏通讯时,其峰值功耗为传统蓝⽛的⼀半传输距离提升到 100 ⽶低延时,最短可在3 ms内完成连接并开始进⾏数据传输缺点:传输数据量较⼩,最⼤ 512 个字节,超过 20 个字节需要分包处理应⽤领域:主要⽤于智能硬件,像健康护理、运动和健⾝、设备电源管理等连接模式对于BLE单设备来讲常见的蓝⽛模块的⼯作模有四种:主设备模式从设备模式⼴播模式Mesh组⽹模式主设备模式可以与⼀个从设备进⾏连接。

在此模式下可以对周围设备进⾏搜索并选择需要连接的从设备进⾏连接。

同时可以设置默认连接从设备的MAC地址,这样模块上电之后就可以查找此模块并进⾏连接。

从设备模式BLE⽀持从设备模式,在此模式下完全符合BLE4.1协议,⽤户可以根据协议⾃⼰开发APP。

此模式下包含⼀个串⼝收发的Service,⽤户可以通过UUID找到它,⾥⾯有两个通道,分别是读和写。

Android之Bluetooth(蓝牙)编程实现

Android之Bluetooth(蓝牙)编程实现
// 布局控件 private TextView mTitle; private EditText mInputEditText; private EditText mOutEditText; private EditText mOutEditText2; private Button mSendButton; private CheckBox HEXCheckBox; private Button breakButton; private CheckBox checkBox_sixteen; /*private ImageView ImageLogoView;*/
//HEXCheckBox = (CheckBox) findViewById(R.id.radioMale); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/ breakButton = (Button) findViewById(R.id.button_break); // 得到当地的蓝牙适配器 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/ // 初始化 CheckBox //checkBox_sixteen = (CheckBox) findViewById(R.id.checkBox_sixteen); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/

ble5.0编程实例 -回复

ble5.0编程实例 -回复

ble5.0编程实例-回复BLE 5.0编程实例:使用BLE 5.0技术实现智能家居控制系统在本篇文章中,我们将介绍如何使用BLE 5.0技术来构建一个智能家居控制系统。

我们将一步一步教你如何建立一个连接、发送和接收数据,并实现对家居设备的控制。

让我们开始吧!第一步:建立连接在BLE 5.0编程实例中,首先我们需要建立蓝牙连接。

在这个例子中,我们将以智能手机作为中央设备,家居设备作为外设,通过蓝牙连接进行通信。

1. 确保你的智能手机和家居设备都支持BLE 5.0技术。

2. 在你的智能手机上下载一个蓝牙调试工具,例如LightBlue或nRF Connect。

3. 在家居设备上实现GATT服务和特征,以便手机可以与设备进行通信。

确保为每个服务和特征设置正确的UUID。

4. 在智能手机应用程序中实现扫描和连接功能。

扫描之后,通过设备的UUID进行连接。

5. 一旦连接建立,你已经完成了第一步!你现在可以开始发送和接收数据。

第二步:发送和接收数据在建立连接之后,我们将向家居设备发送控制指令,并接收来自设备的数据。

本实例中,我们将模拟一个灯光控制系统。

1. 在家居设备中实现一个灯光服务。

这个服务应该包含两个特征:一个用于控制灯光状态(开或关),另一个用于调节亮度。

2. 在智能手机应用程序中实现控制页面,包括一个按钮用于开关灯光,以及一个滑块用于调节亮度。

3. 当用户在应用程序中进行操作时,我们将通过蓝牙连接向家居设备发送相应的数据。

我们可以使用GATT特征来发送指令并调整亮度值。

4. 家居设备接收到指令后,会相应地开关灯光或者调节亮度。

反过来,当设备的状态发生变化时,它可以通过蓝牙连接将更新的状态数据发送回智能手机。

第三步:实现家居设备控制逻辑在我们的智能家居控制系统中,家居设备是外设,它需要根据接收到的指令来控制灯光的开关和亮度调节。

在这一步中,我们将在家居设备上实现这个控制逻辑。

1. 在设备的主控芯片上实现蓝牙通信功能。

BLECC41A与手机操作指南v1.0

BLECC41A与手机操作指南v1.0

BL E-CC41-A蓝牙模块操作指南v1.0一.概述B LE-CC41-A 蓝牙模块是深圳市博陆科电子科技有限公司专为智能无线数据传输而打造,采用T I 公司C C 2541芯片,遵循4.0 L E 蓝牙规范。

本模块支持UART,SPI接口,并支持数据透传和直驱,具有成本低、体积小、功耗低、收发灵敏性高等优点,只需配备少许的外围元件就能实现其强大功能。

二.使用条件1、支持硬件蓝牙版本为 4.0 的设备。

例如:iPhone 4S及以上、 iPad 3及以上、iPod 5及以上、LG nexus 4、三星 note 3、三星 i9300等。

2、安卓手机需要系统升级至 4.3 以上才支持。

三.苹果设备详细操作(图片截图来自:iPhone 5) 3、需要安装 APP 才能够进行使用和测试。

① 在 AppStore下载 LightBlue 软件② 如果蓝牙关闭时,会提示打开蓝牙。

系统:i os 7.1.1 4、BLE-CC41-A 模块供电,串口 TX RX GND 与电脑 COM1 口连接(需转换)。

③ 下拉自动搜索,搜索到名称为“BOLUTEK”。

④ 点击“BOLUTEK”,进入下页面:⑤ 点击“0xFFE0”进入以下页面:⑥ 点击“0xFFE 1”进入以下页面:⑥ 点击“Start Notify ”。

然后用串口助手发送数据“1234567890”,手机端就会显示“1234567890”。

⑥ 点击“Write ”。

出现如下界面,填入数据ASSCII:“1234567890”,串口端出现数据:“1234567890”。

四.安卓(4.3以上)设备详细操作:(图片截图来自:LG nexus 4)① 安装Bluetooth Le Gatt 软件(部分手机不兼容)②打开软件“BluetoothLeGatt”,设备蓝牙关闭时会提示打开蓝牙。

③ 点击“SCAN”搜索到“BOLUTEK”: ④点击“BOLUTEK”进入以下页面:系统:i os 4.4.3⑤ 点击“0000ffe0-....”进入以下页面:⑥ 点击“0000ffe1-....”进入以下页面:⑦字符串位置填入:“1234567890”,点击“确定”,串口助手接收到:“1234567890” ,如下图:⑧串口助手填入:“1234567890”,点击“手动发送”, 安卓设备端收到:“1234567890” ,如下图:。

Android蓝牙开发经典笔记,程序和说明

Android蓝牙开发经典笔记,程序和说明

Bluetooth Low Energy——蓝牙低功耗Android4.3(API级别18)引入内置平台支持BLE的central角色,同时提供API和app应用程序用来发现设备,查询服务,和读/写characteristics。

与传统蓝牙(ClassicBluetooth)不同,蓝牙低功耗(BLE)的目的是提供更显著的低功耗。

这使得Android 应用程序可以和具有低功耗的要求BLE设备,如接近传感器,心脏速率监视器,健身设备等进行通信。

关键术语和概念下面是关键BLE术语和概念的总结:通用属性规范(GATT)—GATTprofile是一个通用规范用于在BLE链路发送和接收被称为―属性(attributes)‖的数据片。

目前所有的低功耗应用profile都是基于GATT。

蓝牙SIG定义了许多profile用于低功耗设备。

Profile(配置文件)是一个规范,规范了设备如何工作在一个特定的应用场景。

注意:一个设备可以实现多个profile。

例如,一个设备可以包含一个心脏监测仪和电池电平检测器。

属性协议(ATT )—GATT是建立在属性协议(ATT )的顶层,通常也被称为GATT/ ATT 。

ATT进行了优化用于在BLE设备上运行。

为此,它采用尽可能少的字节越好。

每个attribute 属性被UUID(通用唯一标识符)唯一标识,UUID是标准128-bit格式的ID用来唯一标识信息。

attributes 被ATT 格式化characteristics和services形式进行传送。

特征(Characteristics)—一个characteristics包含一个单独的value值和0 –n个用来描述characteristic 值(value)的descriptors。

一个characteristics可以被认为是一种类型的,类似于一个类。

描述符(descriptor)—descriptor是被定义的attributes,用来描述一个characteristic的值。

Android蓝牙开发

Android蓝牙开发

Android蓝⽛开发Android 蓝⽛开发我们在进⾏蓝⽛开发时⾸先要了解低功耗蓝⽛、经典蓝⽛、单模蓝⽛、双模蓝⽛之间的关系。

单模蓝⽛:⽀持低功耗蓝⽛双模蓝⽛:⽀持低功耗蓝⽛和经典蓝⽛经典蓝⽛:⽀持经典蓝⽛蓝⽛开发⼤致分为这⼏步前⾯需要定位权限和蓝⽛权限的⽀持发现设备:经典蓝⽛发现设备apiBluetoothAdapter.startDiscovery听说可以同时发现经典蓝⽛和低功耗蓝⽛(BLE)。

但我这没单模的蓝⽛,所以没办法测试。

因为startDiscovery返回的是⼀个是否开始扫描设备,我们要获取蓝⽛设备的信息需要注册⼀个 BroadcastReceiver 针对 ACTION_FOUND Intent 会携带额外的字段 EXTRA_DEVICE 和 EXTRA_CLASS。

这两者分别包含 BluetoothDevice 和 BluetoothClass。

var filter =IntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(mReceiver,filter);val mReceiver = object :BroadcastReceiver(){override fun onReceive(context: Context?, intent: Intent?) {var action = intent?.actionif(BluetoothDevice.ACTION_FOUND == action){var device = intent?.getParcelableExtra<BluetoothDevice>(BluetoothDevice.EXTRA_DEVICE)}}}override fun onDestroy() {super.onDestroy()unregisterReceiver(mReceiver)}Ble发现设备apiBluetoothAdapter.getBluetoothLeScanner()BluetoothLeScanner.startScan(ScanCallback callback)//扫描会在屏幕关闭时停⽌以节省电量。

android开发环境设置和BLE驱动开发说明

android开发环境设置和BLE驱动开发说明

• 四、通过扫描得到的地址寻找设备,然后 调用设备的connectGatt与设备进行连接, 代码如下: • Final BluetoothDevice device=mBluetooth.getRemoteDevice(address ); • Device.connectGatt(this,false,mGattCallback); • mGattCallback的类型为 BluetoothGattCallback,该类型处理GATT的 各种事件,如设备连接完毕或断开
BLE代码说明
• 一、判断系统是否支持BLE,代码如下: • if(!getPackageManager().hasSystemFeature(Pac kageManager.FEATURE_BLUETOOTH_LE)) • { • Toast.makeText(this, R.string.ble_not_supported, • Toast.LENGTH_SHORT).show(); • finish(); • }
• 四、调用蓝牙适配器的扫描设备函数,寻找设备。 • mBluetoothAdapter.startLeScan(mLeScanCallback); • // Device scan callback. • private BluetoothAdapter.LeScanCallback mLeScanCallback = • new BluetoothAdapter.LeScanCallback() { • @Override • public void onLeScan(final BluetoothDevice device, int rssi, byte[]scanRecord) { • runOnUiThread(new Runnable() { • @Override • public void run() { • mLeDeviceListAdapter.addDevice(device); • mLeDeviceListAdapter.notifyDataSetChanged(); • } • }); • } • }; • 寻找设备一段时间后,记得调用 mBluetoothAdapter.stopLeScan(mLeScanCallback);

android蓝牙ble连接原理

android蓝牙ble连接原理

android蓝牙ble连接原理在Android开发中,蓝牙低功耗(BLE)连接是一种用于实现设备之间无线通信的技术。

它比传统蓝牙更省电,适用于物联网应用和其他需要长时间低功耗连接的场景。

下面将介绍Android蓝牙BLE连接的原理。

首先,需要了解BLE连接的两个主要角色:中央设备(Central)和外围设备(Peripheral)。

中央设备通常是Android手机或平板电脑,而外围设备可以是各种蓝牙BLE设备,如传感器、智能手表等。

BLE连接的过程是通过GATT(通用属性配置文件)来实现的。

GATT定义了中央设备和外围设备之间的数据通信协议。

在BLE连接中,GATT分为两个主要部分:服务器和客户端。

外围设备充当服务器的角色,它包含多个服务(Service),每个服务可以有多个特征(Characteristic)。

服务代表外围设备的功能,特征则包含了具体的数据。

每个服务和特征都有一个唯一的标识符,称为UUID,用于唯一标识它们。

中央设备作为客户端,负责与外围设备进行通信。

在建立BLE连接之前,中央设备需要扫描周围的外围设备。

通过扫描可以获取外围设备的UUID,以便中央设备连接到指定的外围设备。

BLE连接的建立是通过以下步骤完成的:1. 扫描外围设备:中央设备通过蓝牙适配器开始扫描周围的外围设备。

扫描时,可以设置过滤条件,以匹配特定的外围设备UUID。

2. 建立连接:当中央设备发现目标外围设备后,可以通过调用`BluetoothDevice.connectGatt()`方法来建立连接。

3. 发现服务:建立连接后,中央设备需要发现外围设备所支持的服务。

通过调用`BluetoothGatt.discoverServices()`方法可以发现外围设备的所有服务。

4. 获取特征:一旦服务发现完成,中央设备可以通过`BluetoothGatt.getService()`方法获取指定UUID的服务。

之后,通过调用`BluetoothGattCharacteristic.getCharacteristic()`方法获取特定UUID的特征。

rxandroidble 用法

rxandroidble 用法

RxAndroidBle是一种使用RxJava实现的蓝牙低能耗(BLE)库,用于Android开发。

以下是一些基本用法:1.获取RxBleClient实例:使用BleClient.getRxBleClient()方法获取RxBleClient实例。

2.扫描BLE设备:使用RxBleClient.scan()方法开始扫描附近的BLE设备。

你需要提供ScanCallback回调来处理扫描结果。

3.连接BLE设备:使用RxBleClient.connect()方法连接到扫描到的BLE设备。

你需要提供ConnectionCallback回调来处理连接结果和数据交互。

4.读取BLE设备特征值:使用RxBleDevice.readCharacteristic()方法读取设备的特征值。

你需要提供ReadCallback回调来处理读取结果。

5.写入BLE设备特征值:使用RxBleDevice.writeCharacteristic()方法向设备的特征值写入数据。

你需要提供WriteCallback回调来处理写入结果。

6.订阅BLE设备通知:使用RxBleDevice.subscribe()方法订阅设备的通知。

你需要提供NotificationCallback回调来处理接收到的通知数据。

7.断开BLE设备连接:使用RxBleDevice.disconnect()方法断开与设备的连接。

请注意,在使用RxAndroidBle库时,你需要处理线程和异步操作。

RxJava提供了强大的异步处理能力,你可以使用它来管理线程和回调。

这只是RxAndroidBle库的基本用法示例,你可以根据具体需求进行更深入的使用和定制化开发。

请参考官方文档和示例代码以获取更多详细信息和最佳实践。

ble简介和androidble编程

ble简介和androidble编程

ble简介和androidble编程一.BLE和BT区别其实我知道许多程序员不太喜欢阅读除了代码以外的文档,因为有时这些过于冗长的文档对编程并没有更多的好处,有了协议,接口,demo差不多很多人就能写出很好质量的代码了。

但其实更深入的编程是少了阅读的,阅读文档可以解决很多编程中遇到的困难,比如在大数据大流量情况下,很多正常的程序会表现出不可靠的一面,这已经不是够编程能解决的了,硬件的配置,服务器带宽,使用的数据库,调用的接口都有可能是瓶颈。

比如BLE,同样的蓝牙,但却有着本质区别,一个表现就是不是所有蓝牙设备都支持BLE,编程如果不考虑这个问题,程序出错就会迷茫。

再比如连接到BLE或者蓝牙上的设备是有数量限制的,如果不知道这个限制,在连接不上时,也会六神无主。

BLE在智家居中和移动设备中的应用方兴未艾,做深入的研究推广到更多的应用上,还是有意义的。

1蓝牙的历史:蓝牙的创始公司是爱立信。

1994年爱立信开始对小范围无线通信技术进行研发,在1997年,爱立信的研究激发了其他公司的浓厚兴趣,于是1998年2月,一些跨国大公司包括诺基亚、苹果、三星组成的一个特殊兴趣小组(SIG),他们共同的目标是建立一个全球性的小范围无线通信技术,该项技术就是蓝牙。

2.BLE 是Bluetooth LowEnergy的缩写,又叫蓝牙4.0,区别于蓝牙3.0和之前的技术。

BLE前身是NOKIA开发的Wibree技术,主要用于实现移动智能终端与周边配件之间的持续连接,是功耗极低的短距离无线通信技术,并且有效传输距离被提升到了100米以上,同时只需要一颗纽扣电池就可以工作数年之久。

3. BLE是在蓝牙技术的基础上发展起来的,既同于蓝牙,又区别于传统蓝牙。

BLE设备分单模和双模两种,双模简称BR,商标为Bluetooth Smart Ready,单模简称BLE或者LE,商标为Bluetooth Smart。

Android是在4.3后才支持BLE,这可以解释不是所有蓝牙手机都支持BLE,而且支持BLE的蓝牙手机一般是双模的。

android ble createbond用法 概述及解释说明

android ble createbond用法 概述及解释说明

android ble createbond用法概述及解释说明1. 引言1.1 概述本文将详细介绍Android BLE(蓝牙低功耗)中的createBond用法,并对其进行解释和说明。

蓝牙低功耗技术已经广泛应用于智能设备、无线音频设备以及其他物联网场景。

而createBond方法则是在Android平台上建立蓝牙设备绑定的一种关键方法。

1.2 文章结构文章主要分为四个部分:引言、Android BLE createBond用法、解释说明和结论。

首先,引言部分将对文章的背景和重点进行概述,并简要介绍文章结构。

然后,在Android BLE createBond用法部分,我们将详细讨论createBond方法的定义、作用以及使用步骤。

接下来,在解释说明部分,我们将探讨createBond 方法的参数和返回值,同时介绍与蓝牙配对相关的流程,并提供可能遇到的问题及相应的解决方案。

最后,在结论部分,我们会总结createBond方法的使用场景和优劣势,并展望其在未来发展中可能扮演的角色。

1.3 目的本文旨在帮助读者深入了解并掌握Android BLE中createBond方法的使用方式。

通过全面解析该方法,读者可以更好地理解其在蓝牙设备绑定过程中的作用和意义,并在实际开发中更加灵活地应用它。

同时,通过对createBond方法涉及的技术和流程进行解释和说明,读者还可以对蓝牙低功耗技术有更深入的理解,并为未来相关项目的设计和开发提供指导和参考。

总之,本文旨在为Android BLE开发者和研究人员提供一个全面而清晰的createBond用法指南。

2. Android BLE createBond用法2.1 什么是createBond方法createBond方法是Android BLE中的一个函数,用于建立与蓝牙设备的配对关系。

在Android开发中,BLE(Bluetooth Low Energy)是一种低功耗蓝牙技术,用于在设备之间进行短距离通信。

Android蓝牙4.0 ble代码 直接从Eclipse粘贴的代码

Android蓝牙4.0 ble代码 直接从Eclipse粘贴的代码

程序结合了网上的开源程序。

com.example.android.bluetoothlegatt包中的代码有修改,res文件夹和AndroidManifest.xml中的代码没有修改.下面直接上代码,并把修改的地方用红色指出来。

/** Copyright (C) 2013 The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** /licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package com.example.android.bluetoothlegatt;import android.app.Activity;import android.app.ListActivity;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.bluetooth.BluetoothManager;import android.content.Context;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Bundle;import android.os.Handler;import youtInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;/*** Activity for scanning and displaying available Bluetooth LE devices.*/public class DeviceScanActivity extends ListActivity {private LeDeviceListAdapter mLeDeviceListAdapter;//适配器adapter,存放搜寻到的设备信息private BluetoothAdapter mBluetoothAdapter;private boolean mScanning;private Handler mHandler;private static final int REQUEST_ENABLE_BT = 1;// 10秒后停止查找搜索.private static final long SCAN_PERIOD = 10000;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getActionBar().setTitle(R.string.title_devices);//BLE Device ScanmHandler = new Handler();// 检查当前手机是否支持ble 蓝牙,如果不支持退出程序if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();finish();}// 初始化Bluetooth adapter, 通过蓝牙管理器得到一个参考蓝牙适配器//(API必须在以上android4.3或以上和版本)final BluetoothManager bluetoothManager =(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);mBluetoothAdapter = bluetoothManager.getAdapter();// 检查设备上是否支持蓝牙if (mBluetoothAdapter == null) {Toast.makeText(this, R.string.error_bluetooth_not_supported, Toast.LENGTH_SHORT).show();finish();return;}}//选项菜单(optionsMenu)。

android蓝牙bleapp开发(二)--关键概念,连接参数,连接请求

android蓝牙bleapp开发(二)--关键概念,连接参数,连接请求

android蓝牙bleapp开发(二)--关键概念,连接参数,连接请求Android蓝牙ble app开发中经常会遇到很多问题,这个时候就需要用到抓包软件进行分析,单单从现象上很难鉴定是设备固件端的问题,还是我们自己app写的不对的问题。

这一点是做android的是比较纠结的,因为固件端经常是和iOS通信没毛问题,android问题偶尔,这个偶尔很经常出现。

(固件基于cc2540 2541)这篇记录的内容是android app开发时遇到的,但是本身的内容却是ble协议的一些内容,ios 也是一样的下一篇会记录下抓包过程与分析。

1、知识储备:要分析ble蓝牙包需要懂一些ble蓝牙协议栈的内容,和一些核心概念。

最关键的几个概念Connection Events:连接事件这个概念比较抽象,之前看了很多解释不明白,ti 宣讲会上讲ppt 讲的很清楚简单的说就是通信建立在连接事件上,每次连接事件时才是真正的通信事件,其余时间时休眠的(低功耗)对应在程序上就是如果连接间隔的时间设置的大于通信间隔,就会出现数据通信不流畅,没有接收到周期性数据,数据一卡顿一卡顿时而没有时而很多Supervision Timeout:超时时间(在这个时间内没有接收到响应就会断开)Slave Latency:这个不好翻译,看图最实在了理解成可以忽略的空白响应数吧Connection Interval:连接间隔简单的理解成连两个连接事件之间的间隔时间呗另外还有:Advertisement InterVals 广播间隔,和名字一个意思2、关于更新连接参数ConnectionParameter Update Request有阅读蓝牙协议栈和一些材料,简单的说就是主机决定连接参数的值( connection interval, slave latency, timeout),从机可以请求更新这些参数,主机决定是不是接受,接受的值是多少。

android蓝牙开发程序说明

android蓝牙开发程序说明

GHOSTYU谷雨BluetoothLeGatt说明Android ble程序2014/1/9[在此处键入文档的摘要。

摘要通常是对文档内容的简短总结。

在此处键入文档的摘要。

摘要通常是对文档内容的简短总结。

]前言BluetoothLeGatt是在Android提供的api19(android4.4) Sample基础上修改而来,原来的demo只有read,我们把read改为write,这样可以使用4.3以上的android手机来想开发板发送16进制数据或者字符串数据。

BluetoothLeGatt程序我们仍然在更新,未来的名字可能叫做HiGatt,所以我们现在提供的apk安装包叫做HiGatt.apk,由于源码中的名称未改,所以安装后的app名仍然为BluetoothLeGattBluetoothLeGatt使用Android Stuido开发,需要api18、19支持。

该程序只能运行在支持蓝牙4.0的Android4.3以上的手机上使用。

操作说明使用源码编译到手机或者直接安装我们提供的apk,然后运行HiGatt程序,如果系统为打开蓝牙,会提示你打开蓝牙功能。

为了演示,需要准备一个SmartRF开发板,并且烧写串口透传中的从机程序(可以接收多个字节的数据)。

上电运行该程序。

如下左图,HiGatt扫描到从机。

单击搜索到的从机,会执行连接操作,连接之后,程序会自动去find services,并且会罗列出全部的service,如下右图。

单击uuid为000fff0-0000-1000-8000-00805f9b34fb的Service,程序会find characteristics,并且列出全部的characteristic,可能大家对这个uuid会感觉很陌生,其实他就是我们平时最常见的simpleprofile中的自定义的service 0xFFF0,只不过一个是16位的uuid,一个是128位的uuid,16为bit和128位转换,在SIG的core_v4.0文档中有说明,两种办法,第一种是通过一个复杂的计算公式,第二种是简单的填充,就像2中把0xfff0,填充到000xxxx-0000-1000-8000-00805f9b34fb中的xxxx0xfff0的所有characteristics如下左图,点击uuid为0xfff1的characteristic,会弹出Write Characteristic的对话框。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1
宝安桃花源
1 蓝牙简介
蓝牙这个名称来自于第十世纪的一位丹麦国王哈拉尔蓝牙王, Blatand 在英文里的意思
图 1 哈拉尔蓝牙王
可以被解释为 Bluetooth( 蓝牙 )因为国王喜欢吃蓝莓,牙龈每天都是蓝色的所以叫蓝牙。 在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。行业组织人员, 在经过一夜关于欧洲历史和未来无线技术发展的讨论后, 有些人认为用 Blatand 国王的名字 命名再合适不过了。Blatand 国王将挪威,瑞典和丹麦统一起来;他的口齿伶俐,善于交际, 就如同这项即将面世的技术, 技术将被定义为允许不同工业领域之间的协调工作, 保持着各 个系统领域之间的良好交流,例如计算机,手机和汽车行业之间的工作。名字于是就这么定 下来了。 蓝牙的创始人是爱立信公司,爱立信早在 1994 年就已进行研发。1997 年,爱立信与 其他设备生产商联系,并激发了他们对该项技术的浓厚兴趣。 1998 年 2 月,跨国大公司,
Bluetooth(3.0/4.0) Using
Android 手机 Bluetooth 编程
邹继强 2014.06.24
本文介绍蓝牙 3.0、2.0 及蓝牙 4.0 版本 Android 编程应用方法
目录 1 蓝牙简介....................................................................................................................................... 2 2 蓝牙的工作原理 .......................................................................................................................... 3 2.1 蓝牙通信的主从关系 ....................................................................................................... 3 2.2 蓝牙的呼叫过程 ............................................................................................................... 3 2.3 蓝牙一对一的串口数据传输应用 ................................................................................... 3 3 蓝牙 Android 编程应用............................................................................................................... 3 3.1 蓝牙 3.0 及以下版本编程................................................................................................ 3 3.1.1 认识一下 UUID ...................................................................................................... 3 3.1.2 版本 3.0 蓝牙 Android 编程原理......................................................................... 4 3.2 蓝牙 4.0 编程.................................................................................................................. 12 3.2.1 概念 ...................................................................................................................... 12 3.2.2 编程 API –Level18-19 ....................................................................................... 13
2.3 蓝牙一对一的串口数据传输应用
蓝牙数据传输应用中,一对一串口数据通讯是最常见的应用之一,蓝牙设备在出厂前 即提前设好两个蓝牙设备之间的配对信息,主端预存有从端设备的 PIN 码、地址等,两端 设备加电即自动建链,透明串口传输,无需外围电路干预。一对一应用中从端设备可以设为 两种类型,一是静默状态,即只能与指定的主端通信,不被别的蓝牙设备查找;二是开发状 态,既可被指定主端查找,也可以被别的蓝牙设备查找建链。
3 蓝牙 Android 编程应用
参考文献:.br/artigos/bluetooth_gatt.php 3
3.1 蓝牙 3.0 及以下版本编程
3.1.1 认识一下 UUID
UUID 含义是通用唯一识别码 (Universally Unique Identifier), 这 是一个软件建构的标 准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算
2.2 蓝牙的呼叫过程
蓝牙主端设备发起呼叫,首先是查找,找出周围处于可被查找的蓝牙设备。主端设备 找到从端蓝牙设备后,与从端蓝牙设备进行配对,此时需要输入从端设备的 PIN 码,也有 设备不需要输入 PIN 码。配对完成后,从端蓝牙设备会记录主端设备的信任信息,此时主 端即可向从端设备发起呼叫,已配对的设备在下次呼叫时,不再需要重新配对。已配对的设 备,做为从端的蓝牙耳机也可以发起建链请求,但做数据通讯的蓝牙模块一般不发起呼叫。 链路建立成功后,主从两端之间即可进行双向的数据或语音通讯。在通信状态下,主端和从 端设备都可以发起断链,断开蓝牙链路。
4
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, 1);
宝安桃花源
} C 搜索已配对设备,如果有则添加到配对列表中 Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); // If there are paired devices if (pairedDevices.size() > 0) { // Loop through paired devices for (BluetoothDevice device : pairedDevices) { mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
3.1.2 版本 3.0 蓝牙 Android 编程原理
使用蓝牙功能 ,首先要获得权限,蓝牙权限设置:
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> A 建立并获得本地蓝牙适配器:
2
图 2 蓝牙标志的来历
包括诺基亚、苹果、三星组成的一个特殊兴趣小组(SIG),他们共同的目标是建立一 个全球性的小范围无线通信技术,即蓝牙。
宝安桃花源
而蓝牙这个标志的设计:它取自 Harald Bluetooth 名字中的「H」和「B」两个字母, ogo(见图)。
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); B 如果本地有蓝牙设备,者开启。
if (mBluetoothAdapter != null) { //判断是否有蓝牙
if (!mBluetoothAdapter.isEnabled()) {//判断蓝牙 是否开启,未开启则请用 户开启
宝安桃花源
环境 (Distributed Computing Environment, DCE) 领域的一部分。 在蓝牙 3.0 及一下版本中,UUID 被用于唯一标识一个服务,比如文件传输服务,串口 服务、打印机服务等,如下: #蓝牙串口服务 SerialPortServiceClass_UUID = '{00001101-0000-1000-8000-00805F9B34FB}' LANAccessUsingPPPServiceClass_UUID = '{00001102-0000-1000-8000-00805F9B34FB}' #拨号网络服务 DialupNetworkingServiceClass_UUID = '{00001103-0000-1000-8000-00805F9B34FB}' #信息同步服务 IrMCSyncServiceClass_UUID = '{00001104-0000-1000-8000-00805F9B34FB}' SDP_OBEXObjectPushServiceClass_UUID = '{00001105-0000-1000-8000-00805F9B34FB} ' #文件传输服务 OBEXFileTransferServiceClass_UUID = '{00001106-0000-1000-8000-00805F9B34FB}' IrMCSyncCommandServiceClass_UUID = '{00001107-0000-1000-8000-00805F9B34FB}' 蓝牙的连接有主从设备, 提供服务的可以认为是从设备。主设备通过 UUID 访问从设备 提供具有相同 UUID 的服务,从而建立客服端—服务器(C/S)模式。
相关文档
最新文档