IDO 智能手环 SDK
功能概述
适用于iOS/Android/Harmony设备并支持IDO公司的手环,实现蓝牙连接控制框架库
iOS集成
使用 Cocoapods 集成
在Podfile文件中添加以下内容:
source 'https://github.com/idoosmart/IDOSmartSpec.git' platform :ios, '11.0' target 'your_target_name1' do pod 'IDOSDK-full', '~> 4.2.0' end然后在项目根目录下执行 pod install 命令,集成。 CocoaPods的使用请参考:CocoaPods Guides
Swift Package Manager
Swift 包管理器 (SwiftPM) 是一种管理 Swift 代码分发的工具。它简化了管理 Swift 包依赖项的过程。
要使用 SwiftPM 将
IDOSDK-full集成到您的项目中:在 Xcode 中,File > Add Package Dependency。
输入以下包存储库 URL:https://github.com/idoosmart/ios_sdk_full.git
选择适当的版本(例如特定版本、分支或提交)。
将
IDOSDK-full添加到您的目标依赖项。
IDOSDK-full至少需要 Swift 工具版本 5.3。
初始化Flutter
import Flutter
import FlutterPluginRegistrant
class AppDelegate: UIResponder, UIApplicationDelegate {
private var flutterEngine: FlutterEngine?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
self.initFlutterEngine()
...
return true
}
}
extension AppDelegate {
private func initFlutterEngine() {
self.flutterEngine = FlutterEngine(name: "io.flutter", project: nil)
self.flutterEngine?.run(withEntrypoint: nil)
if let engine = flutterEngine {
GeneratedPluginRegistrant.register(with: engine)
print("flutterEngine finished")
} else {
print("engine is null")
assert(false, "engine is null")
}
}
}
注册SDK
SDK分为三个模块:Protocol 协议库、Bluetooth库及Alexa库,使用前需要进行注册(全局注册一次)
import protocol_channel
// Register sdk
func registerSDK() {
// ble(仅限于使用内置蓝牙)
sdk.ble.addBleDelegate(api: self)
sdk.ble.getBluetoothState { [weak self] stateModel in
self?.bleState = stateModel
self?.funcPage?.bleState = stateModel
}
// protocol library
sdk.bridge.setupBridge(delegate: self, logType: .release)
// alexa (没有alexa功能就不需要接入)
sdk.alexa.setupAlexa(delegate: self, clientId: clientId)
}
使用SDK
SDK的API,由全局定义常量sdk进行调用即可
import protocol_channel
func someMethod() {
/// 设备信息
sdk.device.xx
/// 功能表
sdk.funcTable.xx
/// 指令
sdk.cmd.xx
/// 桥接
sdk.bridge.xx
/// 蓝牙 (仅限使用内置蓝牙库)
sdk.ble.xx
/// Alexa
sdk.alexa.xx
/// 文件传输
sdk.transfer.xx
/// 消息图标
sdk.messageIcon.xx
/// 数据同步
sdk.syncData.xx
/// 数据交换
sdk.dataExchange.xx
/// 设备日志
sdk.deviceLog.xx
/// 常用工具、缓存
sdk.tool.xx
}
Android集成
使用android studio 集成
1.集成sdk , sdk 分为带蓝牙和不带蓝牙(可以使用自己的蓝牙库),用户根据需求选择一种
(1)带蓝牙库的sdk如下,共5个文件(可以从example_android demo 里面的lib 拷贝,lib 里面有最新版本,也可以这里下载)
protocol_ffi_release-x.x.x.aar protocol_channel_release-x.x.x.aar native_channel_release-x.x.x.aar flutter_release-x.x.x.aar flutter_bluetooth_release-x.x.x.aar
(2)不带蓝牙库的sdk,共四个文件(可以从example_android_lite demo 里面的lib 拷贝,lib 里面有最新版本,也可以这里下载)
protocol_ffi_release-x.x.x.aar protocol_channel_release-x.x.x.aar native_channel_release-x.x.x.aar flutter_release-x.x.x.aar
将下载的 AAR 包复制到 libs 目录下
使用SDK v4.5.0及以上版本
修改 build.gradle(app) 文件
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
implementation "io.flutter:flutter_embedding_release:1.0.0-36335019a8eab588c3c2ea783c618d90505be233"
implementation "io.flutter:arm64_v8a_release:1.0.0-36335019a8eab588c3c2ea783c618d90505be233"
implementation "io.flutter:armeabi_v7a_release:1.0.0-36335019a8eab588c3c2ea783c618d90505be233"
implementation 'no.nordicsemi.android:dfu:2.5.0'
implementation 'no.nordicsemi.android:mcumgr-ble:1.5.2'
....
}
使用SDK v4.4.0 - v4.4.13版本
修改 build.gradle(app) 文件
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
implementation "io.flutter:flutter_embedding_release:1.0.0-36335019a8eab588c3c2ea783c618d90505be233"
implementation "io.flutter:arm64_v8a_release:1.0.0-36335019a8eab588c3c2ea783c618d90505be233"
implementation "io.flutter:armeabi_v7a_release:1.0.0-36335019a8eab588c3c2ea783c618d90505be233"
implementation 'no.nordicsemi.android:dfu:2.5.0'
....
}
使用SDK v4.4.0以下版本
修改 build.gradle(app) 文件
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
implementation "io.flutter:flutter_embedding_release:1.0.0-0f359063c487ee70787e58b4b011cbb3c2f53fd6"
implementation "io.flutter:arm64_v8a_release:1.0.0-0f359063c487ee70787e58b4b011cbb3c2f53fd6"
implementation "io.flutter:armeabi_v7a_release:1.0.0-0f359063c487ee70787e58b4b011cbb3c2f53fd6"
implementation 'no.nordicsemi.android:dfu:2.5.0'
....
}
注册SDK
SDK分为三个模块:Protocol 协议库、Bluetooth库及Alexa库,使用前需要进行注册,具体参考demo
import protocol_channel
// Register sdk
func registerSDK() {
sdk.init(this) //全局注册
// ble(仅限于使用内置蓝牙)
sdk.ble.addBleDelegate(bleDelegate: IDOBleDelegate)
sdk.ble.getBluetoothState {
}
// protocol library
sdk.bridge.setupBridge( idoBrigeDelegate : IDOBridgeDelegate, type:logType)
// alexa (没有alexa功能就不需要接入)
sdk.alexa.setupAlexa(delegate: IDOAlexaDelegate, clientId: clientId)
}
使用SDK
SDK的API,由全局定义常量sdk进行调用即可
import protocol_channel
fun someMethod() {
/// 设备信息
sdk.device.xx
/// 功能表
sdk.funcTable.xx
/// 指令
sdk.cmd.xx
/// 桥接
sdk.bridge.xx
/// 蓝牙 (仅限使用内置蓝牙库)
sdk.ble.xx
/// Alexa
sdk.alexa.xx
/// 文件传输
sdk.transfer.xx
/// 消息图标
sdk.messageIcon.xx
/// 数据同步
sdk.syncData.xx
/// 数据交换
sdk.dataExchange.xx
/// 设备日志
sdk.deviceLog.xx
/// 常用工具、缓存
sdk.tool.xx
}
harmony集成
使用DevEco studio 集成
目前仅支持full版本
1.集成sdk 将har包拷贝到工程下面的har目录
flutter_embedding_release.har
flutter_module.har
arm64_v8a_release.har
protocol_ffi.har
flutter_bluetooth.har
native_channel.har
flutter_blue_plus_ohos.har
添加依赖,建议放在工程目录entry下的oh-package.json5
dependencies:
{
"protocol_channel": "file:../har/protocol_channel.har",
"protocol_ffi": "file:../har/protocol_ffi.har",
"flutter_blue_plus_ohos": "file:../har/flutter_blue_plus_ohos.har",
"flutter_bluetooth": "file:../har/flutter_bluetooth.har",
"native_channel": "file:../har/native_channel.har",
"@ohos/flutter_ohos": "file:../har/flutter_embedding_release.har",
"@ohos/flutter_module": "file:../har/flutter_module.har",
"flutter_native_arm64_v8a": "file:../har/arm64_v8a_release.har"
},
在工程目录下的 oh-package.json5
overrides :
{
"protocol_channel": "file:../har/protocol_channel.har",
"protocol_ffi": "file:../har/protocol_ffi.har",
"flutter_blue_plus_ohos": "file:../har/flutter_blue_plus_ohos.har",
"flutter_bluetooth": "file:../har/flutter_bluetooth.har",
"native_channel": "file:../har/native_channel.har",
"@ohos/flutter_ohos": "file:../har/flutter_embedding_release.har",
"@ohos/flutter_module": "file:../har/flutter_module.har",
"flutter_native_arm64_v8a": "file:../har/arm64_v8a_release.har"
}
注册SDK
import { GeneratedPluginRegistrant } from '@ohos/flutter_module';
import {sdk,IDOLogType} from 'protocol_channel';
// Register sdk
registerSDK(){
sdk.init(this.context, (flutterEngine) => {
GeneratedPluginRegistrant.registerWith(flutterEngine)
})
sdk.ble.addBleDelegate(bleDelegate: IDOBleDelegate);
sdk.bridge.setupBridge( idoBrigeDelegate : IDOBridgeDelegate, type:IDOLogType)
}
使用SDK
SDK的API,由全局定义常量sdk进行调用即可
import{sdk} from "protocol_channel"
/// 设备信息
sdk.device.xx
/// 功能表
sdk.funcTable.xx
/// 指令
sdk.cmd.xx
/// 桥接
sdk.bridge.xx
/// 蓝牙 (仅限使用内置蓝牙库)
sdk.ble.xx
/// 文件传输
sdk.transfer.xx
/// 消息图标
sdk.messageIcon.xx
/// 数据同步
sdk.syncData.xx
/// 数据交换
sdk.dataExchange.xx
/// 设备日志
sdk.deviceLog.xx
/// 常用工具、缓存
sdk.tool.xx
蓝牙虚拟地址固化权限申请(针对 full 版本)
因为鸿蒙系统的特殊性,蓝牙库扫描出来的设备包含两个 mac 地址,一个真实 mac(从厂商数据解析出来,与设备端显示 mac 一致,返回给业务层使用),一个虚拟 mac 地址(鸿蒙系统返回的实际地址,建立 ble 连接的使用)。
为了稳定、高效实现 ble 回连,在IDO蓝牙库中通过鸿蒙官方 api 实现虚拟 mac 地址固化操作,建立连接的虚拟 mac 会固化并不会发生改变。该操作需要申请 ACL 权限:
ohos.permission.PERSISTENT_BLUETOOTH_PEERS_MAC