字幕组成品列表(Beta)
  • 写在前面
  • Android 平台
    • Game On! 游戏开发系列 - 031
      • Pie Noon - 1503060393
      • The Death of Base Game Activity - 1504030543
      • Surviving OpenGL Context Loss - 1504030546
      • WebP for Game Devs - 1504030547
      • Saved Games In-Depth (Part 1) - 1504070556
      • Saved Games In-Depth (Part 2) - 1504030548
      • Smaller Flipbook Textures with CRABBY - 1504030544
      • Google Tag Manager - 1504030545
      • Flatbuffers - 1505050794
      • Achievement Point Pointers - 1505050796
      • Frequency Scaling - 1505050797
      • Meet the Management APIs - 1501140367
      • Y U Ship Broken Games - 1505050795
    • Android 性能优化 - 088
      • Garbage Collection in Android - 1503170425
      • Performance Cost of Memory Leaks - 1503170424
      • Rendering Performance 101 - 1501130351
      • Understanding Overdraw - 1501130352
      • Understanding VSYNC - 1501130353
      • Tool - Profile GPU Rendering - 1501130354
      • Why 60fps? - 1501130355
      • Android UI and the GPU - 1501130356
      • Invalidations, Layouts, and Performance - 1501130357
      • Overdraw, Cliprect, QuickReject - 1501130358
      • Tool - Memory Monitor - 1501130363
      • Battery Performance 101 - 1501130364
      • Understanding Battery Drain on Android - 1501130365
      • Battery Drain and WakeLocks - 1501130366
      • Memory Performance 101 - 1504170661
    • I/O 2014 Android 开发专题 - 089
      • Activity Transitions - 1504020505
      • Building Apps For Android TV - 1504020520
      • Building great Android media experiences - 1504020510
      • Building a quality app from start to finish - 1504020515
      • App Indexing API - 1504020507
      • What's new in WebView - 1504010484
      • Bluetooth Low Energy - 1504010486
      • Building impressive Android media experiences - 1504010493
      • The next Generation of Authentication - 1504020497
      • Don't Alpha That Pixel! - 1504020523
      • NFC + HCE Your phone in an interactive world - 1504020509
      • Demystifying encodes and decodes of WebM - 1504020521
      • Google Cloud Messaging - 1504020524
      • Getting your Game on the Big Screen - 1504020518
      • I hear you like realtime memes - 1504020511
      • Offerize your App - 1504020506
      • Using the Android Job Scheduler - 1504020504
      • From Holo to Material - 1504020526
      • Under the Hood of Android Auto - 1504020501
      • Isolation for Android App Developers - 1504020498
      • Android Work - 1504010496
      • ExoPlayer: Adaptive video streaming on Android - 1504010489
      • Sample rates and resampling: Why can't we all just agree? - 1504010488
      • Drive Android API - 1504010485
    • Android Studio - 004
      • Layout Editor (Ep 3, Android Studio) - 1503290479
      • Introducing Gradle (Ep 2, Android Studio) - 1503170426
    • I/O 2014 Android 分发主题 - 091
      • Introduction to Google Play - 1504030534
      • Google Play: building your user community - 1504030535
      • Optimizing Apps for Education - 1504030536
      • Succeeding in Education Technology - 1504030530
      • Subscriptions Made Easy with Google Play - 1504030531
      • The world is your playground - go global with Google - 1504030533
      • Maximizing discoverability on Google Play - 1504030538
    • Android Auto - 003
      • Introduction to Android Auto - 1504130615
      • Android Auto Messaging - 1504130617
      • Android Auto Audio - 1504130616
    • Android Wear - 006
      • Designing for Android Wear - 1503210448
      • How We Customized Google Apps for Android Wear - 1503210450
      • Fullscreen apps for Android Wear - 1503210445
      • New Notification Features for Android Wear - 1503210446
      • Building Cloud-powered wearable Apps - 1503210449
      • An Introduction to Android Wear - 1503190435
      • Google I/O 2014 - Android Wear: The developer's perspective - 1503210442
      • Devoxx 2014 Interviews: Android Wear - 1503210440
      • DevBytes: Watch Faces for Android Wear - 1503210439
    • Android TV - 005
      • Using the Leanback library - 1504080588
      • Beach Buggy Racing Multiplayer with Nearby Connections (Play Services) - 1503060387
    • Android for Work - 106
      • Android for Work for Developers - 1503060390
      • App Configurations, Testing and Launchers - 1504110590
    • IO Bytes 2014 - Android - 066
      • Chrome Apps on Android and iOS - 1501080014
      • Perf Primer CPU, GPU and your Android game - 1501080017
  • Chrome 平台
    • IO Bytes 2014 - Chrome and Web - 067
      • Using the PageSpeed API - 1505070815
      • Fabulous Forms for the multi-device web - 1505070816
      • Testing multi-screen web pages - 1505070817
      • Responsive images today - 1505070819
      • Web Performance Testing at YouTube - 1505070828
      • Building sites for the multi-device web - 1505070820
      • Deep dive: Google Cloud Messaging for Chrome - 1505070827
  • Google 创业者资源
    • Coffee with a Googler - 012
      • Chat with Allen Huang of AndroidTV - 1503040384
      • Chat with Fred Chung about developer advocacy - 1503070395
      • Google Fit platform with Michelle Haq - 1503210443
      • Android Auto Product Manager Andrew Brenner - 1501120027
      • Chat with Francis Ma about Google Play services - 1501120028
    • Root Access For Startups - 077
      • What we learned building plug-ins for Android, with startup Magnet - 1503230453
      • How to use crowdfunding to your advantage, with startup Hale Devices - 1503280462
      • How to overcome customer objections when selling tech, with startup Guesswork - 1503280458
    • First Things First - 029
      • Getting started with Android: A crash-course in developing for Android - 1504120601
      • How to ask a question: conducting research for your startup - 1504120603
      • MVP Design Hacks: transform your hot idea into a validated prototype - 1504120602
      • Build something people want: Solving real problems - 1504120605
    • How I - 061
      • Use BigQuery to find my most valuable customers - 1504070573
      • Manage beta testing communities using Google Play - 1504070572
      • Use paper wireframing to build native prototypes - 1504070570
      • Used social media and $0 marketing to get 68 million users - 1504070568
      • Prep to fundraise with four questions - 1504070564
      • Validated my idea in 2 days (with no code) - 1504070562
      • Build open platforms on Android - 1504120596
      • Get cheap, automatic analytics for my business using BigQuery - 1504070571
      • Write press releases to get international media coverage - 1504070569
      • Test beta-product features using Google Apps - 1504070563
      • Use URL builder to measure ROI on social media - 1504070561
      • Use events to build DeadSocial's brand - 1504070557
      • Use BigQuery to visualize streaming data - 1503220452
      • Find, screen, and hire developers - 1503120406
      • Drive engagement with social challenges - 1504070558
  • 设计
    • DesignBytes - 017
      • Paper and Ink: The Materials that Matter - 1505050793
  • 云计算
    • DevBytes: Google Cloud Platform - 021
      • Powering the next killer app with the Google Cloud Platform - 1504210672
      • Introduction to Google Cloud Endpoints - 1504210675
      • The Beauty of Scale with Google Cloud Platform - 1504210678
    • Google Cloud Platform - Big Data - 105
      • GDELT & BigQuery: Understand the world - 1502200379
    • Uncategorized - 999
      • Introducing Google Cloud Platform Resources - 1501190370
  • Google 应用开发
    • Launchpad Online - 072
      • The Setup: Creating new apps using Google APIs - 1503190428
      • Listing your files in Google Drive - 1503190429
      • Customizing Google Analytics for your startup - 1503290473
      • The Launchpad Online series - 1503190427
      • Getting started with Google Analytics - 1503290472
      • Accessing Google Maps from a spreadsheet?!? - 1502220381
      • Change the world in 10 lines of code - 1503080398
    • Google Play Services - 054
      • Google Play services 6.1 - 1503290481
      • Google Play Services 7.0 - 1503200437
      • Google Play Services 6.5 - 1501080015
    • 谷歌地图 iOS SDK - 053
      • Maps Live: New Features in the Google Maps Mobile APIs for Android and iOS - 1504300777
    • Google 移动搜索开发 - 055
      • Is your app in the Google index? - 1504120598
      • Get more engaged users with Google Search for Developers - 1503070397
    • DevBytes: Google Cast - 020
      • Google Cast SDK for Android - 1504180666
      • Media Router Framework - Part 1 - Media Router API - 1504180667
      • Overview for Google Cast Receivers - 1504180664
      • Google Cast SDK for iOS - 1504180663
    • Getting Started with the Google Maps SDK for iOS - 035
      • Getting started with the Google Maps SDK for iOS, Part 1 - 1504270757
    • IO Bytes 2014 - Wearables - 070
      • Voice Driven GDK Glassware - 1505280836
    • Route 85 - 078
      • Introducing Route 85 - 1501120022
      • Quick Tip: Don't Default that Switch! - 1501190371
      • OpenInChrome on iOS, Part 1 - 1501120023
      • OpenInChrome on iOS, Part 2 - 1501120024
      • OpenInChrome on iOS, Part 3 - 1501120025
      • OpenInChrome on iOS, Part 4 - 1501120026
    • DevBytes 2014 - 019
      • Web Components - Template - 1505040789
      • Wearable DataLayer API - 1505050792
      • Using srcset for responsive images - 1505050790
      • The picture element for art direction - 1505050791
    • Uncategorized - 999
      • Sun Surveyor brings augmented reality to photographers using Google Maps APIs - 1504200668
      • Snappy travels with the Roads API - 1503060392
      • Easy Maps Apps in Java and Python - 1501140030
  • Google 广告平台
  • Polymer
    • Polycasts - 076
      • The Awesome Power of Auto-Binding Templates -- Polycasts #08 - 1502220382
      • Content Switcheroo with Core-Pages -- Polycasts #09 - 1502200380
      • Core Iconset -- Polycasts #02 - 1505040788
  • Web 平台
    • HTTP 203 - 062
      • Gotchas - 1501140368
      • Font Rendering - 1501080016
    • Web Components - 081
      • DevBytes: Web Components - Overview - 1504250709
  • 宣传视频
    • Uncategorized - 999
      • Google Developers - 1501150369
      • I/O Extended 2014 - Join me - 1502220383
  • Google 各类开发者会议
    • 2014 Chrome 开发者高峰会议 - 009
      • Keynote - Chrome Dev Summit 2014 (Darin Fisher) - 1503120407
      • TLS All the Things! - Security with Performance(Chris Palmer) - 1503140412
      • Let’s build some apps with Polymer!(Rob Dodson) - 1503150415
      • Day One Closing Remarks(Sundar Pichai) - 1503150417
      • Chrome Leadership panel - 1503160422
      • Fundamentals of Mobile Web Development(Matt Gaunt) - 1503150416
    • 2015 游戏开发者大会中 - 039
      • FlatBuffers - 1504150640
      • Games for Google Cast - 1504150637
      • Top 10 Things Android Game Developers Should Know v 3.0 - 1504150643
      • Automate Publishing for Google Play APIs - 1504150639
      • 3 Game Design Mistakes You're Making - 1504150636
      • Android TV - 1504150638
      • How to Go Viral Without Really Trying - 1504150641
    • Devoxx 2014 Interviews - 024
      • What's new in Android 5.0 Lollipop - 1504260740
      • Android Tools - 1504260743
      • BigQuery and user-defined functions - 1504260744
    • IO Bytes 2014 - 065
      • Dart in Google Cloud - 1505070810
      • Big genomic data on Google Cloud Platform - 1505070811
      • Easy International Checkout with Chrome - 1505070802
      • Google developer tools and APIs for iOS - 1503190436
      • Whet your appetite with IO Bytes - 1501080021
    • PlayTime@Shanghai - 095
      • 主题演讲 Chris Yerga - 1504060549
      • 如何成功地开发你的应用 Ellie Powers - 1504060550
      • 在Google上营利 Brahim Elbouchikhi - 1504060551
      • Playtime Shanghai event sizzle reel - 1504070552
    • Project Google I/O 2015 - 098
      • Project Tango Mobile 3D tracking and perception - 1506120857
      • Democratizing Education - 1506120868
      • Improve your Android app’s accessibility - 1506120864
      • Google Cloud Messaging 3.0 - 1506120844
      • Developers connecting the world through Google Play - 1506120862
  • 开源开放技术
    • Compressor Head - 013
      • The Trailer, Season 2 - 1503060385
      • Behind the Scenes - 1503210441
      • Arithmetic Compression (Ep 5, Compressor Head) Google - 1503070394
      • Introducing Compressor Head - 1502120372
      • Episode 1 (Variable Length Codes) - 1502120373
      • Episode 2 (The LZ77 Compression Family) - 1502120374
      • Episode 3 (Markov Chain Compression) - 1502120375
