公司动态

Polar BLE SDK Android 快速上手教程:从零集成到实时心率,避开90%开发者踩过的权限坑

📅 2026/8/27 15:46:16
Polar BLE SDK Android 快速上手教程:从零集成到实时心率,避开90%开发者踩过的权限坑
Polar BLE SDK Android 快速上手教程从零集成到实时心率避开90%开发者踩过的权限坑【免费下载链接】polar-ble-sdkRepository includes SDK and code examples. More info https://polar.com/en/developers项目地址: https://gitcode.com/gh_mirrors/po/polar-ble-sdk 想在自己的 Android 应用里接入 Polar 心电胸带或光学心率传感器Polar BLE SDK是 Polar 官方推出的蓝牙低能耗BLE开发工具包支持 Android 与 iOS 双平台。本文以 Android 为例带你用最短的路径完成依赖安装 → 权限配置 → 建立连接 → 实时心率流并重点拆解 Android 12 蓝牙权限这个最容易翻车的坑新手也能一次跑通。一、它能为你的应用做什么Polar BLE SDK 让你像调 API 一样读取 Polar 传感器和手表的数据官方支持的硬件和功能包括设备核心能力H10 心率胸带精确心率BPM、RR 间期、130Hz 心电图ECG、加速度计、内部离线录制Verity Sense / OH1光学心率、PPG、PP 间期、加速度/陀螺仪/磁力计、SDK 模式、离线录制Polar 360 / Pacer / Vantage V3 等手表心率、PP 间期、加速度、电池电量、SDK 模式功能特性在 README.md 中有完整清单SDK 基于 ReactiveXRxJava3设计数据以响应式流的方式推送非常适合做实时图表。 提示H10 是市场上精度最高的心率胸带官方教程就选它作为示例设备你只需一根胸带 一台 Android 手机即可开始。二、安装前先确认这 3 个前提在动手之前请逐项核对90% 的连不上设备问题出在这里✅手机系统Android且项目minSdk≥24Android 7.0✅手机已开启蓝牙且目标 Polar 设备已开机、靠近手机H10 需放在充电座上充电/唤醒✅知道设备 ID设备本体印刷的deviceId如0A3BA92B手动连接时需要也可以改用自动连接或扫描选择三、4 步把 SDK 集成进 Android 工程整个集成过程只涉及 Gradle 配置无需任何原生编译第 1 步设置 minSdk在app/build.gradle中确认minSdk 24。第 2 步添加 JitPack 仓库在settings.gradle的dependencyResolutionManagement中添加 JitPack 仓库maven { url https://jitpack.io }示例工程 settings.gradle 可以直接对照。第 3 步添加依赖dependencies { implementation com.github.polarofficial:polar-ble-sdk:5.1.0 implementation io.reactivex.rxjava3:rxjava:3.1.6 implementation io.reactivex.rxjava3:rxandroid:3.0.2 }第 4 步声明蓝牙权限这是最关键的一步详见下一节。四、蓝牙权限指南90% 开发者踩过的坑 ⚠️Android 对蓝牙权限按版本做了切割只抄一段权限声明是跑不起来的。正确姿势是按版本区分 Manifest 声明 运行时请求三件套1. AndroidManifest.xml 声明全版本都要写在 AndroidManifest.xml 中按如下方式声明权限适用版本说明BLUETOOTH_SCANAndroid 12扫描 BLE 设备可加neverForLocation标志BLUETOOTH_CONNECTAndroid 12连接已发现的设备BLUETOOTH/BLUETOOTH_ADMIN≤ Android 11旧版蓝牙权限记得加maxSdkVersion30ACCESS_FINE_LOCATION/ACCESS_COARSE_LOCATION≤ Android 11旧系统扫描需要定位权限同样加maxSdkVersion30INTERNET全版本SDK 用于检查/下载固件更新2. 运行时请求按系统版本分支这是新手最常漏掉的地方——只声明不请求 永远拿不到数据。参照 MainActivity.kt 中的checkBT()方法逻辑为Android 12API 31请求BLUETOOTH_SCANBLUETOOTH_CONNECTAndroid 10–11API 29–30请求ACCESS_FINE_LOCATIONAndroid 10 以下请求ACCESS_COARSE_LOCATION同时在onRequestPermissionsResult回调里检查授权结果被拒绝时要给用户明确提示示例中用 Toast 提示 Needed permissions are missing。 避坑要点① 不要给旧权限去掉maxSdkVersion30否则在新设备上会申请不必要的定位权限② 如果定位权限在你应用中有其他用途请去掉该限制并单独处理。五、从零到实时心率核心代码流权限就绪后接入实时心率只需 4 个动作完整可运行代码见 HRActivity.kt创建 API 实例PolarBleApiDefaultImpl.defaultImplementation(context, features)只勾选你需要的功能示例开启了FEATURE_POLAR_ONLINE_STREAMING、FEATURE_BATTERY_INFO、FEATURE_DEVICE_INFO注册回调api.setApiCallback(...)监听连接状态、电量、固件版本以及bleSdkFeatureReady——这是启动数据流的正确时机功能就绪后再请求而不是刚连上就请求发起连接api.connectToDevice(deviceId)也可用autoConnectToDevice()自动连接附近设备、或searchForDevice()扫描后选择订阅心率流api.startHrStreaming(deviceId)返回一个 RxJava 流切回主线程后subscribe即可拿到每秒的心率值sample.hr与 RR 间期sample.rrsMs退出页面时务必调用api.shutDown()释放蓝牙资源HRActivity.kt 第 144–147 行这是又一个高频内存泄漏点。六、不想自己写直接跑官方 Demo仓库自带两个完整示例推荐对照学习ECG/HR Demodemos/Android-Demos/PolarSDK-ECG-HR-Demo/输入设备 ID → 连接 → 实时心率曲线 ECG 波形是本文全部步骤的成品️功能全家桶示例examples/example-android/androidBleSdkTestApp/覆盖电池、离线录制、在线流、SDK 模式等全部特性建议先跑通 Demo再回到自己的工程逐步替换代码。七、常见问题速查 ️症状大概率原因权限弹窗没出现没有在运行时请求权限只写了 Manifest授权了还是连不上Manifest 漏了BLUETOOTH_CONNECT或旧版定位权限连上了但没数据在bleSdkFeatureReady回调前就调用了startHrStreaming内存持续增长忘记shutDown()/ 未dispose()订阅个别机型行为异常先查 KnownIssues.md不同固件版本有已知问题和规避方法写在最后至此你已经完成了Polar BLE SDK Android 集成的全部关键步骤Gradle 依赖、版本化权限配置、连接与心率流订阅。接下来可以沿着 README.md 的进阶示例解锁 ECG 流、离线录制与 SDK 模式API 的详细接口说明在 polar-sdk-android/docs/ 的文档站点里。祝你一次跑通心率曲线稳稳拉满【免费下载链接】polar-ble-sdkRepository includes SDK and code examples. More info https://polar.com/en/developers项目地址: https://gitcode.com/gh_mirrors/po/polar-ble-sdk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考