Some notes on Android Wear development.
TO BE COMPLETED…

Notes

App类型

Wear特有风格的Notification

可以使用专有的Action.WearableExtender为Notification增加Inline Action,具体可以参考Add Wearable Specific-features to a Notification。

Watch Face / 表盘

开发的模式与手机上的Wallpaper类似,都是继承一个Service来进行自己的逻辑开发。
对于表盘,要继承的是CanvasWatchFaceService
对于Watch Face,同样也有省电的ambient模式。

具体可以参考官方的教程Designing Watch Faces。
关于Watch Face的ambient,可以参考Update the watch face in ambient mode。

普通图形界面 (即我们所熟知的Activity)

注意,这里直接继承自Activity就好了。创建向导默认会为你的Activity / Application使用Theme.DeviceDefault主题,而不是手机上常用的AppCompat系列主题了。

Always-on

同时支持ambientinteractive模式的app,称之为Always-on app
interactive模式即是我们平常看到的activity的正常交互。
ambient模式会让你的activity变为黑色,并且要求你只显示一些最基本的信息,但是不会关闭屏幕,可以达到省电的同时又为你提供基本的信息。

如果要开启ambient模式的支持,我们需要将activity继承自WearableActivity

具体可以参考Keeping Your App Visible。

UI

BoxInsetLayout

由于Android Wear的屏幕有方形和圆形两种,所以Google为我们提供了自动适配这两种屏幕的布局,即BoxInsetLayout
具体可以参考Use a BoxInsetLayout。

它的作用原理很简单,探测到当前屏幕为圆形,则会使用屏幕的内接正方形作为它的绘制区域,即你所有的布局都在这个正方形里边。在实际使用当中,需要测试实际效果才可以定最终的布局,否则它呈现出来的效果很可能并不是你想要的。(比如四周留的空白太多等等)

Curved Layout

严格意义上来说这并不是一种新的布局,而是特定针对圆形屏幕做的优化,是列表内容看起来是这样的
Android Wear书签_第1张图片

要实现这样的效果,需要

  • 使用WearableRecyclerView
  • 使用对应的LayoutManager - CurvedChildLayoutManager
  • 设置setCenterEdgeItems(boolean)方法为true

具体可以参考Creating a Curved Layout。

如果你只是使用WearableRecyclerView来实现自适应圆形和方形屏幕,建议你将setCenterEdgeItems设置为false。因为前者虽然会在圆形屏幕上将List自动居中,但是空白太大,并不美观。

其它Widget

都在Support wear lib中,等待你去发掘。

交互

Request permissions on runtime
Detect your companion app on the paired phone
Input methods
  • dictation (voice)
  • emoji
  • canned response
  • smart reply
  • default ime
Confirmation
  • Countdown timer
  • animation
Exit activity
  • swipe from left to right (swipe to dismiss)
  • long press to dismiss (DismissOverlayView)
  • Navigation drawer
  • Action drawer

数据

Sending & syncing data
Google API client
Background Service (JobScheduler API Service)
Authentication
  • Google sign-in
  • OAuth 2.0 (Standard app)
  • Pass tokens via DataLayer
  • Custom code authentication

发布

Android Wear目前有两个大版本,即1.x与2.0。

中国版最新的1.x是1.4,而国际版是1.5。
2.0的设备目前不是太多,除了一些刚发布的设备。

2.0最大的特点就是可以独立运行(可以直接进行联网操作,不需要经过Data Layer的API),并且有自己独立的Play商店,不需要有一个companion phone app来作为部署的载体。

其实对于开发调试来说,1.x也是可以独立运行的。你可以直接将wear app安装到手表上,但是对于正式发布的应用,则不行。
也就是说,对于1.x的设备,手表的apk包需要打包进手机apk包。

打包1.x程序

自动方式

dependencies {   compile 'com.google.android.gms:play-services-wearable:10.0.1'   compile 'com.android.support:support-compat:25.1.0'   wearApp project(':wearable')}// 或者dependencies {  ...  wearApp files('/path/to/wearable_app.apk')}

