浅谈Wear OS应用开发–Tiles
Google 在Wear OS 2.0加入了一个新功能:Tiles(在中国版WearOS称作"卡片")。
多数用户使用手表平均抬腕时长不会超过5秒,所以手表上的信息必须容易查到,交互简单,且操作性强,这也就是Tiles诞生的原因。
Tiles是一种类似于小部件的UI,可以让用户以更便捷的方式获得需要的信息并完成操作。Tiles的入口是向左划动,并可多次划动快速进入某项功能。可通过手机APP端操控添加、删减、重新排序。
但不幸的是,Google在上线Tiles功能的同时并没有发布API,这意味着Tiles仅限于Google和部分合作伙伴使用。
好在一位叫Sterling Udell的大神从Wear OS应用程序中提取了相关的代码,并推断出了API,我们可以通过此API创建出属于我们自己的Tiles。(这个API无疑是非官方的,但它能够使用Wear官方的系统级hooks创建和更新手表上的Tiles)
具体有关Tiles的详细说明、使用教程及非官方API可查阅https://bitbucket.org/StringMon/unofficialtileapi/src/main/,
我写了个简单的Tiles Demo供大家参考
效果图:
关于一些关键代码的说明:
所有Tile特有的方法都传递了一个int类型参数,即Tile ID。这些ID可能会在添加Tile时按顺序分配,且在Tile的整个生命周期中保持不变,不会被重新使用。
public void onTileUpdate(int TileId)
在首次添加或启动Tile,以ID作为其参数时,似乎会调用此方法一次。此后有时则会以大的负数(不是你的Tiles ID)作为参数来调用它,但是这些参数并不一致,目前含义不明。
public void onTileFocus(int TileId)
在用户即将滑动到Tile上调用(在Tile出现之前)
public void onTileBlur(int TileId)
在用户离开你的Tile时调用
TileData.Builder
这是一个基本的构建器类,可将RemoteViews通过Bundle发送。
关键代码:
MyTileProviderService
package com.yearky.tile;
import android.app.*;
import android.content.*;
import android.util.*;
import android.view.*;
import android.widget.*;
import com.google.android.clockwork.tiles.*;
import static com.yearky.tile.WearableActivity.TAG;
public class MyTileProviderService extends TileProviderService
{
private int id = -5;
public MyTileProviderService()
{
}