Android Wear书签

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

严格意义上来说这并不是一种新的布局,而是特定针对圆形屏幕做的优化,是列表内容看起来是这样的
Curved Layout

要实现这样的效果,需要

  • 使用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

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

具体参考: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
处理多功能按钮

有些设备有多个功能按钮,比如这样
multi-function-buttons

它们的KeyCode如下表所示

ButtonKeyEvent
MF button 1KEYCODE_STEM_1
MF button 2KEYCODE_STEM_2
MF button 3KEYCODE_STEM_3

具体请参考Multi-function Buttons

Rotary Input

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

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

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

使用GPS或者Speaker

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

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

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 应用
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值