手动方式步骤较多,具体参考官方文档 - Package a Wear 1.x app manually。

打包2.0程序

指定App为Standalone

...  "com.google.android.wearable.standalone"    android:value="true" />...

具体参考:Specifying an App as Standalone。

支持中国版Android Wear设备

由于众所周知的原因,Android Wear针对中国市场定制了中国版的Android Wear操作系统,与国际版(标准版)最大的差别是前者将语音等GMS替换为了”出门问问”语音服务,并阉割掉了一些东西(比如WIFI)。
出于开发上的考虑,对外暴露的接口还是使用GMS,只是要使用一个特定的中国版 - 7.8.87版本的Google Play Service。

下载好之后,将解压的google-play-services-7-8-87/目录存放到项目根目录下,然后在顶级的build.gradle文件中添加本地maven库:

allprojects {  repositories {        maven {                url "${rootProject.projectDir}/google-play-services-7-8-87"              }       // ... other repositories may go here ...    }

接下来在手表和手机模块的build.gradle文件中使用该版本的GMS服务,如下

compile 'com.google.android.gms:play-services-wearable:7.8.87'

测试发现,对于中国版的手表,手表端必须要使用这个版本的GMS,但是手机端使用不同的版本也可以进行通信。尤其是手机端的应用同时使用了其它GMS提供的服务,那么它们的版本必须要保持一致(否则会编译失败),而且很大的可能性不是这个版本。

具体细节,参考 - 创建面向中国市场的 Android Wear 应用。

Optional

处理多功能按钮

有些设备有多个功能按钮,比如这样
Android Wear书签_第2张图片

它们的KeyCode如下表所示

Button KeyEvent
MF button 1 KEYCODE_STEM_1
MF button 2 KEYCODE_STEM_2
MF button 3 KEYCODE_STEM_3

具体请参考Multi-function Buttons。

Rotary Input

顾名思义,旋转输入。这种按钮只在部分Android Wear中有,类似于Apple Watch,表冠是可以旋转的,用它可以达到滚动列表布局的目的。

SDK提供的ScrollView, ListView, HorizontalScrollView, 或者WearableRecyclerView,默认支持这种输入。

如果你想让自定义的布局支持这种输入的话,参考Rotary Input。

使用GPS或者Speaker

并不是所有设备都具有GSP或者Speaker,你在使用它们之前需要运行时判断是否具有相应的硬件。

可以参考以下链接来实现对应的功能

  • Detecting Location on Android
    Wear
  • Using Speakers on
    Wearables

Bookmarks

  1. Building Apps for Wearables
  2. Designing Watch Faces
  3. Update the watch face in ambient mode
  4. Keeping Your App Visible
  5. Use a BoxInsetLayout
  6. Creating a Curved Layout
  7. Multi-function Buttons
  8. Rotary Input
  9. Detecting Location on Android Wear
  10. Using Speakers on Wearables
  11. Package a Wear 1.x app manually
  12. Specifying an App as Standalone
  13. 创建面向中国市场的 Android Wear 应用

更多相关文章

  1. android点击屏幕隐藏小键盘
  2. android实现屏幕全屏
  3. Android版本检测/自动更新
  4. Rockchip查看Android SDK版本
  5. Android 深入研究SQLite实例(一) 之 业务类 sqlite版本管理类
  6. 【android】获取屏幕宽和高
  7. Android和Linux版本对应
  8. Android 版本及别名

随机推荐

  1. CrossWalk - Android 动态加载so库文件
  2. Android 高清加载巨图方案 拒绝压缩图片
  3. Android(安卓)网络编程
  4. Android Wear和二维码
  5. Android 关机流程分析-----(1)Framework层
  6. Android(安卓)Afianl框架(2)——FinalDB
  7. Android经典应用程序开发
  8. Android问题集锦之十:Android导入项目时An
  9. 2011.09.14(2)——— android tabhost位于
  10. Android中对媒体的使用