20150505

2015/05/05         星期二php

計劃:html

  1. 點擊場景的一個Item時包含如下操做:讀取該場景的數據表à根據表格中的include_table和include_id的值分別去對應數據表取狀態à將狀態存進數組à將數組做爲參數傳遞給顯示頁面à顯示頁面顯示列表;
  2. 解決問題:從場景詳細頁面點擊返回按鈕時,返回設備頁面,而不是場景頁面,緣由在於sceneFragment通過onPause()和onStop()以後再生成時調用onStart()和onResume(),而onResume()函數中設定了setTabSelect(0),即默認爲設備頁面。

 

完成:java

  1. 開發場景詳細頁面,新建兩張position表格,起牀對應position0表,回家對應position2表,點擊Item0和Item2時,跳轉入SceneItemActivity類中,顯示錶中的數據;當點擊SceneFragment中Item的開關按鈕時,改變對應表中設備的開關狀態;
  2. 刪除MainActivity中onPause()函數中的DeviceFragment=null;語句,便可解決問題;
  3. 遇到問題:當場景中的開關改變其包含的燈具狀態後,照明頁面的燈具狀態沒有更新,嘗試解決,沒有成功;

 

2015/05/06         星期三android

計劃:git

  1. 解決照明頁面從新生成時燈具變多的問題;
  2. 解決燈具狀態更新的問題;

完成:github

  1. 之因此照明頁面在通過onStop()、onDestoryView()以後再生成時燈具變多,是由於再生成包含onCreatView()、onStart()、onResume(),而onCreatView()中的數組定義成了全局變量,將其改成局部變量便可;
  2. 添加環境信息的圖標;
  3. 沒能解決燈具狀態更新的問題,網上給出的方法主要有兩種:一種是adapter.notifyDataSetChanged();另外一種是使用線程,在點擊場景的狀態開關時,發送消息,刷新燈具狀態。第一種方法容易理解,可是刷新操做在何處、如何調用等問題尚未弄清楚;第二種方法須要學習線程的知識。

 

2015/05/07         星期四數據庫

計劃:數組

  1. 繼續研究場景開關改變後,燈具狀態開關的刷新顯示問題;
  2. 補充另外兩個場景的詳細頁面;

完成:服務器

  1. 完成照明狀態開關刷新操做,使用的方法是

在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();不然程序會報空指針異常的錯誤。

  1. 上述操做的數據基礎是:創建一個全局變量的類DataArray,在讀取數據庫狀態以後將照明和窗簾的狀態信息存儲進這個全局變量,操做場景開關時,改變全局變量的值,這樣在切換底部導航欄時進行刷新操做纔能有效。
  2. 修改窗簾頁面的刷新操做;
  3. 添加了場景的詳細頁面;

至此頁面的開發已基本完成,下一步的主要任務是:學習通訊的知識,完成硬件鏈接與調試。

 

2015/05/08         星期五

計劃:

  1. 將從數據庫獲取數據的操做移植到線程中去;

完成:

  1. 新建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         星期一

計劃:

  1. 學習燈具提供的API,進行燈具鏈接開發;
  2. 進行燈具鏈接測試;

完成:

  1. 初步完成燈具鏈接的開發,即調用燈具的API,進行開關控制;
  2. 發現不少問題,如初次進入程序,燈具頁面列表爲空;不實現飛利浦燈具實際控制時點擊開關程序崩潰等,明天嘗試修復;

參考資料:

PhilipsHueSDK-Java-MultiPlatform-Android

 

2015/05/12         星期二

計劃:

  1. 添加判斷機制,修復Bug;
  2. 實現場景狀態下控制實際燈具;
  3. 修改改變場景狀態時,燈具刷新機制,以前採用的在切換底部菜單欄時刷新列表並不符合實際;
  4. 打開程序時,刷新此刻燈具的狀態,即若打開程序以前燈是亮着的,則程序中燈具的狀態也應該是打開的;

完成:

  1. 修復改變開關狀態時程序崩潰的問題,即增長判斷機制;
  2. 實現改變場景狀態時,下屬實際燈具同時改變其狀態;
  3. 未對場景狀態改變時,燈具列表狀態刷新時機作修改,由於顯示刷新和燈具實際狀態的刷新是兩回事,點擊開關,燈具狀態即刻改變,但燈具狀態的顯示並無必要當即刷新;
  4.  

參考資料:

199刀飛利浦HUE慘遭拆解 阿拉丁神燈小隊是神馬?

Philips(飛利浦) Hue LED(知乎)

百度文庫

 

 

2015/05/13         星期三

計劃:

  1. 鏈接燈具,拍照;
  2. 學習飛利浦燈具文檔,儘可能理解其機制;
  3. 開發註冊登錄模塊;

完成:

  1. 拍照,先是任さん跟我一塊兒去拍的,可是由於拍到的畫面中涉及到了公司的其餘開發,所以做廢,最後只拍了在桌子上的帶燈;
  2. 瀏覽燈具文檔,弄清楚了獲取燈具狀態的原理,和我以前使用的大體相同,只不過我並無使用service、thread等;

參考資料:

Android:佈局實例之模仿京東登陸界面

Android鏈接SQLServer詳細教程(數據庫+服務器+客戶端)

基於android的遠程視頻監控系統(已開放源碼)

android開發之多線程實現方法概述

Android數據存儲(3)SQLite簡介和簡單的登陸與註冊源代碼

 

2015/05/14         星期四

計劃:

  1. 總結應用的功能框架;
  2. 總結應用的文件結構;
  3. 開發登錄註冊頁面;

完成:

  1. 總結應用的功能框架;
  2. 總結應用的文件結構;
  3. 基本完成登錄和註冊頁面的開發,可是沒有記住密碼自動登陸的功能,所以每次都須要登陸,較爲繁瑣。

參考資料:

仿京東登錄界面

 

2015/05/14         星期五

完成:

  1. 畢設總結,致謝;

  2. 整理開發過程當中所參考的資料;

本站公眾號
   歡迎關注本站公眾號,獲取更多信息