編輯:Android編程入門
Android Wear是連接安卓手機和可穿戴產品的一個平台。自從今年上半年發布以來,Android Wear獲得了大量關注,既有來自消費者的關注,也有來自開發商的關注,後者希望自己的應用程序已經准備好讓用戶使用一種新的方式進行信息交互。
這篇文章將簡要介紹Android Wear,然後介紹關於開發商的平台。
Android Wear旨在為用戶在對的時間提供數量合適的信息量。根據這一主題,谷歌已經發布了設計原則以幫助開發商集中思考Android Wear應用程序。我們將對此進行簡要介紹,同時也將研究在Android Wear環境中進行應用程序開發的必要條件,以及如何運用可用的API幫助安卓開發商研發用於Android Wear平台的應用程序。
Android Wear平台
Android Wear是用於可穿戴設備的開放操作系統,它有一個新的用戶界面——這是谷歌了解我們如何使用手機以及我們如何更多地與環境接觸的結果。例如,數據顯示,我們用手機查看信息平均每天有150次左右。每次我們這樣做的時候,都有可能迷失在其它應用程序裡面,常常在一個任務程序中消耗很多沒必要的時間,有時甚至完全忘記我們要查詢的最重要信息。
第一批使Android Wear火熱起來的是三星Gear Live和LG G Watch,這兩款設備都是在6月份的Google I/O大會上發布的。手表是Android Wear的第一選擇目標,確實如此:大多數人每天都使用手表。這些所謂的智能手表通常都需要和安卓手機配對使用,通過與最新安卓手機的無縫配合,谷歌讓用戶看到Android Wear平台的效用。
事實上,開始使用Android Wear時,你所需要做的是以下幾方面:
1. 安卓4.3設備;
2. 來自谷歌應用程序市場的Android Wear應用;
3. 配對安卓手機設備與Android Wear設備。
沒錯,就這樣。只要做好這些,你手機上的大部分信息都可以在可穿戴設備上查看。你不僅可以在手表上查看這些信息,也可對它們進行交互、刪除等等。這顯示的是不需費任何力氣或者花很少時間就可以讓安卓應用程序和配對設備運行——安卓手機用戶都可以這麼做。
需要注意的是,手機和可穿戴設備是通過藍牙進行連接的。可穿戴設備目前還不能獨立訪問網絡,所以需要通過手機進行連接。
雖然Android Wear很靈活,但是它目前最關注的是手表類。
九月初,摩托羅拉發布了萬眾期待的智能手表Moto360。它采用的是Android Wear系統。由於美麗的設計,Moto 360獲得很大的贊譽,而且250美元的售價也獲得了消費者的好評。其他開發商,包括華碩,已宣布發布Android Wear智能手表的相關計劃了。
使用模式
與Android Wear設備進行交互的兩種主要方式有:“建議”和“需求”。
“建議”,顧名思義,以通知的形式,推送到Android Wear設備的及時有用的信息。用戶界面把這設置成卡片的形式,如下圖所示。
值得注意的是,Wear應用程序能識別上下文語境,所以只推送文本內的信息。這類通知及時、簡短、與用戶的交互達到最低程度。
至於“需求”使用模式,用戶通過語音向可穿戴設備發出信號,它就會回復信息。設備含有麥克風,通過說“OK, Google”或點擊主屏幕就可以讓用戶調用一系列標准執行動作。用戶界面會提示用戶說出想要執行的動作指令。標准執行動作包括“做筆記”、“打電話”和“發信息”。你可以在運用程序上注冊標准執行指令,也可以自定義提示文本。
設計理念
現在,我們已經了解Android Wear的基本使用模式了,是時候看一下用戶界面和設計指導原則了。
如下所示,呈現給用戶的很多信息都是以卡片的形式出現的。
注意一下卡片的不同部分。目前Android Wear應用程序通知將會以上面的標准格式出現。但是我們談論的是利於閱讀和有上下文相關度的最小量信息,你需要花些時間考慮何時增加文本通知和需要顯示的文本。
通知可以在單個或多個卡片中顯示。如果使用多個卡片,用戶需要從左到右滑動頁面進行查看。
如以下所示,通過疊加,你甚至可以在單個卡片中查看多條通知。
設計Android Wear用戶體驗時,有四個關鍵點需要記住,每一個Google Wear Design視覺創意部分,Android Wear應用程序都應該做到:
1. 自動啟動:用戶應該不需要另外在Wear設備上安裝應用程序,Wear設備不是手機。Android Wear應用程序應該可以識別時間、地點和活動,並相應地推送相關卡片。
2. 易讀性:因為用戶把設備戴在手腕上,所以閱讀通知應該像查看傳統手表的時間一樣容易。記住,特別關注題目:越簡短越好——可以一眼就看到要點。
3. 有效利用“建議”和“需求”模式:Android Wear開發商頁面顯示:“Android Wear就像一位極好的私人助理。它只在你完全不需要的時候才會停下,它總是隨時候命為你提供答案。“為了提供這一體驗,開發商應該考慮何時如何使用“建議”和“需求”模式。
4. 與用戶的零低交互:開發應用與程序是需要記住可穿戴設備都特別小型。應用程序必須便於用戶進行交互,也就是說可以使用聲音或簡單的滑動或點擊手勢。
Android Wear設計團隊已經做了大量工作,記錄在現有Android Wear應用程序中進行擴展時如何有效地整合設計理念。(查看Android Wear設計部分。)
開發詳情
在本部分,我們將幫助你初步了解Android Wear研發的關鍵概念。
你可以選擇Eclipse或Android Studio作為Android Wear的集成開發環境(IDE)。谷歌建議用Android Studio進行開發。通過Android的SDK管理者下載API 20 (4.4 KitKat Wear):
Android Studio提供了在現有應用程序中添加Android Wear支持或創建新項目的便捷方式:Android Studio用的是組件模型,其中手機和Android Wear是單項目的一部分。
如果要在Android Studio創建一個新項目,點擊文件- >新項目。在向導的第二頁,選擇構成因子,確保選擇Android Wear模塊作為你開發的構成因子(見下圖)。
一旦完成所有選項選擇,項目就會自動生成。你會看到這個Android項目有兩個模塊:移動和Wear。移動的使用於手機的應用程序,Wear是在Android Wear上運行的程序。
Wear應用程序不可以作為單獨的軟件包放在谷歌商店裡。你需要把移動和Wear應用程序放在同一個應用程序APK中。當用戶在手機上下載APK時,Wear應用程序就會自動傳到配對的Wear設備。
Android Studio產生的默認項目並沒有什麼特別。在測試期間,我們需要自己寫代碼,這取決於我們想要應用程序的“可穿戴“執行什麼。
通知
Android Wear的開發可以從兩個角度進行分析:通知和Android Wear應用程序本身(包括在APK文件夾)。
對於已經從谷歌商店安裝官方Android Wear到手機的用戶,以及已經把手機和Wear設備配對的用戶,不需要在應用程序中對通知進行任何更改。
雖然這樣說,但為了讓Wear真正發揮作用,有時候更改是有必要的。
你可以令通知只出現在手機或可穿戴設備或兩者都有。此外,如上所述,開發商應該想下如何利用用戶界面(UI)優勢——即背景圖像、通知標題、文本等等。
創建將發送到可穿戴設備的手持式通知,谷歌建議使用通知兼容生成器。Android 的支持庫提供了一系列類別,你需要添加到你的項目中。
如果使用Android Studio,你需要添加下列屬於移動模塊中的build.gradle文件的編譯時間。
compile "com.android.support:support-v4:20.0.+"
要創建通知,你可在你的移動應用程序中嘗試下面的代碼:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(“New API”)
.setContentText(“XYZ API got added to Food Category”)
.setSmallIcon(R.drawable.ic_mynotification)
.setContentIntent(PhoneActivityPendingIntent);
然後,你可以根據你的邏輯觸發通知,如下所示:
NotificationManagerCompatnotificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(notificationId, notificationBuilder.build());
現在,當用戶在Wear設備上收到通知時,他們在手機上點擊通知或者滑動到左邊就可以啟動等待模式,然後顯示開始動作。
作為擴展部分,如果想要通知只出現在手機,你可以通過具體說明setLocalOnly來創建通知。
在上面的例子中,我們只顯示了一個卡片,但你可以看下有多頁甚至折疊的通知卡片。
可穿戴應用程序
雖然Android Wear支持來自手機的通知,但有時候還不夠。有幾種情況,包括:
在手機上收到數據時想要在Wear設備啟動活動;
從Wear設備向手機發送信息,反過來執行一些活動或者在後台做點什麼;
在Wear設備上創建自定義界面;
編寫一個可以在Wear設備上啟動和運行的程序,並且可以通過接收語音輸入啟動不同動作指令。
以上提到的都有可能實現,前提是你了解一些Wear API的基礎知識。
連接和數據交換
前面提供的案例中,共同的主題是手機和Wear設備都需要一個可連續雙方的機制,然後一旦建立聯系,就需要相互的信息交換。這反過來可以觸發相應設備上的正確指令。
手機和可穿戴設備之間的聯系是由谷歌提供服務的。谷歌API客戶端提供了這種聯系的實例。
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
你可以在合適的運動周期建立或關閉聯系,如下所示:
@Override protected void onStart() {super.onStart();
mGoogleApiClient.connect(); } @Override protected void onStop() { super.onStop(); mGoogleApiClient.disconnect(); }
一旦建立聯系,你可以查看不同API例子,以促進設備間的數據發送和同步:
Node API:該API是用於兩個設備連接或分離使通過NodeListener界面方法保持追蹤。
Message API:該API是用於雙方相互發送消息。這需要接收方(MessageListener)有一個監聽器可以接收消息。
Data API:該API用於設備之間的數據同步。該平台負責為雙方提供同步機制。你需要完成 DataListener 界面才可以接收消息。建議先在可穿戴設備Listener服務平台上創建一個實例,然後聽些你感興趣的事件。
數據層界面如下所示,選擇一個適合你的。
tatic interface DataListener {void onDataChanged(DataEventBufferdataEvents);}
static interface MessageListener {void onMessageReceived(MessageEventmessageEvent);}
static interface NodeListener {void onPeerConnected(Node node); void onPeerDisconnected(Node node);}
其余的功能——即需要針對特定信息采取的指令,完全取決於應用程序的功能需要。
執行實例
為了了解全局,我們來看一個實例應用程序,包括手機和Wear組件。為了讓事情簡單化,手機應用程序將會有單獨的活動指令名稱——MainActivity.java。它設計了一個按鈕,點擊時會發送消息到Wear應用程序。
首先,讓我們看下MainActivity.java在手機應用程序上的情況(主要方法如下所示):
public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
.....
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
mGoogleApiClient.disconnect();
super.onStop();
}
//Button click
public void onSendMessage(View view) {
//Get Connected Nodes
Collectionnodes = getNodes();
//For each node - send the message across
for (String node : nodes) {
SendMessageResult result = Wearable.MessageApi.sendMessage(
mGoogleApiClient, node, "/startactivity" , null).await();
if (!result.getStatus().isSuccess()) {
//Log Message Success
}
}
}
@Override
public void onConnectionSuspended(inti) {
Log.e(TAG, ...);
}
@Override
public void onConnectionFailed(ConnectionResultconnectionResult) {
Log.e(TAG, ...);
}
對於接收方——也就是Wear設備,我們寫了一份擴展WearableListenerService的服務程序。通過這份服務,你可以初始化GoogleAPI客戶端和其他回調信號,比如GoogleApiClient.ConnectionCallbacks。最後,我們提供了MessageReceived實例,如下所示:
@Override
public void onMessageReceived(MessageEventmessageEvent) {
if (messageEvent.getPath().equals("/startactivity")) {
Intent startIntent = new Intent(this, WearActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startIntent);
}
自定義界面和語音操作
除了數據API,Wear提供了讓開發商使用不同部件創建自定義界面的條件。
如今,你有非官方的資料庫可用。
語音集成提供了語音輸入的標准功能,可以把語音轉化為文字。還有“需求“使用模式,用戶可以通過語音喚醒應用程序或動作指令。
Wear平台系統提供了“記事”、“發送信息”等動作指令,通過這些,開發商可以讓應用程序在清單文件中注冊標准活動組件。
同樣,用戶只要向Wear設備說出“開始【活動名稱】”就可以開始一個活動指令。你所需要做的就是在活動清單中為該活動提供一個文件屬性。
對於基於Android Wear的第一波可穿戴設備——智能手表來說,Android Wear是創建可穿戴應用程序的一個好平台。
說到可穿戴設備應用程序,谷歌一直強調開發商需要尊重用戶並遵循用戶希望來設計。通過現有應用程序,編寫可穿戴設備應用程序的困難將減到最小。在應用商城有很多專為可穿戴設備設計的應用程序,包括不斷增加的手表應用程序——用戶最喜歡的app。考慮到越來越多的供應商宣布Android Wear產品計劃、以及Android OS的全球市場份額,開發商應該投資更多的時間到該平台上。
安卓手機的圖形鎖包括3*3,4*4,5*5的點陣,按次序連接數個點從而達到鎖定/解鎖的功能。以3*3為例,最少需要連接4個點,最多
單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。 針對Android開發,目前網上有很多在Eclipse環境下進行單元測試的教程,然而
Android 服務(Service)服務是一個後台運行的組件,執行長時間運行且不需要用戶交互的任務。即使應用被銷毀也依然可以工作。服務基本上包含兩種狀態
當啟動Android Studio時,如果彈出adb not responding. you can wait more,or kill adb.exe pro