一种Android端智能家居远程控制方案的实现
播消息,所以在设计短信接收客户端时一般采用监听数据库方式。
当客户端接收到短信后会将其插入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的方式,并取得很好的效果。本系统设计合理,性能稳定,对其他工程设计也具有一定参考价值。
智能家居 Android LPC1766 GTM900-B 空调 控制信息 相关文章:
- 基于Linux/Qt的智能家居系统设计(07-07)
- 基于ARM-linux的智能监控系统设计(08-25)
- 基于Linux的智能家居管理方案(01-05)
- 基于Android智能家居远程监控系统设计(12-01)
- 基于ZigBee无线网络的嵌入式智能家居监控系统(03-18)
- DIY智能家居之多功能一体化触屏遥控器的设计实现(04-14)