1. 程式人生 > >Android Wear 開發 (一)

Android Wear 開發 (一)

Android Wear究竟是什麼?

Android Wear和手機是完全不同的設計理念:手機大多數情況下,都是使用者去操作,去觸發裡面的應用;而手錶則是“使用者被動”的,使用者越少感覺到你的存在,越是合理,而在某些場景下給予最合適的提醒,則是Android Wear最偉大的設計理念,這也是它想做到的。

Android Wear是智慧的通知欄!(個人理解)

在早上醒來的時候,給你推送早上的天氣、交通狀況。在你到達餐館的時候,給你推送大眾點評,美團購物券,為你精打細算。檢測到你的運動狀態,顯示計步器,心率狀況(Android Wear本身內建)。

Android Wear開發階段

產品需求方向的確定

很重要的是,產品要設計成什麼樣子?

1.   手機到手錶的資訊通知欄樣式優化 : 例如設定背景

2.   手機與手錶的智慧推送:例如通過手錶來尋找手機,或是將手機拍到的照片傳送給手錶

3.   自定義卡片樣式:保持卡片樣式的基礎上,對卡片內的佈局進行調整,新增動畫,點選等互動

4.   完全自定義介面,提供獨特的互動:可拋棄卡片樣式,使用WearAPI提供的新元件

5.   手錶錶盤:各種樣式,各種高大上

技術實現

以上4個點,是設計到不同方面,不同層次的技術。要想清楚後,使用最恰當的技術去實現之。以下列出針對上面的實現需要的技術點

1.   手錶通知優化:實現最簡單,是非常有效的提升應用在手錶上的顯示

2.   智慧推送:資料通訊,監控手錶的狀態,為介面展示提供更豐富的資料支援

3.   自定義卡片:保留官方提供的卡片流樣式,個性化修改卡片內容

4.   完全自定義介面:自己實現介面,需要處理多解析度問題,自由度高

5.   手錶錶盤:類似手機動態桌布的機制

開發平臺的搭建

Eclipse平臺的搭建

2.       下載必要的SDK版本:最低4.4W.2(API20),也可以是5.0以上。注意不是4.4.2(API 19)。詳情見截圖。

1.      SDK Platform:你懂的

2.      Samples for SDK:強烈推薦下載,因為部分API在官網的開發者指導文章中是沒有提及的,一些解決問題的思路,可以從SDKSamples中學習到。

3.      2個SystemImage:建議下載,要多解析度測試,還是需要模擬器的!另外,務必升級到最新版本,在開發過程中,遇到模擬器Bug:動態載入的View在手錶正常顯示,而模擬器失效,更新後即可。

4.      Sources for Android SDK:你懂的

3.       升級AndroidSDK Tools:最低23.0.0

4.       下載依賴庫:

0.    Google Support Library : 提供android.support.v4.app.NotificationCompat.WearableExtender:用於實現手錶卡片通知的適配

1.  Google Play Services:提供com.google.android.gms.wearable:用於實現手機和Wear的資料傳輸功能

2.  Google Repository : 提供android.support.wearable:實現Wear的自定義介面

5.       解壓Wear依賴庫:下載後的包在/sdk/extras/google/m2repository/com/google/android/support/wearable/1.0.0/wearable-1.0.0.aar。解壓到工作目錄下,並將裡面的classes.jar拷貝到libs目錄下。

6.       匯入Wear依賴庫:Eclipse匯入上一步解壓的工程,並工程屬性properties設定為Is Library.

建立Android Wear工程

ADT升級後,依然沒有出現以上畫面,因此,選擇了以下的方式。

2.       Eclipse匯入模板工程

3.       模板匯入wearable-1.0.0依賴庫,解決也許找不到android.support.wearable包的問題。

注:ADT 自(23.0.2)這個版本開始就沒有Blank Wear Activity,所以得下載模板工程來開發。

建立模擬器

·     Device:選擇方形/圓形的裝置

·     Target:4.4w.2

·     CPU/ABI:此處筆者選擇Android Wear Intel Atom(X86),因為本人的64位Ubuntu 14.04系統在選擇AndroidWear ARM(armeabi-v7a)時候會報錯,所以在不確定哪個映象會報錯的情況下,最好兩個都下載吧。

·     Hardware keyboard present:手錶是沒有鍵盤輸入的,所以,這裡似乎沒用,不過語音輸入是否與之相關有待調查。

·     Skin:選擇與Device對應的,AndroidWearSquare

·     Use Host GPU:這個很關鍵,不勾選這個,在做Notification顯示自定義的Activity的時候會看到一片漆黑