Powered by GitBook
On this page
  • 译者信息
  • 解说词中文版:

Was this helpful?

  1. Android 平台
  2. Android Wear - 006

How We Customized Google Apps for Android Wear - 1503210450

PreviousDesigning for Android Wear - 1503210448NextFullscreen apps for Android Wear - 1503210445

Last updated 5 years ago

Was this helpful?

视频发布时间

2014年6月25日

视频介绍

This talk demonstrates some of the core experiences on Android Wear enabled by Google's first-party apps, and describes the changes we made to these apps to support a better wearable experience.

视频推介语

暂无,待补充。

译者信息

翻译

润稿

终审

原始链接

中文字幕

翻译流水号

加入字幕组

兰州夏菜二厂

xin.zhang

程路

1503210450

解说词中文版:

嗨 我是Dan Aminzade 是Android Wear团队的一名攻城狮

如果你制作过安卓APP的话 你可能会困惑如何更新你的APP

使它能够更好地在可穿戴设备上工作

在这个视频里

为了让你更好地了解你可能要做出的改变 我会告诉你

我们是如何更新谷歌自己的APP 使其更好的支持安卓可穿戴设备的

我将重点放在四款APP上

来展示使用Android Wear API开发的不同点 分别是 Gmail

Hangouts Camera和Google Maps

