字幕组成品列表(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 Auto - 003

Android Auto Audio - 1504130616

PreviousAndroid Auto Messaging - 1504130617NextAndroid Wear - 006

Last updated 5 years ago

Was this helpful?

视频发布时间

2014年11月18日

视频介绍

视频推介语

暂无,待补充。

译者信息

翻译

润稿

终审

原始链接

中文字幕

翻译流水号

加入字幕组

韩晓健

苏楚霖

——

1504130616

解说词中文版:

WAYNE PIEKARSKI 大家好

你知道开发者现在可以

为他们的应用添加Android Auto的支持吗

我是Google的Wayne Piekarski 这次的Devbyte

我将向你展示

简单的使用新的媒体API把

现有的音频APP修改成可以与Android Auto协作

你的应用还有音频内容都将在手机上运行

但是可以在汽车上听到声音

也可以用汽车上的系统操控你的应用

Android Auto软件在你的手机上运行

并负责绘制显示在汽车

显示屏上的用户界面

手机通过USB线来控制汽车的显示

你可以在Introduction to Android Auto Devbyte

中找到更详细的运行原理

我来向你展示如何把现有的音乐应用

扩展成可以与Android Auto协作

比方说你在存储了很多音乐的手机上

打开一个音乐播放App

你会想让你的用户可以在汽车上的控制键来选择和播放歌曲

而不需要使用手机

尽管这些事都是在手机上处理的

你的APP需要让Android Auto知道这个音乐库

以便它能把媒体信息

以及专辑封面显示在汽车的屏幕上

你的APP还要能响应

方向盘上的控制键

比如播放 停止 下一曲等

让我来向你展示一个例子

看看从用户角度是什么样子的

我们现在要做的是

打开音乐APP 然后选择播放列表

选择类型 然后从这些类别里

选择一首歌

音乐响起

让我们回到工作室来看一些代码

我来告诉你他是怎么工作的

要实现这么酷的功能

第一步我们要建立AndroidManifest.xml文件

来告诉Android Auto你的APP会给汽车提供服务

需要提供一个像这样的XML文件

文件里包含了媒体信息的汽车APP的标签

这是因为我们要实现一个音乐播放APP

还要声明一个媒体浏览服务

来通知Android Auto你的APP能提供

可用的媒体的信息

下一步要实现这个媒体浏览服务

首先要实现onGetRoot方法

它返回媒体库的顶层节点

它不在UI里显示

这里还要禁止

任何除了Android Auto

通过查询与Android Auto包名

相匹配的客户端包名来

查询你的应用

下一步要提供onLoadChildren方法

它生成媒体列表 给出父节点的

媒体ID

返回的每一项既像子文件夹一样可浏览

也可以像歌曲一样播放

可以通过

在Media Items Constructor里传递其中一个标志来区分

在onLoadChildren里应该激活一个异步任务

然后调用detach方法

当得到结果

这个异步任务能通过结果发送来返回结果

这里使用异步任务确保用户界面是可以正常响应

并且当代码正在查询媒体库时

不会被阻塞

现在 由于用户是在车里

减少用户操作

是非常重要的

所以你要在顶部放置常用项

比如播放列表 频道和其他常用的内容

还应该避免显示无限制的类别

比如所有艺术家 因为这些列表

对用户来说很不容易找到想要的歌曲

而是应该建立有限制的内容

提前准备好用户需要的东西

接下来我们要建立媒体会话

它就像胶水一样让Android Auto告诉

我们的音乐APP来播放什么音乐

媒体会话知道我们的APP的播放状态

播放队列和其他的数据

然后我们要通过setSessionToken方法把

媒体会话绑定到媒体浏览服务

确保在这里也调用了setActive方法

这是因为这表明会话已准备好接收命令

十分重要

通过SessionToken

Android Auto可以实现媒体控制器

它可以通过媒体会话回调方法来远程控制

我们的媒体会话

此图表明了各部件如何

合作实现的

可以看见媒体APP和Android Auto APP

在手机上互动并且显示在汽车上

顺便说一句 这个接口不是Android Auto特有的

Android Auto其实只是一个使用媒体控制器的客户端

最大的优点是其他你允许访问的SessionToken的APP

只是通过建立一个新的媒体控制器

就可以控制媒体会话

比如 手机上普通的音频播放

应该算是客户端其中之一

委托媒体库处理和媒体播放控制

相同的Android Auto的媒体浏览服务的客户端之一

为了测试你的App 我们提供了一个类似车上体验的

媒体浏览模拟器

这样你可以在手机或Android模拟器上运行媒体浏览模拟器

来测试是否正确的使用API

它使用和Android Auto相同的媒体控制接口

和媒体浏览服务来提供接近于

汽车里的操作体验

在开发时测试会非常棒

好了

就这么多

让我们回到车上离开吧

你可以访问网站了解更多的Android Auto文档

也可以加入Google+社区

你可以和人们分享你的想法

感谢收看Android Auto的介绍视频

我是Wayne Piekarski 下次见

Wayne Piekarski introduces Audio on Android Auto. Google and Android Auto enable you to extend your existing audio applications for use in the car, using the Android 5.0 Lollipop media APIs. Your application and it’s audio content will run on the phone, but will be heard and controlled via the sound system built into the car. This DevByte from +WaynePiekarski covers how to expose the contents of your application’s audio library to the media APIs, such as song information and album artwork, and how to respond to requests from the buttons in the car. With audio for Android Auto, you can extend apps to the car in a way that’s more efficient for the driver. So drivers can stay connected, but with their hands on the wheel and their eyes on the road.Android Auto Audio documentation: Code sample: G+ Community: Wayne Piekarski:

https://developer.android.com/training/auto/audio/index.html
https://developer.android.com/samples/MediaBrowserService/project.html
https://plus.google.com/communities/116320632775523824083
https://plus.google.com/communities/116320632775523824083
Youtube
Youtube
加入 GDG 字幕组
video_screenshot