pm1 android,Android Sensor SDK

Android Sensor SDK

Step By Step

1.新建工程

Android Studio配置

将sensoro-sensor-kit.jar包放入道libs文件夹下,然后在当前工程下的build.gradle文件配置项中的dependencies新增内容,,如下compile files('libs/sensoro-sensor-kit.jar')

Eclipse配置

将sensoro-sensor-kit.jar包放入道libs文件夹下,右击工程propeties,选择Java build Path,在Library选项中添加sensoro-sensor-kit依赖关系

2.Android Manifest文件说明

在permission节点下新增以下权限和功能,以下权限和功能是必选项

添加service,如下

android:name="com.sensoro.sensor.kit.update.service.DfuService"

android:exported="true" />

添加build.gradle依赖,如下

compile 'no.nordicsemi.android:dfu:1.0.0'

compile group: 'com.google.protobuf', name: 'protobuf-java', version: '2.5.0'

3.代码调用示例说明

1.sdk 核心功能调用示例

SensoroDeviceManager sensoroDeviceManager = SensoroDeviceManager.getInstance(this);

try {

sensoroDeviceManager.startService();

} catch (Exception e) {

e.printStackTrace();

}

sensoroDeviceManager.setSensoroDeviceListener(new SensoroDeviceListener() {

@Override

public void onNewDevice(SensoroDevice sensoroDevice) {//当发现新设备的时候该函数会被回调

}

@Override

public void onGoneDevice(SensoroDevice sensoroDevice) {//设备消失的情况下,该函数被回调

}

@Override

public void onUpdateDevices(final ArrayList arrayList) {//定期回调数据更新函数

}

});

说明:SensoroDeviceManager 是传感器设备管理类,负责处理发现设备和设备消失以及设备信息更新功能,该类是单例类,可通过getInstance方法获得该对象

SensoroDeviceListener 用于回调通知发现设备,设备消息,和设备更新

4. 透传实现

1.启动任务

SensoroDevice sensoroDevice = this.getIntent().getParcelableExtra("sensoroDevice");

sensoroDeviceSession = new SensoroDeviceSession(this, sensoroDevice);

sensoroDeviceSession.startSession("password", new SensoroDeviceSession.ConnectionCallback() {

@Override

public void onConnectFailed(int i) {//连接传感器失败

}

@Override

public void onConnectSuccess() {//连接传感器成功

}

@Override

public void onNotify(byte[] bytes) {//数据透传回调

}

});

2.写入数据

byte []data = SensoroUtils.HexString2Bytes(str);

if (sensoroDeviceSession != null) {

sensoroDeviceSession.write(data, new

SensoroDeviceSession.WriteCallback() {

@Override

public void onWriteSuccess() {//数据写入成功

}

@Override

public void onWriteFailure(int i) {//数据写入失败

}

});

}

5. 设备升级说明

创建对象

//参数1:上下文

//参数2:SensoroDevice 对象(扫描获得)

mSensoroDeviceSession = new SensoroDeviceSession(this.getApplicationContext(), mSensoroDevice);

开始升级

//参数1:升级文件路径

//参数2:密码

//参数3:监听

mSensoroDeviceSession.startUpdate(path, "", new OnDeviceUpdateObserver() {

@Override

public void onEnteringDFU(String s, String s1, String s2) {

loge("正在进入DFU-->>" + s + ",s1 = " + s1 + ",s2 = " + s2);

}

@Override

public void onUpdateCompleted(String s, String s1, String s2) {

loge("升级完成-->" + s + ",s1 = " + s1 + ",s2 = " + s2);

}

@Override

public void onDFUTransfering(String s, int i, float v, float v1, int i1, int i2, String s1) {

loge("onDFUTransfering==========s = " + s + ",i = " + i + ",v = " + v + ",v1 = " + v1 + ",i1 = " + i1

+ ",i2 = " + i2 + ",s1 = " + s1);

}

@Override

public void onUpdateValidating(String s, String s1) {

loge("检验文件:onUpdateValidating=====" + s + "s1 = " + s1);

}

@Override

public void onUpdateTimeout(int i, Object o, String s) {

loge("超时");

}

@Override

public void onDisconnecting() {

loge("断开设备连接");

}

@Override

public void onFailed(String s, String s1, Throwable throwable) {

loge("升级失败======" + s + ",s1 = " + s1 + ",msg = " + (throwable == null ? "e 为空" : throwable

.getMessage()));

}

});添加生命周期方法

