Android Wear 開發入門

? ? ? 大家好,我是陸嘉杰,我是一名Android開發者。我想和大家進行一些技術交流,希望越來越多的人能和我成為好朋友。

? ? ? 大家都知道,智能手表是下一個開發的風口,而這方面的技術又屬于前沿,所以和大家分享下Android Wear的開發流程。

? ? ? 首先,我推薦大家使用Android Studio來進行Wear的開發,這也是谷歌推薦的,本次講授過程也將以Android Studio作為開發集成環境進行。

? ? ?下面我們來創建Android Wear項目。

請注意,Android Wear項目中同時包含mobile和wear兩部分,所以在創建時,應該同時勾選Phone and Tablet和Wear,這里我們選擇Wear的Minimum SDK為API 20,這也是為了適應更多的系統版本,phone的API可根據需求選擇,這里我們選擇API 18。

mobile部分的項目生成過程和普通的App開發一樣,下面我們來看看wear部分:

我們選擇Blank Wear Activity,單擊Next


點擊Finish


大家來看看項目的結構,項目有mobile和wear兩部分,同時具有mobile和wear兩個build.gradle。至此,我們的Android Wear項目就成功創建了。

下面,我們來創建Android Wear模擬器:

單擊AVD Manager,選擇Wear,可以看到此處有兩種模型:Round和Square。

這里我們選擇Round,目前大多數人用的是Moto360,所以我們也常用Round來進行測試。

點擊Next


我們選擇Android 5.0.1,點擊Next


點擊Finish


至此,我們的Wear模擬器就創建成功了,也可看見綠色的運行按鈕,代表此模擬器可運行。

我們來看看正確創建Wear模擬器時,其文件夾里包含哪些文件:

Wear模擬器默認路徑為 C:\Users\ASUS\.android\avd\Android_Wear_Round_API_21.avd

順便提一下,如果Wear模擬器不能運行,遇到skin does not exists等問題,你會發現在上述的文件夾中config.ini沒有生成,導致不能運行。此問題是項目使用的sdk出了問題,通常是sdk的build-tools里面有重復的API,刪除重復項即可,當然前提是你已經下載好了正確的API。

這是筆者API 20下的文件夾結構,包含skins文件夾,以供參考。

我們來運行模擬器

可看到控制臺輸出Wear模擬器的信息,這代表運行成功。

我們來看看模擬器:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?這是模擬器的啟動動畫

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?運行完畢后

出現上圖的原因,是因為你的電腦沒有連上手機設備,或沒有啟動mobile模擬器。


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 電腦連上手機設備后即可看見下圖

到此為止,我們的Wear模擬器啟動成功。


看到這里,大家不禁又想到,我又掉入了Android的深坑!!!要做兩種模型的適配!!!

別急,谷歌早就處理好了這點。

我們來看看項目代碼結構

打開wear的MainActivity.java,可看到陌生的WatchViewStub,這是根據屏幕的形狀來渲染一個特殊的布局的類,后續教程會為大家介紹。

打開wear的activity_main.xml,可以看到有app:rectLayout="@layout/rect_activity_main"和

app:roundLayout="@layout/round_activity_main"兩種適配。

由此我們可以下結論:開發者不需要去具體分辨用戶使用的是Round模型還是Square模型的Wear,我們只需要在相應的rect_activity_main.xml和round_activity_main.xml做好對應布局即可。(可使用同一份Java邏輯)


下面我們來熟悉下模擬器的基本操作

如上圖所示,Wear模擬器上面只有一個Home鍵,開發者可以通過Home鍵來返回到前面的頁面,通常可用來回到最初的頁面(即上圖)。開發者也可以通過用鼠標滑動顯示頁面進行操作。


在最初的頁面下(這點必須保證,否則無法點擊),點擊上半部分彩色圖案,即進入下圖


用鼠標在顯示頁面處往下滑動到Start...位置


點擊Start...

在這里我們可看到Wear模擬器的可運行項目,目前只有系統默認的原始項目。


至此,我們來運行程序

點擊OK


可看到運行成功界面,感興趣的朋友也可以嘗試Square模擬器的運行,過程同上

我們再次回到模擬器的Start...界面

再次強調方法是點擊模擬器的Home鍵,先回到最初的界面,再點擊彩色部分


可看到我們的APP已存儲在Wear模擬器中

到此為止,我們的程序運行成功,大家可以拿著運行在Wear模擬器的Hello World去炫耀一番!~

到這里,我們是否就已經能真正開發Android Wear應用了呢?

答案是否。

在上述過程中,我們只是把應用直接運行到模擬器。然而,我們的最終目的,是運行到真實的智能手表設備上。真實設備不具備USB接口,無法與電腦直連,而且用戶也不可能為了安裝一個應用,設法去把手表與電腦連接。那么我們該如何把應用安裝到真實的智能手表設備上呢?


首先,我們來了解下,用戶安裝手表應用的使用過程。

用戶通過手機,登錄各大應用商城,搜索Android Wear應用,并下載應用。通過手機與智能手表進行藍牙互連配對,智能手表感知到配對手機上有Android Wear應用,應用自動安裝到智能手表。


從上面的過程中,我們會發現一個問題,手機與智能手表進行藍牙互連配對,這是如何做到的?

谷歌提供了Android Wear App,用戶可通過手機下載Android Wear App,然后通過該應用與智能手表進行藍牙互連配對。