Android Studio 平臺的搭建

在Android Studio中建立新的工程(包名,工程名你隨便起了),Next

同時建立手機專案和Wear專案

建立Phone端的頁面樣式

建立Wear端的頁面樣式

同時生成Phone和Wear專案(方便打包)

Wear的連線除錯

步驟是:

1. 手機端usb除錯開關

2. 在Android Wear手錶裝置上開啟藍芽除錯開關:

-->原生AndroidWear系統是:連點兩次主屏會顯示出wear選單或者長按手錶右側物理按鍵,滾動到底部點選設定,再滾動動到底部,如果也沒有開發者選項,就點選關於,再點選系統版本資訊七次,就會出現開發者選項。進入開發者選項,並開啟藍芽除錯開關。
-->Ticwear中文系統上是主屏上左劃出現選單,滾動選擇設定,滾動到底部,如果也沒有開發者選項,同樣,就點選關於,再點選系統版本資訊七次,就會出現開發者選項。進入開發者選項,並開啟藍芽除錯開關。

3. 開啟除錯會話:

1)手機USB資料線連線到電腦,在手機端開啟Android Wear應用(確保應       用已連線到手錶)。

2)點選介面右上的齒輪選單進入設定(Settings)

3)開啟“通過藍芽除錯”(Debuggingover Bluetooth)。你可以看到裝置連線狀態:

  Host:disconnected
Target: connected

4)確保手機用USB資料線連線了電腦,並執行adb命令:

adb forward tcp:4444 localabstract:/adb-hub;

adb connect localhost:4444

你就可以看到剛才的連線狀態就變成了:
Host: connected
Target: connected

4.      除錯應用

如果執行adb devices命令,你的可穿戴裝置應該是顯示為localhost:4444。要執行任何adb命令,格式應該是類似這樣:

adb -s localhost:4444 <command>

如果沒有其他裝置通過TCP/IP連線(即沒有連線其他模擬器),你也可以使用簡化的命令:

adb -e <command>


例如:
adb -e logcat
adb -e shell
adb -e bugreport

注:其實第3步OK後用AndroidStudio直接跑起Wear程式即可,App即可會自動安裝到手錶上,稍微有點慢耐心等下就好。

Wear APP的正式開發

與手機端開發的一些不同

  1. 系統有個強制休眠時間。如果正在顯示介面,但使用者又沒有進行操作,裝置就會休眠。當再次喚醒後,會回到錶盤主頁而不是你之前的介面。如果你有東西需要持久化顯示,可以推送通知到資訊流中。
  2. android wear應用相對於手機應用來說,顯示尺寸和功能更小巧。可能是手機應用的子集,通常你可以先在手機上操作,然後將結果傳送到手錶。
  3. 使用者不需要直接下載應用到android wear裝置。你只需要將android wear應用繫結到android手機應用中。當用戶安裝了手機應用,系統會自動安裝android wear應用。可以出於開發目的,你依然可以安裝應用到android wear裝置中。

4.   android wear應用可以訪問標準的AndroidAPIs。但不支援一下APIs

Wear 通知的開發

為了建立一個手持裝置上的並且也能同時傳送給可穿戴裝置的Notification,需要使用NotificationCompat.Builder。當你使用這個類建立Notification之後,如何正確展示的工作就交由系統去完成,無論是在手持式裝置上還是可穿戴裝置上。

需要匯入的類(手機端)

importandroid.support.v4.app.NotificationCompat;

importandroid.support.v4.app.NotificationManagerCompat;

importandroid.support.v4.app.NotificationCompat.WearableExtender;

普通通知欄

  1. 手機:普通的通知欄在手機上的效果應該都不陌生,這裡就不展開說明
  2. 手錶:手錶端的效果是由2張卡片構成的,第一張是手機通知欄的資訊組成,第二張是點選開發手機應用,具體的效果與手機通知欄的點選事件一致,也就是說,如果通知欄沒有設定點選事件,那麼就不會有第二張卡片。另外,預設的背景色是由應用圖示所決定的,是取主要的顏色值

以上是最原始的通知欄效果,沒有進行手錶端適配處理的。(其實普通的通知欄你都不用做。。。。。。)

新增Wear擴充套件屬性的通知欄

擴充套件屬性

·        多張卡片:通知欄的多張內容展示

·        自定義動作按鈕:自定義Action按鈕的事件處理

·        設定背景:設定通知欄的背景色

·        堆疊多張卡片:通知欄卡片的堆疊

·        語音回覆:

Wear 上的UI開發

