Android IBeacon

Android 开发中 iBeacon的使用 iBeacon的工作原理是基于Bluetooth Low Energy(BLE)低功耗蓝牙传输技术,iBeacon基站不断向四周发送蓝牙信号,当智能设备进入设定区域时,就能够收到信号。只要满足iBeacon技术标准的都可以使用,所以Android也能够支持iBeacon。Google在Android4.3中支持BLE技术 定位一直是非常关键的功能。通过iBeacon基站的部署能够实现室内导航 阅读详情

一、IBeacon的原理       

        iBeacon的工作是基于Android的低功耗蓝牙BLE,和蓝牙不同的是iBeacon不用配对和连接过程,iBeacon基站通过BLE蓝牙的广播频道不断向外发送位置信息,当智能设备进入设定区域时,不需要连接就能够收到信号,只要满足iBeacon技术标准的都可以使用。IBeacon可以通过rssi来判断设备与基站的距离,用于室内的定位、微信签到等场景。

        发射端通过BLE的广告通信信道,以一定时间间隔向外广播数据包,当某个监听设备监听到这个广播数据的时候,就好发送 Scan Response Request,请求广播发送方发送扫描响应数据。这两部分数据的长度都是固定的 31 字节。在 Android 中,系统会把这两个数据拼接在一起,返回一个 62 字节的数组。

        iBeacon的核心组成:

  • UUID:厂商识别号
  • Major:相当于群组号,同一个组里Beacon有相同的Major
  • Minor:相当于识别群组里单个的Beacon
  • TX Power:用于测量设备离Beacon的距离,目前只定义了大概的3个粗略级别10里面内,一米内,一米外。

        UUID+Major+Minor就构成了一个Beacon的识别号,有点类似于网络中的IP地址。可以根据TX Power和rssi等信息通过算法计算出定位信息。   

         iBeacon中一般有两个角色:

  • 基站/从机/外围设备(peripheral),发射端
  • 手机/主机/中心设备(central),接收者

        下面分为两个部分,分别介绍:

二、发射广播信号的IBeacon

1、设置广播参数

    public AdvertiseSettings createAdvertiseSettings(boolean isConnect, int timeoutMillis) {
        return new AdvertiseSettings.Builder()
                .setConnectable(isConnect)
                .setTimeout(timeoutMillis)
                .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH)
                .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)
                .build();
    }

(1)setTxPowerLevel:

  • ADVERTISE_TX_POWER_LOW:低功率
  • ADVERTISE_TX_POWER_MEDIUM:中等功率
  • ADVERTISE_TX_POWER_HIGH:高功率,功率越高越耗性能

(2)setAdvertiseMode:

  • ADVERTISE_MODE_LOW_LATENCY :在低延迟、高功率模式下执行蓝牙 LE 广告
  • ADVERTISE_MODE_LOW_POWER :在低功耗模式下执行蓝牙 LE 广告
  • ADVERTISE_MODE_BALANCED :在平衡功率模式下执行蓝牙 LE 广告。

(3)setTimeout:

        默认0表示用不超时,最大超时时间180秒,如果设置时间超过180秒则会抛出异常。

(4)setConnectable:

        是否运行设备自动连接。

2、设置广播数据

    private AdvertiseData createAdvertiseData(String beaconUuid) {
        AdvertiseData.Builder builder = new AdvertiseData.Builder()
                //广播服务的UUID
                //.addServiceUuid(parcelUuid)
                //添加服务数据UUID和服务数据
                //.addServiceData(parcelUuid, "ee1".getBytes())
                //添加制造商ID和数据
                .addManufacturerData(176, mManufacturerData.array());
        //广播是否包含设备名
        // .setIncludeDeviceName(true)
        //广播是否包含发射功率等级
        //.setIncludeTxPowerLevel(true);
        return builder.build();
    }

(1)设置广播服务的UUID

private static final String BEACON_UUID = "0000180d-0000-1000-8000-00805f9b34fb";
ParcelUuid parcelUuid = ParcelUuid.fromString(BEACON_UUID);

.addServiceUuid(parcelUuid)

        addServiceUuid:设置了该参数,就可以在startScan的onScanResult中通过result.getScanRecord().getServiceUuids()获取到,否则为null。

        这块的UUID是设备厂家设置的UUID信息。

(2)添加服务数据UUID和服务数据

.addServiceData(parcelUuid, "ee1".getBytes())

  

Android开发:IBeacon系列——将Android设备变为IBeacon设备 将Android设备变了IBeacon基站,即使用Android设备发送IBeacon广播信息。 要求: 1、硬件 支持BLE Peripheral模式的手机,新款Android手机大部分支持(三星note5, 三星Galaxy Tab S2, Nexus6 ...)</li> 2、软件 Android 系统5.0及以上,在Lollipop中,谷歌扩展了BLE的功能,增加了对Pr... 阅读详情

相关推荐

Android 10.0系统接收iBeacon信号程序

