當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 智能應(yīng)用
[導(dǎo)讀]最近發(fā)生了一件很有意思的事情,Google發(fā)布了 Android Things 的第一個預(yù)覽版,他們的SDK主要針對3個開發(fā)板(Single Board Computers),Pi 3、Intel的Edison和NXP Pico。

我與Android Things的24小時

我正在參與一個基于Android的物聯(lián)網(wǎng)商用項目,它運(yùn)行在Raspberry Pi 3上。最近發(fā)生了一件很有意思的事情,Google發(fā)布了 Android Things 的第一個預(yù)覽版,他們的SDK主要針對3個開發(fā)板(Single Board Computers),Pi 3、Intel的Edison和NXP Pico。在Pi和Android之間無法建立端口連接,我們只能忍受自制固件的各種問題,這種痛苦真的是無以言表。其中一個最大的問題是它們不支持觸摸屏,甚至連 Element 14 官方出售的版本也不行。我知道Android正在向Pi靠攏,而之前Google向AOSP項目提交的一個 聲明 更是讓每個人為之動容。2016年12月12號,Google發(fā)布了“Android Things”,外加一個可下載的SDK。于是我開始著手研究,并在門上掛上“勿擾”的牌子……

關(guān)于Android Things的疑問

在經(jīng)歷了大量Android工作和一些Pi項目之后(包括現(xiàn)在的這個項目),對于Android和Pi,我不禁有很多疑問。后面我會逐個說明,不過第一個最大的疑問現(xiàn)在已經(jīng)得到了回答——Android Studio完全支持Pi,Pi正式成為一個支持ADB連接的設(shè)備。是的!Android Studio那些超級好用的強(qiáng)大特性最終支持了真實的物聯(lián)網(wǎng)硬件,我們可以使用布局預(yù)覽、調(diào)試系統(tǒng)、源代碼檢查器、自動化測試等等。我為此感到很激動。直到現(xiàn)在,我的很多Pi板載程序都是使用Python來開發(fā),使用運(yùn)行在Pi上面的編輯器(MC)來進(jìn)行SSH連接。這種方式是可行的,而且毋庸置疑,Pi和Python大神們會提出更好的方式,不過這仍然會讓人感覺回到了80年代的軟件開發(fā)時代。我的項目需要為控制Pi的手持設(shè)備編寫Android程序,如果使用之前的方式等于往傷口上灑鹽,而我后來使用Android Studio來開發(fā)“真正”的Android程序,然后使用SSH來完全其它工作,一直到現(xiàn)在。

所有的例子都是有關(guān)上述的3個開發(fā)板,Pi 3是其中一個。通過Build.DEVICE常量可以在運(yùn)行時決定是哪一種設(shè)備,所以你會看到很多類似這樣的代碼:

public static String getGPIOForButton() {
     switch (Build.DEVICE) {
         case DEVICE_EDISON_ARDUINO:
             return "IO12";
         case DEVICE_EDISON:
             return "GP44";
         case DEVICE_RPI3:
             return "BCM21";
         case DEVICE_NXP:
             return "GPIO4_IO20";
         default:
             throw new IllegalStateException(“Unknown Build.DEVICE “ + Build.DEVICE);
     }
 }

這里對GPIO的處理很有意思,因為我只對Pi比較熟悉,所以我只能假設(shè)其它開發(fā)板也是以這種方式工作的。可以在這些地方定義輸入和輸出,并作為到外部世界的主要接口。Pi所使用的Linux發(fā)行版完全支持Python的讀寫操作,但對于Android來說,你必須使用NDK來編寫C++驅(qū)動,然后通過JNI與Java進(jìn)行交互。這樣做不僅增加了難度,還讓構(gòu)建過程變得更加復(fù)雜。Pi設(shè)計了兩個針腳的I2C接口,分別是時鐘和數(shù)據(jù),需要額外的工作來處理它們。I2C是一個強(qiáng)大的可尋址總線系統(tǒng),它可以把多個針腳的數(shù)據(jù)串行化到一個針腳上面。讓我們感到驚喜的是,我們現(xiàn)在可以直接在Android Things里完成這些工作。你只需要調(diào)用read()或write()方法來訪問GPIO針腳,而I2C的操作也很簡單:

public class HomeActivity extends Activity {
    // I2C Device Name
    private static final String I2C_DEVICE_NAME = ...;
    // I2C Slave Address
    private static final int I2C_ADDRESS = ...;
    private I2cDevice mDevice;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Attempt to access the I2C device
        try {
            PeripheralManagerService manager = new PeripheralManagerService();
            mDevice = manager.openI2cDevice(I2C_DEVICE_NAME, I2C_ADDRESS)
        } catch (IOException e) {
            Log.w(TAG, "Unable to access I2C device", e);
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mDevice != null) {
            try {
                mDevice.close();
                mDevice = null;
            } catch (IOException e) {
                Log.w(TAG, "Unable to close I2C device", e);
            }
        }
    }
}

