2015/05/05 星期二php
计划:html
- 点击场景的一个Item时包含如下操做:读取该场景的数据表à根据表格中的include_table和include_id的值分别去对应数据表取状态à将状态存进数组à将数组做为参数传递给显示页面à显示页面显示列表;
- 解决问题:从场景详细页面点击返回按钮时,返回设备页面,而不是场景页面,缘由在于sceneFragment通过onPause()和onStop()以后再生成时调用onStart()和onResume(),而onResume()函数中设定了setTabSelect(0),即默认为设备页面。
完成:java
- 开发场景详细页面,新建两张position表格,起床对应position0表,回家对应position2表,点击Item0和Item2时,跳转入SceneItemActivity类中,显示表中的数据;当点击SceneFragment中Item的开关按钮时,改变对应表中设备的开关状态;
- 删除MainActivity中onPause()函数中的DeviceFragment=null;语句,便可解决问题;
- 遇到问题:当场景中的开关改变其包含的灯具状态后,照明页面的灯具状态没有更新,尝试解决,没有成功;
2015/05/06 星期三android
计划:git
- 解决照明页面从新生成时灯具变多的问题;
- 解决灯具状态更新的问题;
完成:github
- 之因此照明页面在通过onStop()、onDestoryView()以后再生成时灯具变多,是由于再生成包含onCreatView()、onStart()、onResume(),而onCreatView()中的数组定义成了全局变量,将其改成局部变量便可;
- 添加环境信息的图标;
- 没能解决灯具状态更新的问题,网上给出的方法主要有两种:一种是adapter.notifyDataSetChanged();另外一种是使用线程,在点击场景的状态开关时,发送消息,刷新灯具状态。第一种方法容易理解,可是刷新操做在何处、如何调用等问题尚未弄清楚;第二种方法须要学习线程的知识。
2015/05/07 星期四数据库
计划:数组
- 继续研究场景开关改变后,灯具状态开关的刷新显示问题;
- 补充另外两个场景的详细页面;
完成:服务器
- 完成照明状态开关刷新操做,使用的方法是
在LightFragment中定义函数:多线程
public void getRefresh() {
adapter.notifyDataSetChanged();
}
在DeviceFragment中定义函数:
public Fragment getLightFragment(){
return lightFragment;
}
MainActivity中设备菜单下添加语句:
LightFragment lightFragment = (LightFragment) ((DeviceFragment) deviceFragment).getLightFragment();
lightFragment.getRefresh();
注意:要调用LightFragment中的getRefresh()函数须要实例化LightFragment,此处万万不能使用 LightFragment lightfragment = new LightFragment();不然程序会报空指针异常的错误。
- 上述操做的数据基础是:创建一个全局变量的类DataArray,在读取数据库状态以后将照明和窗帘的状态信息存储进这个全局变量,操做场景开关时,改变全局变量的值,这样在切换底部导航栏时进行刷新操做才能有效。
- 修改窗帘页面的刷新操做;
- 添加了场景的详细页面;
至此页面的开发已基本完成,下一步的主要任务是:学习通讯的知识,完成硬件链接与调试。
2015/05/08 星期五
计划:
- 将从数据库获取数据的操做移植到线程中去;
完成:
- 新建DataArrayThread类,将打开数据库、取得数据库数据等操做转移到单独的线程中执行;
参考资料:
Java建立线程的两个方法
实现Runnable接口相对于扩展Thread类来讲,具备无可比拟的优点。这种方式不只有利于程序的健壮性,使代码可以被多个线程共享,并且代码和数据资源相对独立,从而特别适合多个具备相同代码的线程去处理同一资源的状况。这样一来,线程、代码和数据资源三者有效分离,很好地体现了面向对象程序设计的思想。所以,几乎全部的多线程程序都是经过实现Runnable接口的方式来完成的。
出现java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()异常
缘由:在Android中不容许Activity里新启动的线程访问该Activity里的UI组件,这样会致使新启动的线程没法改变UI组件的属性值。
2015/05/11 星期一
计划:
- 学习灯具提供的API,进行灯具链接开发;
- 进行灯具链接测试;
完成:
- 初步完成灯具链接的开发,即调用灯具的API,进行开关控制;
- 发现不少问题,如初次进入程序,灯具页面列表为空;不实现飞利浦灯具实际控制时点击开关程序崩溃等,明天尝试修复;
参考资料:
PhilipsHueSDK-Java-MultiPlatform-Android
2015/05/12 星期二
计划:
- 添加判断机制,修复Bug;
- 实现场景状态下控制实际灯具;
- 修改改变场景状态时,灯具刷新机制,以前采用的在切换底部菜单栏时刷新列表并不符合实际;
- 打开程序时,刷新此刻灯具的状态,即若打开程序以前灯是亮着的,则程序中灯具的状态也应该是打开的;
完成:
- 修复改变开关状态时程序崩溃的问题,即增长判断机制;
- 实现改变场景状态时,下属实际灯具同时改变其状态;
- 未对场景状态改变时,灯具列表状态刷新时机作修改,由于显示刷新和灯具实际状态的刷新是两回事,点击开关,灯具状态即刻改变,但灯具状态的显示并无必要当即刷新;
-
参考资料:
199刀飞利浦HUE惨遭拆解 阿拉丁神灯小队是神马?
Philips(飞利浦) Hue LED(知乎)
百度文库
2015/05/13 星期三
计划:
- 链接灯具,拍照;
- 学习飞利浦灯具文档,尽可能理解其机制;
- 开发注册登录模块;
完成:
- 拍照,先是任さん跟我一块儿去拍的,可是由于拍到的画面中涉及到了公司的其余开发,所以做废,最后只拍了在桌子上的带灯;
- 浏览灯具文档,弄清楚了获取灯具状态的原理,和我以前使用的大体相同,只不过我并无使用service、thread等;
参考资料:
Android:布局实例之模仿京东登陆界面
Android链接SQLServer详细教程(数据库+服务器+客户端)
基于android的远程视频监控系统(已开放源码)
android开发之多线程实现方法概述
Android数据存储(3)SQLite简介和简单的登陆与注册源代码
2015/05/14 星期四
计划:
- 总结应用的功能框架;
- 总结应用的文件结构;
- 开发登录注册页面;
完成:
- 总结应用的功能框架;
- 总结应用的文件结构;
- 基本完成登录和注册页面的开发,可是没有记住密码自动登陆的功能,所以每次都须要登陆,较为繁琐。
参考资料:
仿京东登录界面
2015/05/14 星期五
完成:
1. 毕设总结,致谢;
2. 整理开发过程当中所参考的资料;