1. 程式人生 > >樹莓派 安裝 刷Android Things 小結

樹莓派 安裝 刷Android Things 小結

一句話說,Android Things就是讓開發者可以使用Android開發工具開發嵌入式裝置。

If you can build an app, you can build a device.

只要你會開發APP,你就能開發智慧裝置。

谷歌2016年12月釋出的Android Things是一個面向物聯網的系統,讓android開發者用原來開發app的方式開發硬體相關的應用,擴充套件了android開發的方向和前景,而谷歌的Android Things已經支援了主流的幾個面向網際網路的幾個晶片(Intel® Edison,NXP Pico i.MX6UL,Raspberry Pi 3)。鑑於開發難度和整合度高低的選擇,選擇了樹莓派作(Raspberry Pi 3)作為實踐的。

Android Things 是Android系統的一個精簡版, 前身是 Brillo -Google 在 2015 年推出的物聯網作業系統。 為了節約那一點點硬體成本,還要增加開發的成本,值得麼?

特性:

 單一自啟動APP,通常裝置會只執行單一的程式,即開發者的APP會自動啟動,系統APP不會呈現出來。

 顯示是可選的,裝置可以沒有螢幕,通過按鈕、觸控、LED燈、語音或其他形式與使用者互動。

1.材料準備

材料都可以在淘寶上輕易購買,包括樹莓派主機板,sdcard(最好8g或者以上),sdcard讀卡器,電源,HDMI轉VGA轉換器(如果顯示器支援hdmi可以直接用HDMI線,因為樹莓派主機板視訊口是HDMI),網線。

2.刷系統映象

(1)首先需要下載Android Things系統映象,目前最新的android Things是預覽版,可以到下面的地址下載相對應晶片的系統映象。

(2)用sdcard讀卡器連線sdcard到電腦上。

(3)解壓剛才下載的系統映象。

(4)寫入映象到sdcard的工具,可以根據不同系統自行選擇,本教程使用windows系統,可以到https://sourceforge.net/projects/win32diskimager/  這個網站下載Win32 Disk Imager工具。執行win32 DiskImager ,最右邊選擇你sdcard的碟符(備註不要選到了其他的硬碟或移動儲存裝置,導致造成不必要的損失),然後選擇映象路徑,再然後點選write等待寫入結果。寫入完後把sdcard插到樹莓派上,插上網線(網線另一端連線路由),插上視訊輸出線連線到顯示器,USB資料線連線電腦到樹莓派,樹莓派就會開始啟動系統了,系統啟動後,螢幕會出現區域網的ip。

(5)開啟命令列工具,輸入下面命令(ip -address就是顯示器上android things系統顯示的介面),不出情況的話就提示connected to <ip-address>:5555  這樣就成功連線到樹莓派。

adb connect <ip-address>

3.連線WIFI

如果不想每次除錯都要電腦連線樹莓派的話,可以設定樹莓派連線wifi(必須要完成上面連線到樹莓派才能設定無線wifi連線)

(1)傳送意圖到Android Things的wifi服務模組的命令如下

  1. $ adb shell am startservice \
  2. -n com.google.wifisetup/.WifiSetupService\
  3. -a WifiSetupService.Connect\
  4. -e ssid <Network_SSID>\
  5. -e passphrase <Network_Passcode>

(2)通過adb 的logcat確定你的連線是否成功

$ adb logcat -d |grepWifi

 輸入命令列後,不出情況一般出現下面的輸出

  1. ...
  2. V WifiWatcher:Network state changed to CONNECTED
  3. V WifiWatcher: SSID changed:...
  4. I WifiConfigurator:Successfully connected to...

(3)測試你的樹莓派是否能訪問外網,命令

  1. $ adb shell ping 8.8.8.8
  2. PING 8.8.8.8(8.8.8.8)56(84) bytes of data.
  3. 64 bytes from8.8.8.8: icmp_seq=1 ttl=57 time=6.67 ms
  4. 64 bytes from8.8.8.8: icmp_seq=2 ttl=57 time=55.5 ms
  5. 64 bytes from8.8.8.8: icmp_seq=3 ttl=57 time=23.0 ms
  6. 64 bytes from8.8.8.8: icmp_seq=4 ttl=57 time=245 ms

4.編寫Android Things程式(Android Studio編寫)

在開始編寫Android Things程式之前,

(1)確保你的sdK tools版本是24或者24以上

(2)確保你的sdk 支援API支援24或者更高版本。

新增依賴

(1)往app的模組裡的build.gradle檔案新增如下依賴

  1. dependencies {
  2.     provided 'com.google.android.things:androidthings:0.1-devpreview'
  3. }

(2)往manifest .xml檔案新增

    1. <application...>
    2. <uses-libraryandroid:name="com.google.android.things"/>
    3.     ...
    4. application>

宣告主Activity

要把應用執行在嵌入式裝置(本教程中的樹莓派),必須包含一個CATEGORY_LAUNCHER這樣的Intent Filter,這樣,才能在部署和除錯應用的時候,Android Studio才能啟動預設的Activity。

具體需要在Manifest宣告的設定如下。

  1. <application
  2. android:label="@string/app_name">
  3. <uses-libraryandroid:name="com.google.android.things"/>
  4. <activityandroid:name=".HomeActivity">
  5. <intent-filter>
  6. <actionandroid:name="android.intent.action.MAIN"/>
  7. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  8. intent-filter>
  9. <intent-filter>
  10. <actionandroid:name="android.intent.action.MAIN"/>
  11. <categoryandroid:name="android.intent.category.IOT_LAUNCHER"/>
  12. <categoryandroid:name="android.intent.category.DEFAULT"/>
  13. intent-filter>
  14. activity>
  15. application>

物聯網已不是新鮮事,我們的生活中,不知不覺已經開始用上了這類產品。

在景點遊玩結束時,我會先通過手機往被在停車場曝晒中小車傳送一條“通風”指令,這樣我就不用駕駛“桑拿房”回家了。

目前IoT領域未能形成完整的生態:如每個汽車廠商均有自己的車聯網平臺,智慧家居廠商的產品只能用自家或合作伙伴的App連線。各自圈地,又互不相容。