/**

* 加入生命周期方法onSessionResume!!!

*/

@Override

protected void onResume() {

super.onResume();

mSensoroDeviceSession.onSessionResume();

}

/**

* 加入生命周期方法onSessonPause!!!

*/

@Override

protected void onPause() {

super.onPause();

mSensoroDeviceSession.onSessonPause();

}

6. 传感器设备对象说明

说明:SensoroDevice 为传感器设备对象,以下为对象属性

serialNumber ---String; // SN

macAddress---String; // MAC

hardwareVersion---String;//硬件版本号

firmwareVersion---String;//固件版本号

batteryLevel---Integer;// 剩余电量

temperature---Float;// 温度

light----Float; // 光线照度

humidity---Integer;//湿度

accelerometerCount---Integer; // 加速度计数器

rssi---int;

customize----byte[];//自定义数据

drip---Integer;//滴漏

co---Float;//一氧化碳

co2---Float;//二氧化碳

no2---Float;//二氧化氮

methane---Float;//甲烷

lpg---Float;液化石油气

pm1---Float;

pm25---Float;//PM2.5

pm10---Float;

coverstatus---Integer;//井盖状态

level---Float;//液位

isDfu---boolean;//是否是DFU模式;

例子代码

适用于Android studio

修订历史

日期

版本

修订人

内容

2016-07-27

1.0

Will

初始内容

2017-04-19

1.2

Will

增加透传功能说明,及传感器支持

2018-04-19

1.3

ddong1031

增加升级模块和新传感器支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈希表应用举例

例题: 伊娃喜欢从整个宇宙中收集硬币。 有一天,她去了一家宇宙购物中心购物,结账时可以使用各种硬币付款。 但是,有一个特殊的付款要求:每张帐单,她只能使用恰好两个硬币来准确的支付消费金额。 给定她拥有…

WebApi管理和性能测试工具WebApiBenchmarks

说到WebApi管理和测试工具其实已经非常多的了,Postman、Swagger等在管理和维护上都非常出色;在性能测试方面也有不少的工具如:wrk,bombardier,http_load和ab等等。不过这些工具都具有单一性,管理和维护好的在性能测试上比较低效,对…

android中的shape资源,Android Drawable资源讲解之shape篇

运用好Android的drawable资源,在开发中就可以减少图片的使用量,这样既缩小了app的体积,也省去了设计图片的时间,而且也容易适配不同的屏幕尺寸。今天首先来讲讲shape资源的使用。1. Shape的属性介绍shape共支持四种形状&#xff0…

C++unique函数应用举例

明明想在学校中请一些同学一起做一项问卷调查。 为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数,对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。 然后再把这些数…

C# WPF 一个设计界面

微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏。C# WPF 一个设计界面今天正月初三,大家在家呆着挺好,不要忘了自我充电。武汉人民…

android中shape的属性,android中shape的属性

solid:实心,就是填充的意思android:color指定填充的颜色gradient:渐变android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。另外渐变默认的模式为android:type”line…

C++to_string应用举例

给定一个非负整数 N,你的任务是计算 N 的所有数字的总和,并以英语输出总和的每个数字。 输入格式 共一行,包含一个整数 N。 输出格式 共一行,用英语输出总和的每个数字,单词之间用空格隔开。 代码如下: …

合集| 21 篇技术文章,带你从零入门 K8s

由阿里云与 CNCF 共同开发的《CNCF x Alibaba 云原生技术公开课》(视频课程)第一期已更新完毕。为了让大家有更好的学习体验,我们把视频课程转为图文,并请讲师重新编辑成文章,在公众号以“从零入门 K8s” 为系列进行每…

C++string容器应用举例