其中的每个APP展示了

Android Wear API的不同方面的特征

让我们从Gmail开始吧

Gmail会在你的手机上产生两种类型的通知

一种是是像这样 当你收到一封电子邮件时

另一种是像这样 当你有多封未读邮件时

一封电子邮件的通知会包含这封邮件的部分片段

以及2个操作 归档和回复

不对Gmail做任何的改变

该通知会从手机推送到可穿戴设备上

并且会在屏幕上显示为一张卡片

你可以在卡片上滑动来选择回复或归档

问题是回复动作是否能够做的

像在手机上选择一样

让你打开手机里的Gamil APP

然后输入回复内容

所以我们最先想做的

是允许人们说出快速的语音

来回复他们的手表 使他们可以直接通过手腕

回复电子邮件

安卓的通知API现在可以

给通知动作

添加一个远程输入 它告诉Android Wear

在执行动作之前 你可能要通过语音收集

一些自由形式的文本

当我们在Gmail中创建一个通知时

我们对回复动作附上一个远程输入

Android Wear捕获到这个远程输入

不是立即激活这个动作

而是首先打开一个转录UI收集说出的回复内容

在激活手机上的intent之前

将转录文本发送到intent

当Gmail启动并发现这个文本

它会知道需要如何完成回复动作

然后继续并发送邮件