Android Things是基于哪個Android版本?

應(yīng)該是Android 7.0,我們因此可以使用完整的Material Design UI、優(yōu)化工具、安全增強(qiáng)以及之前版本的所有特性,真是太棒了!那么問題來了:未來的平臺更新將以什么方式放出?我們需要單獨對它們進(jìn)行管理嗎?不要忘了,這些設(shè)備不會一直在線,我們也無法奢望總是有移動網(wǎng)絡(luò)或WiFi可用,哪怕是不穩(wěn)定的無線網(wǎng)絡(luò)。

我所擔(dān)心的另一個問題是,從名字上看,Android Things只是Android的一個衍生產(chǎn)物,它的誕生只是為了振奮Arduino市場,而并非為了做出一個強(qiáng)大的操作系統(tǒng)。不過它所給出的 示例 立馬打消了這個疑慮,示例里有些地方甚至使用SVG作為resource(這是Android最近才有的),而不是使用傳統(tǒng)的位圖,雖然使用傳統(tǒng)的位圖也很方便。

既然Android Things是基于Android的,那么Android的一些問題也會不可避免地出現(xiàn)在Android Things上,比如權(quán)限問題。Android Things是為了固定的硬件設(shè)備而設(shè)計的,一旦構(gòu)建完成,用戶一般不會在上面安裝應(yīng)用,所以用戶不會被詢問權(quán)限問題,因為設(shè)備上可能連UI都沒有!所以,在應(yīng)用被安裝到設(shè)備上時,它會被授予所有的權(quán)限。一般情況下,這些設(shè)備都是單應(yīng)用設(shè)備,在設(shè)備啟動時,只有一個應(yīng)用會在上面運(yùn)行。

Brillo發(fā)生了什么?

Brillo是前Google物聯(lián)網(wǎng)操作系統(tǒng)的代號,看起來應(yīng)該是Android Things之前的代號。事實上,你還是能夠看到很多地方在使用Brillo這個名字,特別是GitHub上Android Things示例代碼里的源代碼文件夾名稱。不過這樣的情況會越來越少,因為一切正在向新的王者看齊!

UI指南?

Google發(fā)行了大量關(guān)于Android智能手機(jī)和平臺應(yīng)用的指南,比如如何在屏幕上布局按鈕等等。當(dāng)然,如果能夠遵循這些最佳實踐是再好不過了,不過現(xiàn)在我們再也不能像以前那樣。默認(rèn)情況下,屏幕上什么也沒有,應(yīng)用開發(fā)者需要自己管理所有的組件。包括頂部的狀態(tài)欄、底層的導(dǎo)航欄以及其它所有的組件。多年來,Google告訴Android應(yīng)用開發(fā)者不要自己去渲染一個返回按鈕,因為平臺會為我們提供一個這樣的按鈕,不過現(xiàn)在連這個按鈕也沒有了,因為 Android Things有可能連UI都沒有 !

關(guān)于Google將會提供的服務(wù)支持,我們將作何期待?

我們可以有很多期待,但不包括所有事情。Android Things的首個預(yù)覽版不支持藍(lán)牙,也不支持NFC,而對于物聯(lián)網(wǎng)來說,藍(lán)牙和NFC是非常重要的。而開發(fā)板就支持這些功能,所以我認(rèn)為在不久的將來Android Things也會支持它們。因為沒有通知欄,所以也不會有通知。地圖也不會有。沒有默認(rèn)的軟鍵盤,需要自己安裝一個。因為沒有應(yīng)用商店,所以必須通過ADB安裝應(yīng)用,還要做很多其它操作。

在使用Android Things進(jìn)行開發(fā)時,我嘗試著把為Pi開發(fā)的APK安裝到普通的設(shè)備上,但沒有成功。有個錯誤被拋了出來:“com.google.android.things”庫不存在,說明為Android Things設(shè)備開發(fā)的應(yīng)用無法安裝到其它設(shè)備上。這個看起來是合理的,因為只有Android Things設(shè)備需要這些東西,不過這也會有點局限,因為不僅僅智能手機(jī)或平臺沒有這些庫,其它的模擬器也沒有。也就是說,你只能在Android Things物理設(shè)備上運(yùn)行和測試Android Things應(yīng)用……直到Google在它的物聯(lián)網(wǎng)開發(fā)者社區(qū) 上回答了我所提出的疑問,并提供了一個變通方案。

關(guān)于Android Things生態(tài)系統(tǒng)的演化,我們將做何期待?

