微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种Android端智能家居远程控制方案的实现

一种Android端智能家居远程控制方案的实现

时间:10-29 来源:互联网 点击:

播消息,所以在设计短信接收客户端时一般采用监听数据库方式。

当客户端接收到短信后会将其插入SQLite数据库,数据库发生变化会触发内容观察者——ContentObserver。

ContentObserver类似于一个触发器,当其所观察的Uri发生变化,这个触发器就会触发来执行相应的处理。主要方法的说明略——编者注。

本系统在onChange的方法中,利用Context实例对象的getContentResolver方法获得一个ContentResolver对象,然后调用Content Reso lver的query方法获取当前数据库中的短消息。具体代码略——编者注。

对于得到的短消息通过Cursor对象的getColumnIndexOrThrow方法获取其thread_id,id和body内容。对于在数据库中的短消息,为了保证对用户的透明传输,要调用ContentResolver对象的delete方法将收件箱中的短消息删除。具体代码略——编者注。

ContentObserver接收短信模块需要在清单文件AndroidManifest.xml中加入允许接收短信的权限:

2.3 Handler机制

对于使用ContentObserver接收到房间温度信息后,通过Android的Handler机制将信息传送到主activity显示。在Android中,主程序会创建一个Looper对象,在Looper对象初始化时候会创建一个消息队列Message Queue用来存放线程放入的消息。用户可以构造一个Handler对象与Looper沟通,以便将消息push到消息队列中。当主线程检测到有新消息进入消息队列后,首先判断该消息对应的Handler,然后将消息分发到指定的Handler处理。

系统中通过ContentObserver继承类SMSContentObserver的构造函数将在activity中定义的Handler对象传入SMSContentObserver中,然后调用Handler对象的obtainMessage方法获得一个message对象,最后调用message对象的sendToTarget方法将控制消息发送到消息队列,在activity中定义了handleMessage函数用来处理得到的控制消息。具体代码略——编者注。

2.4 Android终端效果

Android客户端控制界面见图6,当点击“获取温度”按钮,Android端会自动向系统控制端发送短信“1:O:O:00”,这样系统控制端会检测到是1类控制信息,则返回每个房间温度。

当需要设置某个房间空调的丁作方式,则通过点击“设置空调”按钮左侧的“房间号”、“空调模式”和“设置温度”等三个下拉列表(Spinner)来设置。如设置房间号为“房间二”,空调模式为“制冷”,设置温度为“25℃”,然后点击“设置空调”按钮,安卓端会自动发送2类控制信息“2:2:2:25”到系统控制端,系统接收到控制信息会处理后返回设置是否成功消息。安卓端解析后将其显示。当需要关闭某个房间空调,可以通过“关闭空渊”按钮左侧的“要关闭空调所在房间号”下拉列表实现,比如选择“房间五”,然后点击“关闭空调”按钮,Android端即把3类控制信息“3:5:0:00”发送到系统控制端,系统控制端处理后将空调关闭状态返回。

结语

智能家居中的远程控制方式有很多,本系统结合Androld终端的用户友好型界面,采用自定义协议方式,设计了一套基于短消息的空调控制系统。在Android终端接收返回信息的两种方式中,ContentObserver因其稳定性在工程实践中使用较多,本系统最终也是采用了Cont entOb—server的方式,并取得很好的效果。本系统设计合理,性能稳定,对其他工程设计也具有一定参考价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top