而不用打开手机上的任何UI

所以添加语音回复只需要稍微修改两处代码

首先 改变回复动作以包含一个远程输入

接着 修改从这个动作

接收到的intent的activity

判断intent是否包含一个文本响应

最酷的是通知体验

在手机上并没有改变

如果你选择在手机通知栏中回复通知

Gmail会启动同样的activity

但是由于远程输入不密集

它通常会显示Compose窗口让你输入一个回复

现在 我们来看看多个消息通知的情况

它使用多行收件箱样式

在一个可拓展的设计中

我们需要每个邮件单独显示一张卡片

而不是把一堆短行文本挤在一张卡片上

这些大量的通知卡片

是通知API的一个新特性

不是将所有的电子邮件线程合并在一起

发送一个通知

而是我们发布多个通知 每一封电子邮件一个通知

但是所有这些通知都具有相同的group key

以表明他们是相关的

然后它们在可穿戴设备上被组合为一个卡片包

现在我们得到了一个不错的卡片集合

你可以通过点击包来展开它们

然后分别阅读每张卡片

注意到在包中的每个卡片

可以有自己的动作

所以我们可以在这一组中回复或归档单独的邮件

就像我们处理单独的邮件一样

通知集合还有一个sort key

你可以通过设置来控制在包中的卡片的顺序

你可以标志包中的一个通知

作为一个摘要通知

它是整组通知的代表

对于Gmail 我们采用默认的原始收件箱样式通知

作为摘要

摘要通知

显示在手机通知栏中

没有摘要的包是显示在可穿戴设备上的

接下来 让我们看看Hangouts

Hangouts消息同样可以自动弥合在可穿戴设备上

但是我们想要做些细微的改变

来增强安卓可穿戴设备的体验

和Gmail一样 我们想要语音回复

但是Hangouts的通知是有点不同的

它们没有回复动作

只有一个content intent打开应用程序 以使你可以输入回复内容

这在可穿戴设备上显示为一个手机的Open动作

幸运的是 现在的通知API允许您在手机和可穿戴设备中

指定不同的动作集合

手机动作仅仅会显示在手机上

同样可穿戴设备的动作只会显示在可穿戴设备上

这就允许我们添加一个可穿戴设备仅有的回复动作

包含一个远程输入

却不改变手机的行为

Hangouts 同样使用另一个新的通知功能

即消息页面

我们认为这将很有用 如果在主消息卡片上

滑动侧边栏 你可以在另一个页面

看到最近的历史对话记录

这个不是手机非常必要的

因为你可以打开APP去查看历史对话记录

但是在可穿戴设备上 在回复之前