Android Wear apps使用者介面不同於在手機裝置上構建。需要遵循AndroidWear設計規範UI模式,以確保應用通過針對可穿戴裝置而優化的一致使用者體驗。

UI模式主要通過以下方式實現:

  1. 卡片
  2. 倒計時和確認
  3. 長按消失
  4. 2d pickers
  5. 選擇列表

Wearable UI LibraryAndroid SDkGoogle Repository的一部分,提供幫助你實現這些模式的類,並可以建立同時適配執行在圓形和方形螢幕裝置上的佈局。

定義佈局

當建立android wear佈局的時候,要考慮裝置有兩種螢幕,方形和圓形。任何位於螢幕角落的內容都會被圓形螢幕裁剪掉。

Wearable UI Library提供兩種方式解決這個問題:

1、為圓形和方形螢幕的裝置定義兩套佈局。在執行時檢測裝置螢幕並渲染不同的佈局。

2、使用Wearable UILibrary中一種特殊的佈局來包住你的佈局。這個佈局會根據裝置螢幕來載入不同的佈局檔案。

典型的辦法是第一種,如果佈局簡單可以直接使用第二種。

為圓形和方形螢幕定義不同的佈局

Wearable UI Library中的WatchViewStub這個類可以讓你為圓形和方形螢幕定義不同的佈局。這個類會在執行時檢測螢幕形狀並渲染相應的佈局。

1、在你的activity佈局檔案中新增WatchViewStub元素

2、使用rectLayout屬性為方形螢幕指定佈局檔案

