接上一篇博文, 來繼續完善這個例子; 主要是新增了2個Activity, 顯示裝置與視頻通道的TreeActivity, 瀏覽某一個通道的即時畫面的ImageActivity. TreeActivity主要就是使用一個ListView控制項按層次關係來顯示地區、裝置、視頻通道資訊。主要涉及以下幾個方面知識點:
1、通過HTTP POST方式擷取服務端響應的JSON格式資料
json格式當前被大量應用於web資料轉送,你可以在這裡瞭解什麼是json;因為服務端採用Java開發,可以採用的json庫很多,比較常見的如org.json(不需要額外的jar包,Android內建json格式資料解析包就是這個;但好像對自訂實體類支援不太好,也有可能是我不會用,因為以前做web開發都是採用xml來傳輸服務端響應的資料),json-lib(功能強大,但需要附帶一些其他jar包,其通過反射方式來實現對使用者自訂bean支援),最終啥都沒有採用,直接Override toString() 方法簡單處理下。
代碼 @Override
public String toString()
{
if(entType == 1)
{
return "{\"id\":" + id + ", \"code\":\"" + beloneto + "\", \"name\":\"" + hostName + "\"}";
}
else
{
return "{\"id\":" + id + ", \"code\":\"" + beloneto + "\", \"name\":\"" + hostName
+ "\",\n \"entType\":" + entType + ",\"type\": " + dvrType + ", \"ip\":\""
+ ip + "\",\n\"channel\":" + VchList.toString() + "}\n";
}
}
2、自訂ListView Adapter、清單項目布局
可以通過自訂Adapter類靈活控制資料呈現與相關商務邏輯的處理,實現帶表徵圖顯示、簡單樹形層次
3、簡單資料存放區配置SharedPreferences
SharedPreferences最終產生就是一個xml檔案,很類似於Asp.Net開發中的Web.config或WinForm下的App.config,可以用於一些配置資訊的存放,功能等同於Windows SDK開發中常用的ini檔案。剛好部落格園Terry_龍有一篇專門博文 Android 小項目之--資料存放區【Shared Preferences】(附源碼)講述SharedPreferences的使用,大家可以參考。
4、Intent、Bundle類簡單使用
接下來再簡單介紹下ImageActivity,主要是擷取TreeActivity通過Bundle傳遞過來的視頻通道ID、名稱等資訊,然後開啟一線程,間隔指定時間即時擷取該路視頻的視頻畫面,關鍵就是通過URLConnection、BitmapFactorydecodeStream(InputStream is)方法產生Bitmap,然後交給ImageView控制項顯示。該線程與UI線程互動通過訊息Handler.sendMessage(Message msg)來處理,如果連續嘗試請求5次資料都失敗,則彈出對話方塊提示使用者,並關閉當前ImageActivity。
5、全球化、本地化資源
在Android上處理這方面倒是比較容易,一句話就是定義對應的資源;在res目錄下建立對應目錄如values-en-rUS表示使用者在設定-->選擇地區為美國時介面對應字串顯示,橫豎屏、不同解析度處理也是通過類似方式處理,例如drawable-land-160dpi
一個好的應用服務需要好的大量內容提供支援,我在網上搜尋了一把,很遺憾沒有找到對外開放允許訪問的裝置;如果有對公用開放的,如道路監控網路攝影機、動物園、公園啥的,倒可以好好利用一把,看看路況,看看風景,如果能夠看看大熊貓啥的那是更加好。AndroidDemo2.rar也就是說你下載到的demo是無法看到效果的,據說國外一些裝置倒是支援http或rtsp訪問並返回JPEG圖片,也有不少裝置對公眾開放,如在CodeProject上看到的採用C#開發多路IP攝像機的視頻監控系統(效果下),好像就是採用這一模式實現的。
由於自己也是剛開始學習Android,相關資料方面 - 電子文檔eoeAndroid特刊以及近期在部落格園連載的大話企業級Android開發都挺不錯的,可以讓初學者能夠快速瞭解什麼是Android,順利進入Android開發領域。書籍方面部落格園知識庫就有介紹,以及相關部落格內容也很多,可以看我博文Android學習資料匯總中的簡單整理;當然更加詳盡的資源,如果你有安裝Android sdk 可以在其目錄下找一下docs檔案夾, 這個是google提供的類似於msdn的本地文件庫,只是好像是英文的,但內容很全,帶所有api說明(汗一下先,這個當前我利用遠遠不夠)。