获得额外的上下文是很有必要的

为了实现这个功能 我们使用WearableExtentder的AddPage方法

它允许你在主要的通知上

添加额外的内容页面

我们把chatHistory设置为第二个bigText style的通知

并将它添加到主通知作为第二页

同样 通知体验在手机上并不会变

但是在可穿戴设备上 我们得到了第二页的内容

来展示聊天记录

这就是Hangouts在可穿戴设备上的一个完整例子

这是一个图片消息 一页仅仅是一个图片

一页仅仅是聊天历史记录 和一个回复动作

来记录一个快速的音频回复

让我们来看Camera

我们想为谷歌摄像APP添加一个有趣的功能

这会让你从你的手腕触发快门

你可能见过具有远程控制功能的高端相机

这里的想法是相同的

你把你的手机放在三脚架上

或是你靠在墙的另一面 或者你让别人帮你拿着相机

然后你通过按可移动设备上的按钮来触发照相

对于Gmail和Hangouts 仅仅通过使用通知API

我们完全实现了手机端的集成

但对于这个例子

制作一个可穿戴设备APP是有意义的

首先 当全屏运行时

他不会对Camera APP投放消息

在手机上产生影响

所以我们知道手机设备上的行为和可穿戴设备上的

是不对称的

我们也认为 对于这个例子

通过可穿戴设备快门按钮接管整个屏幕是合适的

而不是在屏幕上限制

卡片的按钮功能

所以 我们建立了一个简单的应用程序运行在可穿戴设备上

通过谷歌游戏服务来和主要的Camera APP沟通

当Camera APP准备去拍照的时候

它将设置一个dataItem

表明准备接受远程快门的消息

这个数据项是由智能手表上的可穿戴设备APP的一个service来实现读取的

它上面显示了快门键

按下按钮将发送消息给手机

来触发快门

最后 为了预览你刚刚拍摄的照片

手机应用程序创建了一个缩略图

并将其返回给手表仅作为一个存放数据的物品

可穿戴设备读取内容 并全屏预览

这就是它最终看起来的效果

我在手机上打开Camera APP 然后看到一个写有字符串的卡片

我可以轻触卡片启动一个

具有快门按钮的全屏activity

我轻敲快门按钮 然后经过倒计时后

我的手机拍下来一张照片 并且可以在可移动设备上预览

不错的自拍

让我们来看谷歌地图

在语音导航时

我们想在手腕上显示方向

这会在你走路时非常管用

当你感到拿着你的手机很尴尬时

现在你可以更方便的把手机丢在口袋里

然后来靠你的手表来展示方向啦

因为我们想要在可穿戴设备的

布局和方向的表现上

获得更加细粒度的控制

我们决定制作谷歌地图穿戴APP

来呈现自定义信息而不是单纯的消息推送

我们修改了谷歌地图手机应用程序

来更新对于数据项的描述信息

下一步机动动作图标

和导航状态信息

地图穿戴APP监听数据项的变化

每次改变 它将重新读取新数据

然后更新卡上的数据到到移动设备上

为了绘制这张卡片

可穿戴设备APP使用了WearableExtender的新的displayIntent的功能

你指定一个activity来绘制

通知卡片上的内容

这可以使你随心所欲的画上你想显示的内容在卡片上

而不是被标准的通知样式所局限

卡片在周围低功率模式下 或是峰值状态下

仍需要使用标准的通知模板

但是当你轻触卡片进入到全屏视图后

系统将会改变色调进入自定义视图

由自定义显示activity来绘制

这个有些不爽的是

无论是在峰值模式还是环境模式都不得不使用标准样式

但安卓穿戴设备引用了一些新的

可穿戴设备特定的通知模板 就像大的动作样式

和内容图标样式

最后一个特性

我们同样也想让你开始一个导航会话

通过一个声音命令 比如导航到donuts公司

为了实现这个 地图穿戴应用有一个activity

它具有一个将导航声音动作过滤的intent filter

就像这样来创建一个intent

穿戴式应用收到这个intent

并将一条消息发送给手机上的谷歌地图

包含一个目的地与到达方式

手机地图应用收到这个消息

并开始一个导航会话到目的地

然后你就可以出发了

这就是我们的Gmail Hangoouts Camera 和谷歌地图

都准备好了为安卓穿戴设备而奋斗

我希望它能给你一个很好的介绍关于

你可以在安卓穿戴设备平台上做些什么

我希望它能激发你定制自己的应用程序

来更好的支持可穿戴设备的体验

Youtube
Youtube
加入 GDG 字幕组
video_screenshot