平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
√ | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
使用前说明 很重要!!!!!
-
计步器主逻辑代码来源:TodayStepCounter 感谢作者的无私奉献!!!
-
本人对代码二次封装,制作uniapp安卓原生插件给uni的开发者学习参考!
-
本插件只有android版本。IOS版本另见其他插件https://ext.dcloud.net.cn/plugin?id=129
-
如果你对计步器的准确率要求很高!!此插件应该不能满足你的需求!!!
-
计步器目前存在的问题
- 测试发现计步器准确率不高,应用如果被杀掉进程,则无法继续记录步数!!!前台关闭没有影响(记录步数逻辑在独立进程的service中!)
- 计步器步数记录会有很多错误记录,如摇晃手机也会记录在步数中,原因是传感器或陀螺仪无法对走路的动作完全匹配,就会出现以上步数不准确问题。目前还没有好的方式解决这样的错误记录!
- 对部分手机的支持不够,可能会出现无法记录步数问题!(因为没有太多的测试机,只测了手头上有的机型,未发现问题,但有使用TodayStepCounter开发者说在华为某些机型上会无法记录步数!)
-
目前android还没有一个统一的计步器接口,所以几乎没有完美的计步器! 当然QQ和微信等有“白名单”外挂除外(不会被杀掉进程才是硬道理啊!!)
集成插件
API
initialize()
计步器初始化,使用计步器必须要先调用此函数!!!初始化完毕 会触发GlobalEvent事件 key为: StepCounter_Ready
。
特别注意一点 先注册StepCounter_Ready事件监听,再调用initialize初始化,防止StepCounter_Ready触发较快漏掉。
getCurrentTimeSportStep(callback)
获取今日当前步数
需要在
StepCounter_Ready
事件触发后调用
参数
参数 | 类型 | 说明 |
---|---|---|
callback | function | 返回步数列表数据 |
callback返回值
类型 | 说明 |
---|---|
int | 步数 |
返回值
无
getTodaySportStepArray(callback)
获取所有步数列表
需要在
StepCounter_Ready
事件触发后调用
参数
参数 | 类型 | 说明 |
---|---|---|
callback | function | 返回步数列表数据 |
callback返回值
类型 | 说明 |
---|---|
array | 数组类型!无数据返回空数组 具体keys查看“array对象keys说明” |
返回值
无
getTodaySportStepArrayByDate(date, callback)
根据时间获取步数列表
需要在
StepCounter_Ready
事件触发后调用
参数
参数 | 类型 | 说明 |
---|---|---|
date | String | 日期 格式yyyy-MM-dd |
callback | function | 返回步数列表数据 |
callback返回值
类型 | 说明 |
---|---|
array | 数组类型!无数据返回空数组 具体keys查看“array对象keys说明” |
返回值
无
getTodaySportStepArrayByStartDateAndDays(date, days, callback)
根据时间和天数获取步数列表
需要在
StepCounter_Ready
事件触发后调用
参数
参数 | 类型 | 说明 |
---|---|---|
date | String | 日期 格式yyyy-MM-dd |
days | int | 天数 |
callback | function | 返回步数列表数据 |
callback返回值
类型 | 说明 |
---|---|
array | 数组类型!无数据返回空数组 具体keys查看“array对象keys说明” |
返回值
无
array对象keys说明
key名称 | 值域 | 说明 |
---|---|---|
kaluli | float | 卡路里消耗 |
km | float | 千米 |
sportDate | long | 时间戳 |
stepNum | int | 步数 |
today | String | 日期 |
例子:
[{"kaluli":"0.0","km":"0.00","sportDate":1548242367459,"stepNum":0,"today":"2019-01-23"},{"kaluli":"0.9","km":"0.01","sportDate":1548242480956,"stepNum":23,"today":"2019-01-23"}]
Event事件
StepCounter_Ready
计步器初始化完毕事件!!!
示例:
// 注册计步器
var step = uni.requireNativePlugin('DC-StepCounter');
// 注册globalEvent
var globalEvent = uni.requireNativePlugin('globalEvent');
// 监听globalEvent事件 StepCounter_Ready 在ready后调用计步器相关API
globalEvent.addEventListener("StepCounter_Ready", function (e) {
step.getCurrentTimeSportStep(function(n) {
console.log('走了'+n+'步');
})
// 2019-01-13 为时间 使用者根据当前时间修改
step.getTodaySportStepArrayByDate("2019-01-13", function(array){
console.log(JSON.stringify(array));
})
});
//调用初始化 先注册StepCounter_Ready事件 再调用initialize初始化 防止StepCounter_Ready事件丢失
step.initialize();
升级记录
- 0.0.2 修复部分手机getTodaySportStepArrayByStartDateAndDays、getTodaySportStepArrayByDate不返回信息问题