Android Wear的设计与开发.pdf
1 Hello 出门问问 · Confidential and Proprietary 欢迎加入微信群欢迎加入微信群 Android Wear开发者 Google Glass 与 Android Wear 设计与开发 出门问问 智能移动语音搜索 李志飞 微博李志飞AI 2014.10 3 Google Glass 简介 出门问问 · Confidential and Proprietary 主交互界面:时间轴(Timeline ) 4 Google Glass OS:时间流 组成部分: 1.主页(时间页面) 2.未来/正在进行 模块 3.过去 模块 4.设置 模块 基于Android 4.4.2的定制化系统 配对Android 4.0.3以上 / iOS 7 以上的手机 自带wifi,gps。可通过蓝牙配对共享手机网络,成为手机伴侣 基于卡片流,信息流的简化操作系统 出门问问 · Confidential and Proprietary 1. Static Card:用来展示静态文本,HTML,图片,或者视频。只在 timeline显示。Static Card 可以出发Live card或者Immersion 2. Live card:顾名思义,用来展示一些实时性较强的信息,表示目前 正在进行的任务。只在timeline的Future/present 模块中显示。 3. Immersion:其实就是一个app。 5 Google Glass OS:UI组件 出门问问 · Confidential and Proprietary Glass上APP的两种开发方式: 1. Mirror API 2. Native API (Immersions) Android SDK + GDK 6 Google Glass OS:应用开发 出门问问 · Confidential and Proprietary 什么是Mirror API? Mirror API是web-based的API,基于google或者第三方服务 不需要实际的代码运行在本地 让开发者可以方便,快速的将glass上的信息推送至服务器,反之亦然 7 Google Glass 应用开发:Mirror API 出门问问 · Confidential and Proprietary 何时适用Mirror API? 当你需要. 例子: 微博分享 新闻 什么是GDK? GDK是Android SDK上的一个附加包,可以通过GDK开发glass上的本地 应用。 8 Google Glass 应用开发:关于GDK 出门问问 · Confidential and Proprietary 两种基于GDK开发的app类型: 1.Live Cards: 显示正在进行的任务,适合用户需要不间断的查看正在进行任务的内容,同时又不影响 其他操作。 与时间轴共存。唤起应用后,以livecard形式存在于时间轴的未来/现在进行 模块中。 直至用户主动取消。 例如:在跑步的时候查看自己的跑步信息,或者控制音乐的暂停播放 9 Google Glass 应用开发:Live Cards 出门问问 · Confidential and Proprietary 10 Google Glass 应用开发:Immersions 出门问问 · Confidential and Proprietary 2. Immersions: 一个完整的APP,需要占用timeline。可完全自定义卡片内容,显示方式, 手势操作。 谨慎使用,live card基本能提供大部分glass上的功能,除非制作类似游戏 ,或者大型app,否则不要用Immersions. 以游戏为例 Google Glass 应用实例 用Google搜索 拍照 拍视频 导航 发hangouts信息 打电话 11 Glass上的原生应用 而在中国只能用英文操控拍照和拍视频 出门问问 · Confidential and Proprietary Google Glass 应用:出门问问 用中文导航 找餐厅,酒店,银行 定位(我在哪儿) 查天气 听音乐 看新闻 查上映电影 找美女帅哥 看笑话 查百科 . 12 所以,我们开发了出门问问 on Glass: 出门问问 · Confidential and Proprietary 出门问问一瞥 13 出门问问 · Confidential and Proprietary 14 Android Wear OS 简介 出门问问 · Confidential and Proprietary 1.操作系统介绍 2.关于SDK 3.应用实例:出门问问 15 Android Wear OS 简介 出门问问 · Confidential and Proprietary 基于Android 4.4.2的定制化系统 配对Android 4.3以上的手机 没有wifi,gps。只能通过蓝牙配对共享手机网络和GPS 基于卡片流,信息流的简化操作系统 可以运行第三方应用 16 Android Wear OS : UI 出门问问 · Confidential and Proprietary Android Wear的主要UI由两部分组成: 1.Suggest:信息推送 以垂直排列卡片显示的文本流 基于google now,以及第三方应用的推送 无需用户主动启动app,在正确时间接收重要信息 支持一些简单按钮操作,快速处理信息 2. Demand: 信息查询 通过“ok, google”或者点击背景空白处 唤起语音界面&提示卡 提示卡罗列所支持的语音指令,每个指令 对应一个intent 开发者可以将一个语音指令对应多个应用 intent,用户可以选择他们所期望的应用 17 Android Wear:应用设计原则 出门问问 · Confidential and Proprietary 五秒原则。不要打断用户! 手表天生是提供人们进行多任务处理的工具。如果在android wear上设计的 app交互流程如同手机上一样复杂、耗时,那么用户就会丢弃这块手表! Android Wear设计原则1: 18 Android Wear:应用设计原则 出门问问 · Confidential and Proprietary 为不精准的手势而设计 记住,手表的屏幕很小!小到用户只能用手指在同一时间,同一地方做很简 单,不精确的操作。试想下,当用户在跑步、在说话等注意力不集中的时候 ,如何让他们能快速准确的操作你的app? Android Wear设计原则2: 19 Android Wear:应用设计原则 出门问问 · Confidential and Proprietary 多考虑下卡片流吧! Android Wear希望能在正确的时间,正确的地点推送给用户正确的所需的信 息。当用户的条件(体征,地点等)发生改变,尝试着推送一张卡片吧。别 老惦记着app了,打断用户太长不是一个好的选择。 Android Wear设计原则3: 20 Android Wear:应用设计原则 出门问问 · Confidential and Proprietary Android Wear设计原则4:专注。只在一张卡片上做一件事 Android Wear设计原则5:简单。让用户一眼就能看到信息 Android Wear设计原则6:勿扰。不要乱用震动,这不是手机 21 Android Wear:APP结构 出门问问 · Confidential and Proprietary 卡片流: 桥接式通知(Bridged Notifications) 自定义通知(Contextual Notification) 全屏APP 二维选择器(2D Picker) 自定义布局(Custom Layouts) 22 Android Wear:通知 出门问问 · Confidential and Proprietary 桥接式通知(Bridged Notifications) 当安卓手机与android wear连接后,手机通知栏里收到的 通知即会推送到手表上,但是不支持wear特有的语音操作, 信息堆叠等。所有app的推送都支持。如下图: 23 Android Wear:通知 出门问问 · Confidential and Proprietary 自定义通知(Contextual Notification) 通过android wear SDK,可以利用系统提供的模板,或者完全自定 义来显示自己的卡片内容,并且还能支持更多的动作,体验会更好。 24 Android Wear:全屏APP 出门问问 · Confidential and Proprietary 全屏APP:二维选择器(2D Picker) 二维选择器是SDK提供的一种预置模板,当开发者需要开发一些内容 列表供用户选择的时候,可以考虑使用此模板加快开发速度。 25 Android Wear:全屏APP 出门问问 · Confidential and Proprietary 全屏APP:全自定义布局(custom layouts) 有时候在一张卡片上无法完成所有事,比如查看自己的运动记录或者玩 游戏。这时候,开发一个占全屏的,完全自定义的app就有必要了。 26 Android Wear OS简介:应用实例 手表上的出门问问 出门问问 · Confidential and Proprietary 天气,酒店,餐厅,电影,美女,百科 27 Glass, Wear, Android: 区别和关联 Google Glass 出门问问 · Confidential and Proprietary 基于 安卓 部分兼容 安卓app 封闭 着重 提醒不开放源码 新增 API,GDK Android Wear 基于 安卓 部分兼容 安卓app 更加 封闭 卡片式提醒 新增SDK 不开放源码 28 Glass 与 Wear:生态链? 出门问问 · Confidential and Proprietary 不再以APP为中心 谁来控制通知显示? 应用怎么被触发? 29 开发中的难事与思考 天然坑(还没开始呢,就碰壁了) 是什么? 初次配对手机与android wear手表不顺利,花了2天 时间才搞定 为什么? Google 服务由于一些很奇怪的原因在国内无法使用 怎么样? 下一页我来讲一讲当你拿到一块android wear手表后,会怎么做? 该给其他新手什么建议? 出门问问 · Confidential and Proprietary 30 开发中的难事与思考 天然坑 1.搭载Android 4.3以上系统的手机 2. 手机是否保留了Google service framework,也就是可以安装Gapps。 3. 是否有一个稳定的VPN。 4. 下载Android WearAndroid wear APP。 5. 别高兴的太早!一般情况下,Android wear去play store更新Google search后,随后你需要删除 Android Wear并重新安装。(所以你发现你之前辛辛苦苦下载android wear是浪费时间。) 出门问问 · Confidential and Proprietary 6. 更新google search后,再一次下载Android Wear并打开, 一般情况下,又会提醒你去更新google play service 5.0 7. 终于一切都准备就绪后,继续打开android wear才能正常进 入蓝牙匹配流程,找到自己的手表,开始连接。 8. 国内默认关闭google now。想体验google now的推送服务 ,请自行百度激活方法。 31 开发中的难事与思考 又一次,别高兴的太早.不是每一次等待都有结果 出门问问 · Confidential and Proprietary 32 开发中的难事与思考 自挖坑(蓝牙通讯,速度、稳定性) 是什么? 出门问问语音搜索采用的是streaming来传输语音数据。语音从手表传到手机上,再经过手机中 转发送到服务器。而开发完成后,我们发现每次语音搜索都会卡在语音识别阶段,最后崩溃。这让 我们很困惑. 为什么? 我们发现android wear提供的data api信道非常狭窄,用于同步和传输一些健康、搜索数据没问 题。对于streaming的语音数据就有点过窄了,容易导致内存溢出。 怎么办? 我们自己实现了一套蓝牙通讯方法,用来专门传输出门问问的语音流。而由于时间紧迫,在蓝牙 传输的稳定性,和速度上,无法与google自己的api相媲美。 出门问问 · Confidential and Proprietary 33 来自工程师的建议 出门问问 · Confidential and Proprietary 熟读官网上的教程和设计原理! 如果使用Android Studio,其内置支持Android Wear项目创建、库包含、APK生成打包等。这 样开发中,代码依赖、管理、工程构建和集成比较方便。 程序员在开发调试时需要保持足够的耐心。 由于Android wear目前支持的手机和手表不多,稳定性不是很好,特别是链接、匹配相关。开发初 期选择好一对相应固定的手机、手表可以减少不必要的时间浪费。(nexus4+) 为了在手表和手机端同步和发送数据,需要用到Wearable Data Layer API。这套API属于Google Play Services, 所 以开发时需要包含相应的SDK包。Wearable Data Layer API中包含了用于同步数据的DataApi,发送接收数据的 MessageApi,节点连接的NodeApi,以及相对应的Listener Services。这些API隐藏了蓝牙连接的底层细节,使得 APP开发可以更多关注于自身逻辑和功能。最好多多了解一下这些API,选择合理的方式实现数据的传输。 34 来自工程师的建议 出门问问 · Confidential and Proprietary 在开发手表APP时,为保持UI和Android Wear风格一致,可采用Wearable UI支持库,其中包含了 WearableListView、CardFragment、GridViewPager等等手表特有的UI类。基于这个UI库,可以更快捷方便 地开发Android Wear的APP。 在开发wear时,可以借鉴android原生应用代码和一些开源的项目,特别是一些业务流程比如后台 service、数据库provider等都可以借鉴,这样可以加快应用原型的输出,当然由于手表屏幕小操作 不方便,ui交互要尽量简洁,不能像手机似的一个页面内放置很多不同的事件 如果开发的app对蓝牙通讯的需求较高,则基础组件例如蓝牙部分应该优先解决,否则其他部分受此影响比较大,这 个做好了,开发才能提前发现蓝牙连接存在的问题,才能够将wear apps push到手表上,才能写消息推送服等 如果是开发手表本地app,因为手表上链接调试不是很方便,建议刚开始可以先在手机上进行一些业务逻辑和 初步ui上的开发调试,等整个应用基本完成再移到手表进行一些UI优化调整和蓝牙链接调试。 实现AI需要的技术 能思考:理解自然语言, 学习 看得见: 计算机视觉 能说话: TTS 会操控 听得见: 语音识别 更高级的:情感,创造,群体智慧等 智能可穿戴上的人工智能 智能反馈 算法推理 传感器 出门问问是智能设备的大脑 38 End 出门问问 · Confidential and Proprietary 欢迎加入微信群欢迎加入微信群 Android Wear开发者