我期待能夠看到更多的基于傳統(tǒng)Linux服務(wù)器的應(yīng)用被移植到Android Things平臺上,雖然這些應(yīng)用對于智能手機(jī)和平板來說毫無意義。例如,Web服務(wù)器?,F(xiàn)在已經(jīng)有一些這樣的服務(wù)器,不過還沒有像Apache或Nginx這樣的重型服務(wù)器。物聯(lián)網(wǎng)設(shè)備可能不會有本地的UI,不過可以通過瀏覽器來管理它們,這樣做是可行的,所以需要一種方式來展現(xiàn)Web面板。對于那些著名的通信應(yīng)用來說,它們需要麥克風(fēng)和揚(yáng)聲器,從理論上說,可以支持任何一款視頻通話應(yīng)用,比如Due、Skype、Facebook等等。事態(tài)將會發(fā)展到何種程度都只是我們的猜測。是否會出現(xiàn)應(yīng)用商店?是否會出現(xiàn)廣告?我們能夠避免被黑客控制?從消費(fèi)者的角度來看,物聯(lián)網(wǎng)設(shè)備就是一些具有觸摸屏的聯(lián)網(wǎng)設(shè)備,而且每個人都習(xí)慣了智能手機(jī)的工作方式。

我期待能夠看到硬件的飛速發(fā)展,特別是開發(fā)板設(shè)備,而且能夠處在一個較低的成本水平。Raspberry Pi Zero只要5美元,這個價格低得讓人不可思議,不過它那可憐的CPU和內(nèi)存甚至都無法保證能夠運(yùn)行Android Things。它們什么時候才能運(yùn)行Android Things?很顯然,很多開發(fā)板產(chǎn)商把目標(biāo)瞄準(zhǔn)了Android Things,而且隨著規(guī)?;a(chǎn),一些外圍設(shè)備,比如觸摸屏,很可能只需要2美元左右。

不過,我不認(rèn)為我們會如飛一般跳躍。如果我們把Android Things看成一個無所不包的物聯(lián)網(wǎng)操作系統(tǒng),那么知道一些Android架構(gòu)方面的知識有助于我們了解這個系統(tǒng)。它仍然使用Java語言開發(fā),Java因為它的垃圾回收停頓時間飽受詬病。不過這只是其中的一個方面。一個真正的實時操作系統(tǒng)對時效性具有非常嚴(yán)格的要求,它不能是一個關(guān)鍵性任務(wù)系統(tǒng)。想想那些醫(yī)療應(yīng)用、安全監(jiān)視器、工業(yè)控制器等。從理論上說,如果有必要,Android系統(tǒng)上的Activity或服務(wù)隨時會被停掉。對于手機(jī)來說,用戶可以重啟應(yīng)用,清除其它應(yīng)用,或者重啟設(shè)備。擁有一個心跳監(jiān)測器是很重要的。如果前臺的Activity或服務(wù)正在監(jiān)聽一個GPIO針腳,而信號得不到及時的處理,就會發(fā)生錯誤。Android需要做一些很基礎(chǔ)的修改來支持心跳監(jiān)測,不過到目前為止還沒有聽說有這方面的計劃。

過去的24小時

那么,讓我們回到我的項目上來。我想我可以把之前所做的工作盡可能地移植過來,如果不可避免地碰到一些問題,我可以到G+開發(fā)社區(qū)上尋求幫助。不過除了無法在非Android Things設(shè)備上運(yùn)行應(yīng)用這個問題以外,還沒有碰到其它問題。目前一切運(yùn)行良好!這個項目還用了一些奇怪的東西,比如自定義字體和一些精準(zhǔn)的計時器,這些東西在Android Studio里都得到了完美的支持。我這次給Google打滿分。之后我會做一些實實在在的原型,而不只是視頻或截圖。

藍(lán)圖

物聯(lián)網(wǎng)操作系統(tǒng)目前看起來非常的碎片化。這個領(lǐng)域目前還沒有出現(xiàn)市場領(lǐng)導(dǎo)者,雖然我們經(jīng)常聽到一些天花亂墜的大肆宣傳,但這些還為時過早。Google能否在物聯(lián)網(wǎng)領(lǐng)域也能做得像他們在移動領(lǐng)域所做的那樣?要知道,他們已經(jīng)占據(jù)了90%的移動市場。我相信他們會的。而如果這個成為現(xiàn)實,那么Android Things的出現(xiàn)就是一個起點。

讓我們想想開放軟件和私有軟件之間的戰(zhàn)爭,比如Apple和Google。Apple從來沒有完整開放過他們的軟件,而Google的開源軟件已經(jīng)為很多人帶來了好處?,F(xiàn)在這個問題又出現(xiàn)了,要讓Apple開發(fā)出一個免費(fèi)的物聯(lián)網(wǎng)系統(tǒng),就好比讓它發(fā)布一款免費(fèi)的iPhone一樣難。

物聯(lián)網(wǎng)操作系統(tǒng)的游戲已經(jīng)開始了,而競爭對手們甚至都還沒有做好準(zhǔn)備……

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