给定一个整数,请将该数各个位上数字反转得到一个新数。 新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。 输入格式 输入共1行,1个整数N。 输出格式 输出共1行,1个整数…

家居灯光控制系统设计 android,基于Android的室内照明控制系统设计与实现

摘要:传统的室内照明系统存在控制不方便、布线困难、智能化程度不高等问题,而随着Android智能手机不断发展,已经可以实现多种控制功能。结合WiFi无线通信技术低功耗、高传输速率、组网方便等特点,适合智能化的室内照明控制系统。基于此提出一种以Android手机为平台,…

比尔盖茨早有预警:对大疫情爆发我们还没准备好

比尔盖茨早已预警,如今全球最大的危险不是核战争,而是高度传染的病毒,不是导弹,而是微生物。新型冠状病毒感染肺炎新增病例数仍在增长,钛媒体根据百度数据统计官方发布显示,截止发稿前1月30日9:30&#xff…

AcWing 3208. Z字形扫描

在图像编码的算法中,需要将一个给定的方形矩阵进行 Z 字形扫描(Zigzag Scan)。 给定一个 nn 的矩阵,Z 字形扫描的过程如下图所示: 对于下面的 44 的矩阵, 1 5 3 9 3 7 5 6 9 4 6 4 7 3 1 3 对其进行 Z 字形扫描后得到长度为 16 的…

写公众号的这一年多

2018年五月,在微信发布公众号助手之时我开通了个人公众号「不止dotNET」,到现在已经一年半多的时间了,非常时期,在家自我隔离,没事写写总结。数据总共发布了 53 篇原创文章,离之前的目标(每周一…

评分较高对鸿蒙文,万倍增幅:鸿蒙至高神,加入诸天万界群

“这是.......”曹操身躯被吸上了天空。咔嚓咔嚓!曹操感觉浑身血液爆涌,筋骨齐鸣,一股气流在他的体内穿透,强大的力量感从体内升起!他的身体散发着淡淡金光,气息渐渐升腾。整个过程大约五息。曹操缓缓落地&…

AcWing 703. 数独检查

**数独是一种流行的单人游戏。 目标是用数字填充9x9矩阵,使每列,每行和所有9个非重叠的3x3子矩阵包含从1到9的所有数字。 每个9x9矩阵在游戏开始时都会有部分数字已经给出,通常有一个独特的解决方案。 给定完成的N2∗N2数独矩阵&#xff0c…

pdf文件内容查看器 -- 采用wpf开发

前言 pdf是一种应用非常广的版式文档格式,已成为事实上的国际标准。关于pdf格式的文章汗牛充栋,本文也是关于pdf格式的文章,但是本文不是纸上谈兵;本人这几周一直研究pdf格式内容,不但对pfd格式的内容有所了解&#xf…

AcWing 126. 最大的和

给定一个包含整数的二维矩阵,子矩形是位于整个阵列内的任何大小为1 * 1或更大的连续子阵列。 矩形的总和是该矩形中所有元素的总和。 在这个问题中,具有最大和的子矩形被称为最大子矩形。 例如,下列数组: 0 -2 -7 0 9 2 -6 2 -4…

​WeihanLi.Npoi 根据模板导出Excel

WeihanLi.Npoi 根据模板导出ExcelIntro原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据模板导出,在 1.8.0 版本中引入了根据…

UC浏览器如何开启html5,如何开启手机uc浏览器中的极速模式

如何开启手机uc浏览器中的极速模式当我们在使用手机的时候,可以下载uc浏览器来浏览网页,为了提升网页的浏览速度,可以开启浏览器中的极速模式,接下来就由小编来告诉大家如何操作。具体如下:1.第一步,打开手…

前端扫盲:什么是API网关?为什么它有用?

API 通常被称为应用程序从后端服务访问数据和业务逻辑的前门。API 本质上是一个软件向其他人或程序提供的接口,允许他们与该软件进行交互。 在创建 API 时,需要选择编程语言(Java、Python、PHP 等)来编写 API 逻辑,还需要将 API 部署到服务器…