可對于大多數開發者來說,并不具有智能手表設備,加上手中的手機并非是Android原生系統,莫非我們為了開發Wear趕風口,要再花費一筆現金?善于解決問題的開發者總是能找到途徑。

首先,我們要把手上的手機的系統(也可以是mobile模擬器的系統)變成類似Android原生系統。為什么要這樣做?因為Android Wear App的使用需要手機能運行Google Play,而如果本機系統不是Android原生系統,運行Google Play就會閃退,也即是Android Wear App無法運行,導致手機與智能手表無法互連配對。

許多Android Wear開發者新人都會卡在這道坎上,在這里我為大家提供一種切實可靠的途徑:手機上下載谷歌安裝器,這將一鍵為你模擬Android原生系統并下載好所需要的應用和服務。

對于有真實智能手表設備的開發者來說,此時已經能輕易做到手機與手表互連了。那么對于沒有真實智能手表設備的開發者,我為大家提供一種手機與Wear模擬器互連的方法。


首先,打開手機上的Android Wear App,點擊左上角的下三角圖標,選擇模擬器,此時Android Wear App頁面上顯示:模擬器 ?正在嘗試連接...(在此之前應成功啟動Wear模擬器,并保證Wear模擬器與手機處于同一WiFi下,因為模擬器不具備藍牙功能,要借助WiFi)


然后打開cmd窗口,進入sdk的platform-tools所在目錄,如下圖所示

此時輸入adb devices查看已連接設備

如出現上述情況,發現只有Wear模擬器,而沒有手機設備,則可借助豌豆莢等工具讓手機與電腦相連,或重連手機(或重新啟動mobile模擬器)。

此時再次輸入adb devices

可發現手機設備已連接。

此時輸入adb -d forward tcp:5601 tcp:5601

稍等片刻后查看手機Android Wear App,可發現此時顯示:模擬器 已連接

如長時間顯示正在連接:原因是豌豆莢等手機助手中有設備沒識別,可關閉或重啟豌豆莢,再重新輸入adb -d forward tcp:5601 tcp:5601

到此為止,手機與Wear模擬器成功連接!


準備工作做好后,相信讀者會躍躍欲試,直接在手機上運行程序。可無論運行mobile Module還是運行wear Module,Android Wear應用都只是單純運行到手機上,而并沒有如想象中的自動安裝到智能手表設備上。


正確的做法,是需要用Android Studio打包出Apk,同時也只有這樣,才能正確發布Android Wear應用。


在此之前,我們需要修改一下我們的項目代碼。

首先,在wear的AndroidManifest.xml中添加藍牙和網絡權限:

然后,在mobile的AndroidManifest.xml中添加藍牙和網絡權限以及:

<uses-feature android:name="android.hardware.type.watch"?

android:required="false" />


做好準備工作后,即可打包Apk。 ? ? ? ? ? ? ? ? ? ? ??

在Android Studio中選擇Build,點擊Generate Signed APK


選擇mobile Module,點擊Next


在這里,我們首先點擊Create new...


如圖填入內容,筆者除了Key store path外,其他都填寫了我的姓名拼音lujiajie


點擊OK,打開本地E盤,此時可以見到MyKey.jks文件


回到Android Studio,打勾Remember passwords,點擊Next


再次輸入Password:lujiajie ? ?Confirm password:lujiajie ?點擊OK


選擇Build Type:release,一定不能選擇debug,否則應用不會自動安裝到智能手表

點擊Finish


等待片刻后出現下圖,證明打包Apk成功


點擊Show in Explorer,可以看見文件夾有mobile-release.apk和wear-release.apk

我們可以注意到,mobile-release.apk特別大,因為其內嵌了wear-release.apk。最終發布的apk,也是采用mobile-release.apk。

此時我們把mobile-release.apk安裝到手機,在保證手機與智能手表設備互連配對的情況下(Wear模擬器同理),等待1~2分鐘后即可發現,手表上成功安裝了應用!(可在模擬器Start...頁面查看)

值得注意的是,手機上的Android Wear App與手表上的App同生命周期,即手機上安裝了該應用,當手機和手表連接后,手表即自動安裝該應用。手機卸載了該應用,手表上的應用也會隨之消失。(這可以實現,模擬器的重復利用,而不用為無法刪除模擬器上的應用而需要重新創建一個新的模擬器)


? ? ? 到此為止,我的Android Wear開發入門講授完畢,希望能對大家起到幫助!同時歡迎大家留下評論,指出我的不足之處。如遇到問題也可留言,筆者看到后會進行適量的回復。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,775評論 25 708
  • 從上周開始,全家人已經習慣在吃飯時聽優質的音頻專欄了。本周帶著全家一起聽了 “河森堡:最八卦的人類野史”。這個視頻...
    飛舞隨筆記閱讀 672評論 3 1
  • 你不知道我在想什么,我也不知道你在想什么。這便是異地戀的痛苦吧 我說在學校公司受委屈了,你一句整天負能量逼得我把所...
    愛笑的魚十三閱讀 110評論 0 0
  • 看似很近的距離,卻是遙不可及。曾經的承諾像翻相冊那樣不可兌現。那個的你總是說我們就是三生石上的那一對名字,就像是在...
    雨落流溪閱讀 163評論 0 1
  • 以前路很遠,車很慢,郵件很多。 兒時記憶中,郵票還很潮,每次陪父親給年邁的爺爺奶奶寄封信,都會很高興地拿著喜歡的郵...
    肖哲XZ閱讀 3,463評論 1 71