因为毕设要求,需要测量iBeacon信号,刚学安卓,真的是头大。iBeacon信号简介我就不介绍了自己百度,直接贴代码和介绍吧。 看了许多人的博客,我的思路跟他们也是一样的,iBeacon信号在后台扫描检测,然后通过intent将接收到的数据发送到前台界面。 (1)iBeacon信号扫描是根据后台启动一个service来检测的,应用了一个库:https://altbeacon.github.io...

u014151998的博客 1379

【Android IBeacon室内定位】Android Beacon Library之搜索最近的beacon

  1.了解IBeacon ibeacon是苹果公司于2013年提出的低功耗蓝牙(BLE)传输技术,可以实现室内定位,关于Ibeacon的介绍、使用原理和原始的开发方式网上已经有很多相关的资料了,可以查看以下博客:   IBeacon工作原理 Android开发中Ibeacon的使用 Ibeacon的数据包格式 2.使用beacon实现室内定位的原理 如上图所示,每个beaco...

qq_35696987的博客 6751

Android BLE蓝牙——服务端实现(十四)

如下(这里只是个举例,可以根据项目需求扩展)消息号(1个字节)功能(1个字节)子功能(1个字节)数据长度(2个字节)数据内容(N个字节)CRC校验(1个字节)01010100002D。

小旭的专栏 1996

室内定位技术指南:安卓iBeacon源代码

室内定位技术是移动互联网时代的一项关键技术。它不仅改变了我们对空间和位置信息的认知,而且在商业、旅游、医疗等多个行业中都扮演着至关重要的角色。对于安卓平台而言,随着移动设备的普及,通过室内定位技术为用户提供精准的定位服务,已经成为了企业和开发者的迫切需求。android-beacon-library是一个开源库,它提供了与iBeacon进行通信的工具和API。该库的设计目的是为了简化开发者与iBeacon硬件交互的流程。在详细介绍如何使用该库之前,我们需要先理解其基本架构和核心类。

weixin_42575109的博客 840

Android基于ibeacon实现蓝牙考勤功能

主要为大家详细介绍了Android基于ibeacon实现蓝牙考勤功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

抖音直播行为规范考试

抖音直播行为规范考试

Q1642968641的博客 1万+

U8+ 新建账套

一、登录 账套主管:demo 对账套有修改权限,有账套库权限 系统管理员:admin 其他所有权限 二、新建账套 admin登录–>点击系统管理–>账套–>建立 选择了参照已有账套结转期初:就是上一个的期末数据作为这一次新表的期初数据 启用会计期一旦选择更改不了。 ...

茶茶很困i 3692

双RTX 3090实战:如何用vLLM低成本部署Qwen2.5-14B大模型(附避坑清单)

本文详细介绍了如何利用双RTX 3090显卡低成本部署Qwen2.5-14B大模型的完整指南,包括硬件选型、环境配置、vLLM优化及生产环境调优。重点解析了BF16混合精度在显存占用与推理质量上的平衡策略,并提供了实用的避坑清单和性能调优技巧,帮助开发者高效实现大模型部署。

pz890123456的博客 698

解决fetch_california_housing数据集403错误的三种实用方法

本文针对机器学习初学者加载fetch_california_housing数据集时常见的HTTPError 403: Forbidden错误,提供了三种经过实测的解决方案。详细介绍了手动下载与本地替换、修改源码下载路径以及配置网络访问策略的具体步骤,帮助用户根据自身网络环境和开发场景选择最佳方法,确保数据集顺利加载。

weixin_29074295的博客 547

SAP公司间外协业务流程以及配置说明

SAP公司间外协业务流程以及配置说明

竹大的博客 7157

51单片机 步进电机正反转控制+Proteus仿真

51单片机 步进电机正反转控制+Proteus仿真 Proteus仿真 实例代码 /*************** ******************/ #include <reg52.h> #define uint unsigned int #define uchar unsigned char uchar code FFW[]= { 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 }; uchar code REV[]= { 0x09,0x

perseverance51博客 2787

工业机器人抓取目标检测与抓取姿态估计系统:基于YOLOv12与Cornell Grasping Dataset

工业机器人抓取是自动化生产中的核心环节,而精确的目标检测和抓取姿态估计是实现高效抓取的关键。本文将详细介绍如何构建一个完整的工业机器人抓取系统,该系统结合了最新的YOLOv12目标检测算法和Cornell Grasping Dataset的抓取姿态估计,并提供了用户友好的UI界面。本文详细介绍了一个完整的工业机器人抓取系统,该系统结合了YOLOv12目标检测和基于Cornell Grasping Dataset的抓取姿态估计。我们将使用PyQt5构建一个用户友好的界面,集成目标检测和抓取姿态估计功能。

YOLO 573

Openclaw第5章 知识库管理

💡:学会使用 OpenClaw构建个人知识库系统,实现网页文章存档、GitHub项目管理、论文笔记整理和跨设备同步。

Maynor的博客 773

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: Android低功耗蓝牙BLE
下一篇: Android音频播放
一杯清泉
博客等级 码龄11年 314粉丝 210原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值