SensorTile物联网开发套件(6)——DIY高温报警器

往期回顾

SensorTile物联网开发套件(1)——概述

SensorTile物联网开发套件(2)——功能展示

SensorTile物联网开发套件(3)——程序烧录与注册

SensorTile物联网开发套件(4)——DIY遥控LED

SensorTile物联网开发套件(5)——DIY相互通信

先上效果图:

高温报警器

图中让SensorTile靠近盛着热水杯子,如果温度高于30摄氏度,那么APP界面就显示为红色,低于等于30就显示透明。

这个DIY主要是展示如何获取传感器数值,SDK-Example显示出来的都是字符串,无法进行数学运算,转换也很麻烦,不过SDK中各个Feature都提供了获取传感器数值的API,这里就以获取温度的API为例来介绍下。

用AS打开SDK,在FeatureListActivity类中找到onUpdate函数,仿照之前做的DIY遥控LED灯,在函数中添加如下函数:

  1. if(f.getName().equals("Temperature")){//if the Feature is Temperature

  2. FeatureTemperature Temperature = mNode.getFeature(FeatureTemperature.class);

  3. final float Temp = Temperature.getTemperature(sample);//get temperature

  4. //System.out.println(Temp);//print the temperature

  5. FeatureListActivity.this.runOnUiThread(new Runnable() {//change color in the UI thread

  6. @Override

  7. public void run() {

  8. if (Temp > 30) {//if the temperature is greater than 30 degree centigrade

  9. mFeatureList.setBackgroundColor(Color.argb(255, 255, 0, 0));//change the background to red

  10. } else {

  11. mFeatureList.setBackgroundColor(Color.argb(0, 0, 0, 0));//change the background to transprent

  12. }

  13. }

  14. });

  15. }

程序都写好了注释,首先判断需要更新的Feature是不是Temperature,然后获取Temperature的类,然后定义一个final类型的变量Temp,注意这里一定要用final类型,不然在UI线程中报错。然后可以采用System.out.println输出到AS上的logcat,接下来就在UI线程中判断变量Temp是否大于30度,大于就将整个ListView背景变为红色,否则变为透明。

好啦,所有代码写完了,整个功能实现就这一段,不需要再在其他地方添加了。

使用时要注意,需要先点击Feature列表中的Temperature,这样就Notification了Temperature,否则APP不会接收温度信息。

这个DIY演示了SKD中类似getXX(Samplesample)函数的用法,为以后更加复杂的应用打好基础。

补充说明:所有的代码都进行了版本的管理,在APP中体现在设备搜索界面的状态栏上,被收缩了,点击后可以会显示出版本号,在menu_scan.xml中添加如下代码:

  1. <item

  2. android:orderInCategory="2"

  3. android:title="V1.0.2"

  4. app:showAsAction="never"/>

之前有V1.0.0、V1.0.1,现在到了V1.0.2。在github中用Tag对不同的版本进行区分,可以下载任何一个Tag下的版本。同时在github的README.md进行了功能介绍,描述了各个版本修改的内容以及修改时间。

帖子中程序源码:https://github.com/flyloong/BlueSTSDK/tree/V1.0.2

(0)

相关推荐