关于Wear OS应用开发–Tiles我所了解的一些内容(附Demo)
浅谈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(){}@Overridepublic void onTileUpdate(int tileId){tileId = id ;Log.d(TAG, "from tile" + tileId);}@Overridepublic void onTileFocus(int tileId){//在用户滑动到你的Tile(在中国版WearOS上称为"卡片")上时会被调用Log.d(TAG, "onTileFocus() called with: tileId = [$tileId]");id = tileId ;sendRemoteViews();}/*@Overridepublic void onTileBlur(int tileId){//在用户离开你的Tile时会被调用}*/private void sendRemoteViews(){Log.d(TAG, "sendRemoteViews");RemoteViews remoteViews = new RemoteViews(this.getPackageName(), R.layout.tile);TileData.Builder bob = new TileData.Builder();//在这里更新你的Tile界面Intent intent = new Intent(this, WearableActivity.class);PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);remoteViews.setOnClickPendingIntent(R.id.tileButton1, pendingIntent);//点击Button跳转到WearableActivitybob.setRemoteViews(remoteViews);sendUpdate(id, bob.build());}}
WearableActivity
package com.yearky.tile;import android.app.*;
import android.os.*;public class WearableActivity extends Activity
{public static final String TAG = "XXX";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_wearable);}
}
tile.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"><TextView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Hello World"
Android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FFFFFFFF"/> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是一个卡片"
android:textColor="#FFFFFFFF"/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮测试"
android:id="@+id/tileButton1"/>
</LinearLayout>
在AndroidManifest中声明
<service
android:name=".MyTileProviderService"
android:exported="true"
android:icon="@drawable/ic_launcher"
android:label="卡片测试"
android:permission="com.google.android.wearable.permission.BIND_TILE_PROVIDER"> <intent-filter> <action
android:name="com.google.android.clockwork.ACTION_TILE_UPDATE_REQUEST" />
</intent-filter>
</service>
完整Demo(适用于AIDE):
https://alone127.lanzous.com/ikwSJlsqh1i
关于Wear OS应用开发–Tiles我所了解的一些内容(附Demo)相关推荐
- iOS蓝牙开发---CoreBluetooth[BLE 4.0] 初级篇[内附Demo地址]
一.蓝牙基础知识 (一)常见简称 1.MFI make for ipad ,iphone, itouch 专们为苹果设备制作的设备,开发使用ExternalAccessory 框架(认证流程貌似挺复 ...
- C#开发微信公众平台-就这么简单(附Demo)(转)
原文:http://www.cnblogs.com/xishuai/p/3625859.html 写在前面 阅读目录: 服务号和订阅号 URL配置 创建菜单 查询.删除菜单 接受消息 发送消息(图文. ...
- C#开发微信公众平台-就这么简单(附Demo)
相关文档:https://www.google.com/search?site=&source=hp&q=C%23+%E5%BE%AE%E4%BF%A1%E5%BC%80%E5%8F% ...
- 谷歌逐梦穿戴圈:Wear OS的失败能够靠Pixel Watch挽回吗?
在中国人的习俗里,名字往往与运势挂钩,所以常常会有改名转运这样的神秘玄学.不过这一"玄学"在谷歌推出的智能手表操作系统Wear OS身上,显然没有起到作用.2014年出道的Andr ...
- Wear OS 简介
文章目录 概述 与 Android 区别 Wear OS 设备开发申请流程 Wear OS 常用模式介绍 概述 Wear OS 是基于 Android 模块化的轻量级的穿戴设备平台, 本质是 Andr ...
- 2018android wear手表,谷歌正开发三款智能手表 Wear OS系统逐步脱离Android范畴
描述 谷歌推出了Android系统影响了整个智能手机行业,现在该系统在手机业务上的市场占比已经接近90%.基于Android谷歌还开发了Android Wear系统,主要是针对穿戴设备尤其是智能手表. ...
- Wear OS手表应用开发教程之-滑动隐藏布局-SwipeDismissFrameLayout
本文目录 点击直达 Wear OS手表应用开发系列教程 点击直达 本文标签 `路过的年轻人啊,你是要用左手点个赞呢,还是要右手点个关注呢` 前言: 利弊解析: 效果展示: 使用方法: 结语: 最后我还 ...
- Wear OS手表应用开发教程之-创建应用
本文目录 点击直达 Wear OS手表应用开发系列教程 点击直达 本文标签 `路过的年轻人啊,你是要用左手点个赞呢,还是要右手点个关注呢` 前言: Android Studio自动创建: 创建应用: ...
- Wear OS手表应用开发教程之-监听手表按键以及获取按键信息-WearableButtons
本文目录 点击直达 Wear OS手表应用开发系列教程 点击直达 本文标签 `路过的年轻人啊,你是要用左手点个赞呢,还是要右手点个关注呢` 前言: 获取按键信息: 获取按键数量 获取按键信息 获取按键 ...
最新文章
- java dump分析工具_Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化...
- 使用 commander inquirer 构建专业的node cli
- python知识点汇总_Python知识点总结大全(一)
- texture 纹理(贴图)
- ReactJs 第二章 JSX
- ASP.NET笔记(二)
- Sitecore开发 IP地理定位服务入门
- 【架构解密】第六章 深入解析分布式存储
- 你抢购盐干什么?要抢购也是先选大米啊
- 微信小程序实现扫码登录网站
- 美妆类短视频如何定位?可以考虑三个方向,吸粉引流指日可待
- html隐藏域倒计时,一个网页倒计时的实现
- 点桌面计算机一直在加载,Win7系统在桌面点右键一直转圈的解决方法
- UC手机浏览器js加入收藏夹
- unity 神笔画画
- word插入和删除水印
- Mahout in action 中文版-3.推荐器的数据表达
- 【python】王者荣耀全英雄高清壁纸爬虫共467M(多线程)
- mbedtls 库基础及其应用
- Aurora8B10B IP使用 -04- IP例程应用实例
热门文章
- Linux常用命令笔记与Windows部分命令
- 手机邮箱看不到已发送邮件_TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」) - blog_zss小帅-博客猿...
- 浙江远程c语言答案,北语远程0609计算机 C语言 大学英语2 数字电路 答案
- HP C6602A墨盒驱动
- 天融信: 风险探知系统确保企业资产无虞
- vivo小游戏sdk对接 Laya(5分钟掌握)
- C盘没装多少东西,为什么会卡?
- 站外SEO从反向链接开始
- 新斗罗大陆手游服务器维护,《新斗罗大陆》新ss魂师天青龙牛天修复公告
- 游戏引擎架构【笔记一】