3、使用roundLayout屬性為圓形螢幕指定佈局檔案

  1. <android.support.wearable.view.WatchViewStub  
  2. xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:id="@+id/watch_view_stub"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"
  8. app:rectLayout="@layout/rect_activity_wear"
  9. app:roundLayout="@layout/round_activity_wear">  
  10. </android.support.wearable.view.WatchViewStub>  
  11. @Override
  12. protectedvoid onCreate(Bundle savedInstanceState) {  
  13. super.onCreate(savedInstanceState);  
  14. setContentView(R.layout.activity_wear);  
  15. }  
  16. 訪問佈局控制元件  
  17. 渲染布局檔案不是同步的,所以要設定一個回撥來監聽WatchViewStub渲染完成。  
  18. @Override
  19. protectedvoid onCreate(Bundle savedInstanceState) {  
  20. super.onCreate(savedInstanceState);  
  21. setContentView(R.layout.activity_wear);  
  22. 相關推薦

    Android Wear 開發

    Android Wear究竟是什麼? Android Wear和手機是完全不同的設計理念:手機大多數情況下,都是使用者去操作,去觸發裡面的應用;而手錶則是“使用者被動”的,使用者越少感覺到你的存在,越是合理,而在某些場景下給予最合適的提醒,則是Android W

    Android NDK開發CMake構建工具使用

      一、Android studio中需要的外掛:     CMake     LLDB     NDK   二、專案配置      ①build.gardle的配置  :多了兩個externalNativeBuild :def

    Android WiFi開發 掃描、連線、資訊

    在平常開發中經常會涉及到wifi相關的內容,在此將之前所用到的整理一下,以免忘記。操作wifi的相關類,主要放在android.net.wifi包下面。使用wifi相關方法需要申請一些許可權: 申請許可權方式:在AndroidManifest.xml檔案中填寫<uses

    步學Android ROM開發——修改現有ROM資原始檔

    一,準備工作 1.一臺開發手機。     我推薦最好用G7,也是就HTC Desire那款(是不是有些廣告嫌疑。。。),這臺機各種ROM都很全,資料也多些,很容易刷到root,android版本也是最新的2.3.3. 2.Auto-sign簽名工具    這個是

    Android NDK開發環境搭建

    關於ndk的開發流程,對於Windows環境下NDK的開發,如果使用的NDK是r7之前的版本,必須要安裝Cygwin才能使用NDK。而在NDKr7開始,Google的Windows版的NDK提供了一個ndk-build.cmd的指令碼,這樣,就可以直接利用這個

    Android 網路開發 okHttp網路請求之快取控制Cache-Control

    Cache-Control: Cache-Control指定請求和響應遵循的快取機制。在請求訊息或響應訊息中設定Cache-Control並不會修改另一個訊息處理過程中的快取處理過程。請求時的快取指令有下幾種: Public指示響應可被任何快取區快取。 Private指示對於單個

    Android混合開發——移動端與前端互動之JSBridge引入

    一丶概述 最近轉前端,在做一個混合專案,Android + 前端Vue技術,Vue沒那麼快上手,先分享一下Android部分的經驗,後期會學習Flutter,和RN,邊學邊做邊分享 二丶效果演示 三丶JSBridge引入 1.什麼是JSBridge JSBrid

    Android Native開發JNI

    JNI 是 Java Native Interface 的縮寫,即JAVA本地介面。 JNI 是 Java 的一部分,不是Android引入的。 首先介紹JNI在 JAVA 下的示例,再介紹如何在Android下使用。 eclipse建立Java Application

    Android 資料庫開發SQLite3概述

    前言 SQLite是一款輕型的資料庫,是遵守ACID的關係型資料庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域專案,設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在Android、iOS等

    Android相機開發之預覽拍照檢視圖片基本功能的實現

    前言         接觸Android開發有一段時間了。一開始時純粹是出於自己的興趣,空閒時寫幾個小軟體自娛自樂。剛好暑假時老闆佈置的任務跟Android相關,所以這段時間又繼續進行了Android的開發學習。現在的Android開發水平僅屬於

    android 快速開發抽象類的使用:使業務邏輯更清晰

    抽象類的使用:使業務邏輯更清晰 一、abstract修飾符         abstract修飾符可以用於類、方法、屬性、事件和索引指示器(indexer),表示其為抽象成員,抽象方法是沒有方法體的方法。         abstract 不可以和static、virtu

    android的百度地圖開發

    one rst dir 還要 遠程服務 存儲 返回 src copy 1,註冊百度開發者賬號 2,申請key ,註意開發版SH和發布版的SH 獲取開發版SHA1: 輸入命令:keytool -list -v -keystore debug.keystore,回車輸入密鑰

    步學習Android TV/盒子開發

    寫在前面的話: 本人做了幾年的機頂盒和Android電視上的應用開發,寫這些文章只是為了讓初次接觸大屏開發的同學能夠快速上手。 TV端因為沒有觸控操作,只有遙控操作,所以焦點處理、控制以及按鍵監聽是其主要特點。 焦點處理 設定可獲取焦點 佈局中需要設定某個控制元件可獲取焦點需要加

    android開發

    開始android歷程: 1、模擬器無法連線本地PC:       模擬器中可以連外網,但無法訪問本地PC上的IIS的API介面:報connect refused錯誤。      後試了很多方法,修改模擬器網址等,沒用。 &

    Android音視訊】Android Onvif-IPC開發——在Android端搭建伺服器模擬Onvif-IP-Camera

    Android端實現Onvif IPC開發: 本篇內容簡介: 本篇是上一文章移植失敗採取的第二方案,通過在android搭建service,模擬成一個onvif協議對接的IPC端,在這之前,首先需要明白,onvif裝置對接的流程或者說方式,接下來的文章內容

    Android音視訊】Android Onvif-IPC開發——gSoap移植NDK嘗試

    Android端實現Onvif IPC開發: 閱讀說明(必讀) 我在進行gSoap移植時暫時失敗了,而是採用方案二,在android端通過java搭建的server去模擬IPC,達到需求(實現Android端可供Onvif檢測的IPC),以下是我移植的步驟

    Android開發——Android-Studio 開發環境配置

    第一步:下載Android-Studio 地址1:https://developer.android.com/studio/index.html?hl=zh-cn第二步:安裝JDK和配置環境變數 由於我下載Android-Studio的版本JDK需要在8.0版本以上,所以如果

    Android studio中NDK開發——使用CMake構建NDKDemo

    一、前言 NDK可以支援使用C/C++來編寫Android程式,不但可以接入C/C++中優秀的庫資源,而且處理效率高,在音視訊方面有著廣泛的應用。本篇主要以CMake的方式來構建NDK,主要以最常規的方式建立一個NDKImportDemo,並對自動建立官方例子進行分析構建的過程以及CMakeLi

    Android二維碼掃描開發:實現思路與原理

    【 回覆“ 1024 ”,送你一個特別推送 】 現在二維碼已經非常普及了,那麼二維碼的掃描與處理也成為了Android開發中的一個必要技能。網上有很多關於Android中二維碼處理的帖子,大都是在講開源框架zxing用法,然後貼貼程式碼就完了,並沒有一個系統的分析和

    Android 百度地圖開發如何呼叫百度地圖介面和在專案中顯示百度地圖以及實現定位

    二、下載百度地圖API庫 然後新增到專案中即可。   三、在專案清單AndroidMainifest.xml配置百度地圖API key和新增相關許可權                         四、在專案呼叫百度地圖專案功能,這篇文章就首先講講顯示地圖和定位的功能 首先