Android Wear是Android操作系统的一个分支版本,专为智能手表等可穿戴式电脑设备所设计,由Google主导开发。

瞎扯扯

我们身处一个最好的时代,也是最坏的时代,智能硬件的普及,极大改善了人们的生活体验,以前只有在科幻电影中才可能出现的场景,也逐渐变为现实进入人类的生活。
在MOTO 360刚推出之时,刷新了我对手表的认识,Android Wear使得手表有了更多的可实现的功能,使得手表成为手机功能的延伸,某些功能的操作甚至不再需要手机,比如消息的阅读与回复,查看天气,导航、打车等等。

开发前准备

  • Android Studio
  • Android Wear手表或Android Wear模拟器

创建项目

Android Wear项目同时包含mobile、wear两部分,这里同时需要勾选Phone and Tablet、Wear,Minimum SDK这里都选API21。

wear部分默认选Add No Activity

由于我的Android Wear手表为圆形,这里就以圆形表盘为例

权限声明

表盘需要WAKE_LOCK权限,在mobilewear Module的manifest文件中声明权限。

1
2
3
4
5
<manifest>
<uses-permission
android:name="android.permission.WAKE_LOCK" />
...
</manifest>

继承CanvasWatchFaceService类并实现相关方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class MyWatchFaceService extends CanvasWatchFaceService {
@Override
public CanvasWatchFaceService.Engine onCreateEngine() {
return new Engine();
}

private class Engine extends CanvasWatchFaceService.Engine {
@Override
public void onCreate(SurfaceHolder holder) {
super.onCreate(holder);
}

@Override
public void onPropertiesChanged(Bundle properties) {
super.onPropertiesChanged(properties);
}

@Override
public void onTimeTick() {
super.onTimeTick();
}

@Override
public void onAmbientModeChanged(boolean inAmbientMode) {
super.onAmbientModeChanged(inAmbientMode);
}

//绘制表盘
@Override
public void onDraw(Canvas canvas, Rect bounds) {
}

@Override
public void onVisibilityChanged(boolean visible) {
super.onVisibilityChanged(visible);
}
}
}

注册service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<service
android:name=".MyWatchFaceService"
android:label="@string/my_watch_faces"
android:permission="android.permission.BIND_WALLPAPER">
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/watch_face" />
<meta-data
android:name="com.google.android.wearable.watchface.preview"
android:resource="@drawable/preview_smartisan" />
<meta-data
android:name="com.google.android.clockwork.home.preview_circular"
android:resource="@drawable/preview_smartisan" />
<meta-data
android:name="com.google.android.wearable.watchface.companionConfigurationAction"
android:value="com.example.android.wearable.watchface.CONFIG_ANALOG" />
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
<category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter>
</service>

实战-模仿锤子时钟

详细代码见smartisan_watchface

调试表盘

  • 使用assembleDebug命令生成debug包
  • adb connect命令连接手表进行调试
  • 使用adb instll命令将表盘安装至手表

打包

  • 使用assembleRelease命令生成release包
  • 使用adb instll命令将表盘安装至手表