最小物聯網系統(九)——Android客戶端
加上之前的部分,我們算是把開源的地方做了一個遍,因為Windows Phone需要在Windows 8上開發的原因,加上我沒有Macbook以及iPhone,所以在這裡只會有一個Android的示例。當然,原因上也是一樣的,相信這些也不會很難。
原理上和Raspberry PI的原理很像,也就是GET資料,然後解析,也和服務端差不多。當然在最開始的程式碼裡有撥打電話、發簡訊等等功能,只是我們似著簡化系統為我們想要的理想化模型。
原始碼地址Home-Anywhere
Android開發
寫在這裡的原因是,因為我也不太擅長,所以也給不了多少指導。只是我試著去寫過這樣一個程式,有了幾個版本,所以算是知道怎樣去開發,但是相比較於專業於我的人還是有很多不足,所以希望懂得的人給些建議和意見。
淺析
我們需要的庫和在Raspberry PI上的類似,如果你不需要的話,可以看看之前的文章:
因為CSDN上發這些文章已經沒有足夠的必要,在之前的部分文章實在上是針對這部分寫的, 只是在自己的部落格上梳理了一遍。
我們還要做的事情就是有一個RESTful的庫,以及解析JSON用的。
於是就有了下面兩個
RESTclient
這個類的原文在calling-web-services-in-android-using-httpclient,專門用於REST用的,如果熟悉的人我想一看就知道了。
GSON
這個庫來自於Google,一個不錯的庫。
所以我們就構成了開發所需的兩部分基礎。
Android
關於Android開發環境的配置這個網上有,最簡單的辦法是直接下載一個Android Studio。
下面只是列舉一些程式碼以及可能會遇到的問題。
Android 4.0 Web問題
如在原始碼裡看到的那樣,
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
這部分用於Android 4.0的網路,2.*可以不需要。
JSONObject 以及 JSONArray
會產生下面這些程式碼的原因是下載下來的JSON資料是類似於二維陣列,所以需要轉換,下面的程式碼有些醜陋,但是可能工作得很好。
JSONArray jArray = new JSONArray(client.getResponse());
JSONObject jObj=jArray.getJSONObject(0);
handlerData的由來
public GsonBuilder gsonb = new GsonBuilder();
public Gson gson = gsonb.create();
typePhoData phoData;
public handlerData(JSONObject jObj){
phoData = gson.fromJson(jObj.toString(),
typePhoData.class);
}
public int get_id(){
return phoData.id;
}
public double get_sensors1(){
return phoData.sensors1;
}
public double get_sensors2(){
return phoData.sensors2;
}
public double get_temperature(){
return phoData.temperature;
}
public int get_led1(){
return phoData.led1;
}
public class typePhoData{
public int led1;
public double temperature;
public double sensors1;
public double sensors2;
public int id;
}
在某些程度上,我好像將這些程式碼給複雜化了,直接放在原文裡可能會好一點,不過造成這種錯覺的主要原因可能是受JAVA語言的影響,不過從軟體工程的某些角度上來說,這樣應該會好一點。 其他的:
- typePhoData的命名可能有些不盡人意,但是暫時沒有想到一個合適的
- 用過幾天Ruby後,似乎這個不算是一個問題
- 如果你要修改的話,相信這個介面也不難,也許比原來的簡單,前提是你看過原來的程式碼。
整理完閉。
REST POST
如果你需要POST,又懶得去看原文,那麼POST程式碼在下面,只是因為我暫時沒有時間去研究Android裡面的這些,以及怎樣繼續這個專案,因為最小的話,似乎已經不再需要新增任何東西了。
RestClient clientPost = new RestClient(url);
clientPost.AddParam("temperature", "23.1");
clientPost.AddParam("led", "true");
clientPost.AddParam("title", "from android");
clientPost.AddParam("more", "nEW tESET");
try {
clientPost.Execute(RequestMethod.POST);
if(client.getResponseCode()!=200){
vshow.setText(clientPost.getErrorMessage());
}
String response2 = clientPost.getResponse();
vshow.setText(response2.toString());
} catch (Exception e) {
vshow.setText(e.toString());
}
大致上是類似的,注意一下都是字元就行了。
相關文章
- 最小物聯網系統——Dashboard
- 最小物聯網系統(三)——建立RESTfulREST
- 最小物聯網系統(五)——Laravel RESTful模板化LaravelREST
- 最小物聯網系統(四)——詳解Laravel的RESTfulLaravelREST
- 最小物聯網系統(六)——Ajax打造視覺化視覺化
- 最小物聯網系統(七)——與伺服器通訊伺服器
- 最小物聯網系統設計——給Laravel新增測試Laravel
- 最小物聯網系統(八)——與微控制器通訊
- 搭建簡易的物聯網服務端和客戶端-Nodejs_PM2(十八)服務端客戶端NodeJS
- powerVM客戶端系統盤克隆客戶端
- VNC客戶端推薦,Windows系統下VNC客戶端推薦VNC客戶端Windows
- 物聯網作業系統列表作業系統
- flask框架圖書管理系統客戶端Flask框架客戶端
- 騰訊物聯網作業系統正式開源,最小體積僅1.8KB作業系統
- 最小物聯網系統(二)——RESTful(一)Laravel安裝與資料庫設定RESTLaravel資料庫
- win10系統maven客戶端安裝教程_win10系統maven客戶端安裝步驟Win10Maven客戶端
- 阿里雲物聯網 .NET Core 客戶端 | CZGL.AliIoTClient:4. 裝置上報屬性阿里客戶端client
- centos7系統msyqldump 客戶端安裝CentOS客戶端
- 物聯網系統時代:iOS、安卓拜拜?iOS安卓
- 谷歌Android正成為物聯網標準作業系統谷歌Android作業系統
- 網頁搜尋客戶端網頁客戶端
- 縱論物聯網(六):基於Linux的物聯網作業系統Linux作業系統
- 物聯網資料卡系統原始碼——物聯網技術架構圖原始碼架構
- 專案分享九:客戶端的異常處理客戶端
- 造紙廢水處理PLC遠端監控物聯網系統
- 數控磨床資料採集遠端監控物聯網系統
- flutter版本的玩Android客戶端FlutterAndroid客戶端
- 有Android還不夠 谷歌正開發物聯網系統BrilloAndroid谷歌
- 01-物聯網專案-物美智慧-系統搭建
- 物聯網應用之 - 智慧搜尋系統
- 物聯網資料卡系統原始碼——物聯網的主要應用領域原始碼
- 網狐客戶端-win32客戶端Win32
- oracle取客戶端網路卡地址Oracle客戶端
- Android實現Thrift服務端與客戶端Android服務端客戶端
- 物聯網公司應該遵循的九個因素
- 當物聯網系統出現故障:使用低質量物聯網資料的風險
- 縱論物聯網(五):除了Linux,還有什麼物聯網作業系統Linux作業系統
- 如何篩選CRM客戶系統無效客戶