Android 开发 BLE 用第三方库是总是出现一些问题,最后还是硬着头皮改回原生 API。...相比传统的蓝牙,BLE更显著的特点是低功耗。这一优点使android App可以与具有低功耗要求的BLE设备通信,如近距离传感器、心脏速率监视器、健身设备等。...角色和责任 以下是Android设备与BLE设备交互时的角色和责任: 中央 VS 外围设备(外设)。 适用于BLE连接本身。中央设备扫描,寻找广播;外围设备发出广播。...android:name="android.permission.ACCESS_FINE_LOCATION"/> 设置BLE ---- 你的 app 能与 BLE 通信之前,你需要确认设备是否支持 BLE...根据用户的输入,这个activity与BluetoothLeService通信,通过Android BLE API实现与BLE设备交互。
Android BLE基础操作框架,基于回调,操作简单。包含扫描、多连接、广播包解析、服务读写及通知等功能。...该库是 BLE 操作的基础框架,只处理 BLE 设备通信逻辑,不包含具体的数据处理,如数据的分包与组包等。...效果展示 使用介绍 权限配置 6.0 以下系统不需要配置权限,库中已经配置了如下权限: 因为蓝牙在 6.0 以上手机使用了模糊定位功能,所以需要添加模糊定位权限。...更多关于广播包解析可以参考Android BLE学习笔记中数据解析部分。
最终实现的界面: 1.开启权限 在AndroidManifest.xml中添加一下代码: 2.初始化BLE 第一步:判断设备是否支持BLE...(this); mBLENameList.add(""); ListAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item
Ble蓝牙App(一)扫描 前言 关于低功耗的蓝牙介绍我已经做过很多了,只不过很多人不是奔着学习的目的去的,拿着源码就去运行,后面又发现连接设备后马上断开,然后不会自己看问题,这个现象就是快餐式的,...针对这个情况,我决定做了系列性的Ble蓝牙App,尽可能的避免在你运行的时候出现bug,所以这是一个低功耗蓝牙工具App,可以让你了解到一些东西。...二、扫描准备 下面在com.llw.goodble包下新建一个ble包,里面我们需要创建一些类来处理扫描的相关事务,首先在ble包下创建一个BleCore类,里面先不写内容,然后我们在ble包下新建一个...因为后面还需要写Ble相关的数据处理,因此在ble包下创建一个BleCore类,代码如下所示: class BleCore private constructor(private val context...核心类的初始化,顺便完成对于Ble扫描类的初始化。
本文旨在提供一个方便没接触过Android上低功耗蓝牙(Bluetooth Low Energy)的同学快速上手使用的简易教程,因此对其中的一些细节不做过分深入的探讨,此外,为了让没有Ble设备的同学也能模拟与设备的交互过程...需要的权限 获取服务,特征-->打开通知-->写特征-->读特征-->断开连接,通过这些步骤我们就能学会Android Ble 的基本方法的使用。...如果大家需要了解更多更详细的使用方法,这里给大家推荐2个开源的ble库: Android-BLE-Library:NordicSemiconductor官方的Android ble库。...BLELib:我自己封装的ble库,大家喜欢的话可以顺手star一下。
BLE及相关协议 BLE是蓝牙4.0标准的一部分,旨在解决传统蓝牙连接慢、能耗大的问题,Google在Android 4.3(API 18)中引入了对BLE的支持。... <uses-feature android:name="android.hardware.bluetooth_le" android:required...Android BLE相关类 BluetoothAdapter:Android设备的蓝牙适配器,可执行基本的蓝牙任务,如启动、停止设备发现,查询已配对设备,获取蓝牙适配器状态,使用MAC地址实例化蓝牙设备类...BLE implementation Subscribe to a BLE Gatt notification Android https://www.bluetooth.com/specifications
在蓝牙低功耗(BLE)中,特性(Characteristic)是蓝牙设备提供的一种数据单元,用于描述设备的某个属性或功能。特性包含了一系列的属性和值,可以用于读取、写入和通知数据。...BLE特性相关的关键概念和说明: UUID(Universally Unique Identifier):每个特性都会有一个唯一的UUID,用于标识该特性。...使用BLE特性,可以实现各种功能和数据交互,例如传感器数据的读取、设备状态的监控、远程控制等。特性的读写和通知操作可以通过与蓝牙设备的交互来实现。...需要注意的是,BLE特性的操作和功能是由设备的厂商定义的,并在设备的GATT(Generic Attribute Profile)配置文件中进行描述。 ...> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv_property
(Bluetooth Low Energy)通信中,Ble Read(读操作)是一种用于从BLE服务器设备读取数据的操作。...当一个BLE设备(称为客户端)需要获取另一个BLE设备(称为服务器)上的数据时,可以使用Ble Read操作。客户端向服务器发送读取请求,并等待服务器返回所请求的数据。...Ble Read操作具有以下特点: 请求-回复模式:Ble Read操作是一种请求-回复模式的操作,客户端向服务器发送读取请求,服务器则回复所请求的数据。...单次数据传输:Ble Read操作一次只能读取一个数据值或一个数据块。如果需要读取多个数据值,客户端需要连续发送多个读取请求。 数据的访问权限:Ble Read操作只能读取具有权限允许的数据。...Ble Write(带回复的写操作):当一个BLE设备(称为客户端)想要向另一个BLE设备(称为服务器)发送数据时,可以使用Ble Write操作。
="http://schemas.android.com/apk/res/android"> <item android:id="@+id/item_filter_null"...android:checkable="true" android:title="过滤空设备名" /> <item android:id="@+id...android:id="@+id/item_filter_rssi" android:checkable="true" android:title="过滤RSSI" />..." android:layout_marginEnd="18dp" android:layout_weight="1" android:text="取消"...android:layout_weight="1" android:max="100" android:min="35" android:progress
在看Android4.42的源码时看到有添加对BLE设备的处理,看的一头雾水,多方百度,终于有种柳暗花明的感觉。...本文总结来源于百度多篇文章,欢迎转载,分享交流 BLE蓝牙概念 BLE:Bluetooth low Energy 低能耗蓝牙,实现低成本,短距离的无线传输,传输速率于传统蓝牙相同位2.4GHZ,采用非常快速的连接方式...,适用于发送数据量少而且发送次数较少的蓝牙通信 相比于传统蓝牙 BLE蓝牙设备的传输距离最远可达100米 发送数据所需时间短(<3ms) 响应延时时间短(6ms) 低能耗 主要应用于只能穿戴,汽车,家用电子等...BLE通信协议 在进行BLE通信时通信双方分为外围(Periphery)和中央(Central) 1,外围用于提供数据 2,中央用于接收和处理数据 相当于集中式布局,中央可接收多个外围的数据,但外围只能向一个中央发送数据...目前所使用的Android手机只能作为中央使用和处理数据,接下来介绍下如何去创建一个中央 创建中央(Central) 在配置文件中添加蓝牙的权限 获取本地蓝牙适配器mBluetoothAdapter =
} 因为本文要做的事情是连接和发现服务,所以我们就先重写这两个函数,注意一点的是,蓝牙的操作都是在子线程中进行的,如果我们需要知道当前是否连接,则需要写一个接口用于回调到Activity中,在ble...parent" app:layout_constraintTop_toTopOf="parent" app:navigationIcon="@drawable/ic_scan_ble...,在返回的时候拿到device对象,这在前一篇已经写好了,拿到device对象之后调用BleCore的connect()函数进行连接设备,在onCreate()函数中进行BleCore的赋值,然后设置Ble...android:text="服务" android:textColor="@color/black" android:textSize="16sp" android...layout_constraintTop_toBottomOf="@+id/tv_uuid_title" /> 下面我们在ble
针对低功耗蓝牙通讯,Android 4.3(API 18)开始引入了 BLE 库。我们可以直接使用 Android SDK 中的蓝牙 BLE 库,而不用额外导入依赖库。...而使用BLE库,我们可以直接通过蓝牙设备的UUID进行连接(通过GATT服务),在当前应用内就能直接连接了。而不用通过系统设置。...GATT 配置文件是一种通用规范,内容针对在 BLE 链路上发送和接收称为“属性ATT”的简短数据片段。目前所有低功耗应用配置文件均以 GATT 为基础。...而我们如果在其他 Android 系统的设备中,例如TV,平板,一体机等等。是否有蓝牙还真不能完整保证。 如果不确定的情况下,那么可以通过以下代码检查 BLE 的可用性。...让BLE框架帮我们进行轮询之后,再通知到我们。 如果觉得总结的还可以,希望能够点个赞鼓励一下,谢谢。
Ble蓝牙App(四)UI优化和描述符 前言 上一篇中了解了特性和属性,同时显示设备蓝牙服务下的特性和属性,本文中就需要来使用这些特性和属性来完成一些功能。...android:layout_width="100dp" android:layout_height="100dp" app:srcCompat="@drawable/ic_empty_ble..." android:textSize="16sp" /> 这里使用到了一个图标,ic_empty_ble.xml,代码如下所示: <vector xmlns...:id="@+id/empty_<em>ble</em>_lay" layout="@layout/lay_empty_<em>ble</em>" android:layout_width="match_parent...在 BLE 应用中,Descriptor 充当了配置和元数据信息的重要角色,帮助设备之间准确地交换和理解数据。
角色和责任 以下是Android设备与BLE设备交互时的角色和责任: *中央 VS 外围设备。 适用于BLE连接本身。中央设备扫描,寻找广播;外围设备发出广播。...为了方便理解,想象你有一个Android手机和一个用于活动跟踪BLE设备,手机支持中央角色,活动跟踪器支持外围(为了建立BLE连接你需要注意两件事,只支持外围设备的两方或者只支持中央设备的两方不能互相通信...但是你可以自己设计android app去扮演GATT服务端角色 设备对BLE的支持 分为两种情况 * 目标设备是否支持BLE * Android手机是否支持BLE 目标设备是否支持要看具体目标设备的情况..."/> 如果想声明你的app只为具有BLE的设备提供,在manifest文件中包括: 代码中判断手机是否支持BLE特性: // 使用此检查确定BLE是否支持在设备上,然后你可以有选择性禁用BLE相关的功能 if (!
之前做 Ble 开发都是在 Android 6.0 系统以下的版本中进行测试]的,今天使用 Android 6.0 的设备测试的时候,发现扫描不到周围的 Ble 设备。...动态申请位置权限 ACCESS_COARSE_LOCATION 在 AndroidManifest.xml 文件中加入 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION...6.0开始需要打开位置权限才可以搜索到Ble设备"); } //请求权限 ActivityCompat.requestPermissions(this,...做完上面你以为就 OK 了,但是可能你会发现,并没有什么卵用,依然不能搜索到周围的 Ble 设备,原因是可能的你的位置服务(定位 GPS)没有打开。...LocationManager.GPS_PROVIDER); if (networkProvider || gpsProvider) return true; return false; } 如果定位已经打开,OK 很好,可以搜索到 ble
> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com...> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com...> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width...android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView...xqx * @email djlxqx@163.com * blog:http://www.cnblogs.com/xqxacm/ * createAt 2017/9/6 * description: ble
就距离而言,BLE专注于非常短的距离通信。可以创建和配置一个BLE设备,该设备可以可靠地传输30米或30米以上的视线范围内的数据,但典型的操作范围可能更接近2到5米。...蓝牙BLE组成 BLE由三个主要构建模块组成:应用程序、主机和控制器。顾名思义,应用程序块是与蓝牙协议栈交互的用户应用程序。主机覆盖蓝牙协议栈的上层。控制器覆盖下层。...BLE的不同的层次和他们的目的 BLE和许多其他无线技术一样,由许多层组成。每一层都有其作用,对BLE器件的正常工作起着重要作用。...应用程序的体系结构高度依赖于使用BLE开发的项目,所以我们将把这一部分留给第二部分,我们将使用BLE P Click构建项目。...现在我们可以转到BLE设备的主机部分。 逻辑链路控制和适配协议(L2CAP) L2CAP负责两项任务:1、它需要来自上层的多个协议,并将它们封装成标准的BLE数据包格式(反之亦然)。
一、请求MTU的概念 在 Android 的 BLE(Bluetooth Low Energy)开发中,requestMtu 是一个用于请求修改 BLE 连接的最大传输单元(MTU)的方法。...通过调用 requestMtu 方法,你可以请求增加或减少 BLE 连接中的 MTU 大小。较大的 MTU 可以提高数据传输效率,因为每个数据包可以携带更多的数据。...="http://schemas.android.com/apk/res/android" android:width="48dp" android:height="48dp"...> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv_device_info...> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com
对 RxSwift 及 BLE 感兴趣的同学可以看看,或有所得。
Android中的蓝牙 说到Android中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区分了...如果使用智能手机作为测试平台,其硬件条件是,蓝牙得至少是低功耗蓝牙版本,然后安卓系统的话,至少得是Android 4.3以上系统才行,因为Google在Android 4.3以上才做了BLE主设备的支持...,如果想将智能手机作为BLE从设备,则必须在Android 5.0以上才行。...很多智能电视配的遥控器带有语音识别,需要用经典蓝牙才能传输声音 传大数据量的,用经典蓝牙: 如某些工控场景,使用Android或Linux主控,外挂蓝牙遥控设备的,可以使用经典蓝牙里的SPP协议...文章参考:Android中经典蓝牙与低功耗蓝牙的简单对比分析 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149168.html原文链接:https://javaforall.cn
领取专属 10元无门槛券
手把手带您无忧上云