Android Developer -- Bluetooth篇 开发实例之六 蓝牙RSSI计算距离

计算公式:

d = 10^((abs(RSSI) - A) / (10 * n))

其中:

d - 计算所得距离

RSSI - 接收信号强度(负值)

A - 发射端和接收端相隔1米时的信号强度

n - 环境衰减因子

计算公式的代码实现

- (float)calcDistByRSSI:(int)rssi
{
    int iRssi = abs(rssi);
    float power = (iRssi-59)/(10*2.0);
    return pow(10, power);
}

传入RSSI值,返回距离(单位:米)。其中,A参数赋了59,n赋了2.0。

由于所处环境不同,每台发射源(蓝牙设备)对应参数值都不一样。按道理,公式里的每项参数都应该做实验(校准)获得。

当你不知道周围蓝牙设备准确位置时,只能给A和n赋经验值(如本例)。

原文:http://blog.csdn.net/njchenyi/article/details/46981423

时间: 2024-10-24 11:39:12

Android Developer -- Bluetooth篇 开发实例之六 蓝牙RSSI计算距离的相关文章

Android Developer -- Bluetooth篇 开发实例之一

第一步:声明Bluetooth Permissions <!-- 设置蓝牙访问权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 第二步:获取BluetoothAdapter,判断该设备是否支持蓝牙 Bl

Android Developer -- Bluetooth篇 开发实例之二

连接设备 In order to create a connection between your application on two devices, you must implement both the server-side and client-side mechanisms, because one device must open a server socket and the other one must initiate the connection (using the s

Android Developer -- Bluetooth篇 开发实例之四 为什么无线信号(RSSI)是负值?

原文:http://www.cnblogs.com/lele/articles/2832885.html 为什么无线信号(RSSI)是负值 答:其实归根到底为什么接收的无线信号是负值,这样子是不是容易理解多了.因为无线信号多为mW级别,所以对它进行了极化,转化为dBm而已,不表示信号是负的.1mW就是0dBm,小于1mW就是负数的dBm数. 弄清信号强度的定义就行了: RSSI(接收信号强度)Received Signal Strength IndicatorRss=10logP,只需将接受到的

Bluetooth篇 开发实例之九 和蓝牙模块通信

首先,我们要去连接蓝牙模块,那么,我们只要写客户端的程序就好了,蓝牙模块就相当于服务端. 连接就需要UUID. #蓝牙串口服务SerialPortServiceClass_UUID = ‘{00001101-0000-1000-8000-00805F9B34FB}’ 第一步: 首先要连接设备.这个参考Android Developer的例子来写:Android Developer -- Bluetooth篇 开发实例之二 连接设备 private class ConnectThread exte

Bluetooth篇 开发实例之八 匹配

自己写的App匹配蓝牙设备,不需要通过系统设置去连接. 匹配和通信是两回事. 用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出.但是可以通过反射来获取. Method[] hideMethod2 =BluetoothDevice.class.getMethods(); int k = 0; for (; k < hideMethod2.length; k++) { Log.e("BluetoothDevice

Bluetooth篇 开发实例之七 匹配&amp;UUID

匹配和通信是两回事. 1.用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出.但是可以通过反射来获取. 知道这两个API的宿主(BluetoothDevice): /** * 与设备配对 参考源码:platform/packages/apps/Settings.git * /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java */

[转] 蓝牙RSSI计算距离

利用CoreLocation.framework很容易扫描获得周边蓝牙设备,开源代码AirLocate有具体实现,下载地址: https://developer.apple.com/library/ios/samplecode/AirLocate/Introduction/Intro.html 所获得的iBeacon在CoreLocation里以CLBeacon表示,其中有RSSI值(接收信号强度),可以用来计算发射端和接收端间距离. 计算公式: d = 10^((abs(RSSI) - A)

蓝牙RSSI计算距离

利用CoreLocation.framework很容易扫描获得周边蓝牙设备,苹果开源代码AirLocate有具体实现,下载地址: https://developer.apple.com/library/ios/samplecode/AirLocate/Introduction/Intro.html 所获得的iBeacon在CoreLocation里以CLBeacon表示,其中有RSSI值(接收信号强度),可以用来计算发射端和接收端间距离. 计算公式: d = 10^((abs(RSSI) - A

Android Developer -- Bluetooth篇 概述

Bluetooth 安卓平台支持蓝牙网络协议栈,它允许设备与其他蓝牙设备进行无线交换数据.应用程序框架通过安卓蓝牙APIs提供访问蓝牙功能.这些APIs使应用程序通过无线连接到其他蓝牙设备,使点对点和多点的无线功能. 使用蓝牙APIs,安卓应用程序可以执行以下功能: 扫描其他蓝牙设备 查询本地蓝牙适配器,用于配对蓝牙设备 建立RFCOMM通道 通过发现服务service discovery连接到其他设备 交换数据和其他设备 管理多个连接 The Basics 这个文档描述了如何使用Android