blob: 728dff78b7988e548e8a4ae0ed4fee044f6282d2 [file] [log] [blame]
Robert Ly20555292014-06-13 23:28:19 -07001fullpage=true
2page.viewport_width=970
3no_footer_links=true
4excludeFromSuggestions=true
5page.metaDescription=Android Auto
6
7@jd:body
8
Ricardo Cervera5fa67542014-06-15 21:23:16 -07009<style>
10.jd-descr {
11 height:auto;
12}
13#copyright {
14 margin-top:-35px;
15}
Ricardo Cervera6d615302014-06-20 18:42:30 -070016.auto-img-container {
17 position:relative;
18}
19.auto-img-frame {
20 z-index:2;
21 position:relative;
22}
23.auto-img-shot {
24 position:absolute;
25 top:9px;
26 left:8px;
27 z-index:1;
28}
29.auto-img-container-cols {
30 position:relative;
31 margin-top:10px;
32}
33.auto-img-frame-cols {
34 z-index:2;
35 position:relative;
36}
37.auto-img-shot-cols {
38 position:absolute;
39 top:0px;
40 left:0px;
41 z-index:1;
42 border:1px solid #;
43 -webkit-border-radius: 7px;
44 -moz-border-radius: 7px;
45 border-radius: 7px;
46}
47.auto-col-2 {
48 width:380px;
49 display: inline;
50 float: left;
51 margin-left: 10px;
52 margin-right: 10px;
53}
54.auto-img-container-single {
55 width:380px;
56 margin:0 auto;
57 margin-top:20px;
58}
Ricardo Cervera5fa67542014-06-15 21:23:16 -070059</style>
60
Robert Ly20555292014-06-13 23:28:19 -070061<div style="width:780px; margin:0 auto;">
62
63<div id="qv-wrapper">
64<div id="qv">
65<h2>In this document</h2>
66<ol>
67 <li><a href="#design">Design</a>
68 <ol>
69 <li><a href="#designprinciples">Design Principles</a></li>
70 <li><a href="#uioverview">UI Overview</a></li>
71 </ol>
72 </li>
73 <li><a href="#architecture">Architecture</a></li>
74 <li><a href="#uitemplates">UI Templates</a>
75 <ol>
76 <li><a href="#launchapp">Launch App</a></li>
77 <li><a href="#useractions">User Actions</a></li>
78 <li><a href="#drawertransitions">Drawer Transitions</a></li>
79 <li><a href="#daynighttransitions">Day and Night Transitions</a></li>
80 <li><a href="#customizetemplates">Customizing Templates</a></li>
81 </ol>
82 </li>
83 <li><a href="#devprocess">Development Process</a></li>
84 <li><a href="#emulator">Testing Your App</a></li>
85 <li><a href="#running">Running Your App</a></li>
86</ol>
87</div>
88</div>
89
90<h1>Android Auto Developer Overview</h1>
91
92<p>Android Auto extends the Android platform to car entertainment systems. When users connect
93their Android handheld device to a compatible vehicle, Android Auto lets users project apps on
94the vehicle’s touchscreen and interact with them using the vehicle’s controls.</p>
95
96<dl>
97<dt style="margin-bottom:10px"><strong>UI Templates</strong></dt>
98<dd style="margin-bottom:20px">
99Android Auto defines interaction models and UI templates for several app categories. The
100first version of Android Auto supports media apps, such as music, podcast, live radio, and
101audio news apps. Future versions will support messaging, communication, local search apps,
102and more.
103</dd>
104<dt style="margin-bottom:10px"><strong>Notifications</strong></dt>
105<dd style="margin-bottom:20px">
106The platform will integrate with existing Android APIs for notifications. Users will get
107some notifications from Android apps on the vehicle’s screen.</dd>
108
109<dt style="margin-bottom:10px"><strong>Voice Actions</strong></dt>
110<dd style="margin-bottom:20px">
111Android Auto supports voice search and voice actions for media apps. Future versions
112will support additional voice actions.</dd>
113
114<dt style="margin-bottom:10px"><strong>Easy Development Workflow</strong></dt>
115<dd style="margin-bottom:20px">
116To extend an existing Android app for Android Auto, you implement a set of interfaces and
117services defined in the platform. You can reuse existing functionality and many Android APIs
118you already know.</dd>
119</dl>
120
121<p>We’ll release the Android Auto SDK in the coming months, which will let you test your
122Android Auto experience on a regular Android device.</p>
123
124
Ricardo Cervera6d615302014-06-20 18:42:30 -0700125<h2 id="design">Design</h2>
Robert Ly20555292014-06-13 23:28:19 -0700126
127<p>Digital experiences for cars should complement and augment driving, not demand the driver's
128attention. Designing these experiences for cars is fundamentally different than in the case of
129phones and tablets. It requires rethinking how these experiences unfold.</p>
130
Ricardo Cervera6d615302014-06-20 18:42:30 -0700131<h3 id="designprinciples">Design Principles</h3>
Robert Ly20555292014-06-13 23:28:19 -0700132
133<p><strong>Glanceable</strong>. We designed Android Auto to reduce UI complexity, optimize user
134interactions, and lower cognitive load. Effective apps show just enough information
135and only provide features that do not require excessive menu interaction and navigation.</p>
136
137<p><strong>Predictive, yet predictable</strong>. Android Auto leverages rich, contextual awareness
138to keep the driver informed about important situations. Timely help is combined with predictable
139functions. Effective apps use patterns for common tasks and show timely information only when
140relevant.</p>
141
142<p><strong>Connected</strong>. Android Auto works with apps that drivers already use in other
143devices. Android Auto promotes a continuous app experience from phones and tablets to cars,
144providing access to user's existing settings, subscriptions, and digital libraries. Experiences
145that bring personal content and context from other devices are part of Android Auto.</p>
146
147<p><strong>Integrated</strong>. Android Auto blends your apps with the vehicle's entertainment
148system, creating a truly integrated experience in every car. By using the vehicle's screen and
149controls, apps feel tailored to each car.</p>
150
Robert Ly20555292014-06-13 23:28:19 -0700151
152
Ricardo Cervera6d615302014-06-20 18:42:30 -0700153<h2 id="architecture">Architecture</h2>
Robert Ly20555292014-06-13 23:28:19 -0700154
155<p>The Android Auto app projects your app's customized UI on the vehicle's screen. To communicate
156with the Android Auto app, your media app implements a set of media interfaces.</p>
157
158<div style="width:750px;margin:0 auto">
Ricardo Cervera6d615302014-06-20 18:42:30 -0700159<img src="{@docRoot}auto/images/figure01.png" alt="" id="figure1" />
Robert Ly20555292014-06-13 23:28:19 -0700160<p class="img-caption">
161  <strong>Figure 1</strong> - Architecture of Android Auto.
162</p>
163</div>
164
165<p>The architecture consists of the following components:</p>
166
167<p><strong>Media App</strong> - Runs a media service that exposes content through browsing and
168playback APIs. The service provides content to the Android Auto app. This is your Android app.</p>
169
170<p><strong>Android Auto App</strong> - Creates a templated UI and handles user interactions.
171This app uses a media client to request content from the media service running in the media
172app. The client requests data from the media service and monitors service states.</p>
173
174<p><strong>Vehicle Display</strong> - Shows app content and supports user interaction via
175on-screen soft buttons and other components, such as physical buttons or steering
176wheel controls.</p>
177
178<p>Android media apps must implement binders to these APIs:</p>
179
180<ul>
181<li><strong>Browsing</strong> - Enables a media client to browse a hierarchy of a user’s
182media collection, presented as a virtual file system with containers (similar to directories)
183and items (similar to files).</li>
184<li><strong>Playback</strong> - Enables a media client to control media playback and monitor
185playback state through callbacks.</li>
186</ul>
187
188
Ricardo Cervera6d615302014-06-20 18:42:30 -0700189<h2 id="uitemplates">UI Templates</h2>
Robert Ly20555292014-06-13 23:28:19 -0700190
191<p>The Android Auto app uses a templated UI to display content and user interaction
192opportunities. Android Auto provides you with a set of standard UI templates that follow
193international guidelines for minimizing driving distraction. You do not have to test your
194app's UI for for driver distraction, which is a lengthy and expensive process involving
195multiple legislations across the globe and different standards for each vehicle OEM.</p>
196
197<p>The UI templates define interfaces for browsing, searching, and listening to content from
198media apps. Although you cannot change the standard template format or layout, you can customize
199the template colors, action icons, background images, and more.</p>
200
Ricardo Cervera6d615302014-06-20 18:42:30 -0700201<h3 id="launchapp">Launch App Template</h3>
Robert Ly20555292014-06-13 23:28:19 -0700202
203<p>The Launcher template shows all the compatible media apps installed on the user’s
204Android device and lets users select one of them from an scrollable list:</p>
205
Ricardo Cervera6d615302014-06-20 18:42:30 -0700206<div class="auto-img-container-single">
207 <div class="auto-img-container">
208 <img class="auto-img-frame-cols" src="/auto/images/assets/00_frame.png" />
209 <img class="auto-img-shot-cols" src="/auto/images/assets/do_01_switcher.png" />
210 </div>
211 <p class="img-caption" style="margin-top:0px">
212  <strong>Figure 2.</strong> The Launcher template.
213 </p>
Robert Ly20555292014-06-13 23:28:19 -0700214</div>
215
Ricardo Cervera6d615302014-06-20 18:42:30 -0700216<h3>Primary App Template</h3>
Robert Ly20555292014-06-13 23:28:19 -0700217
218<p>After the user selects a media app, the display shows the primary app template. Figure
2193 shows the elements of this template that you can customize:</p>
220
Robert Ly20555292014-06-13 23:28:19 -0700221<p>You can customize the primary app template to show your own icons, app name, and
222background images. Figure 4 shows an example of a customized template:</p>
223
Ricardo Cervera6d615302014-06-20 18:42:30 -0700224<div class="cols">
225<div class="auto-col-2">
226 <div class="auto-img-container-cols">
227 <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
228 <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_05_template.png" />
229 </div>
230</div>
231<div class="auto-col-2">
232 <div class="auto-img-container-cols">
233 <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
234 <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_02_music.png" />
235 </div>
236</div>
237</div>
Robert Ly20555292014-06-13 23:28:19 -0700238<p class="img-caption">
239  <strong>Figure 4.</strong> A customized template.
240</p>
Robert Ly20555292014-06-13 23:28:19 -0700241
Ricardo Cervera6d615302014-06-20 18:42:30 -0700242
243
244<h3 id="useractions">User Actions</h3>
Robert Ly20555292014-06-13 23:28:19 -0700245
246<p>The primary app template supports four main actions on the action bar, four auxiliary actions
247on the overflow bar, and the <em>Return</em> action. You can use standard controls and customize
248the actions and icons, as shown in Figure 5.</p>
249
Ricardo Cervera6d615302014-06-20 18:42:30 -0700250<div class="auto-img-container-single">
251 <div class="auto-img-container">
252 <img class="auto-img-frame-cols" src="/auto/images/assets/00_frame.png" />
253 <img class="auto-img-shot-cols" src="/auto/images/assets/do_03_more.png" />
254 </div>
255 <p class="img-caption" style="margin-top:0px">
256  <strong>Figure 5.</strong> Custom extra actions.
257 </p>
Robert Ly20555292014-06-13 23:28:19 -0700258</div>
259
Ricardo Cervera6d615302014-06-20 18:42:30 -0700260<h3 id="drawertransitions">Drawer Transitions</h3>
Robert Ly20555292014-06-13 23:28:19 -0700261
262<p>For browse actions, the display shows the drawer transition and template:</p>
263
Robert Ly20555292014-06-13 23:28:19 -0700264<p>After the transition from the primary app template to the drawer template, the drawer
265appears on the center. The customized drawer template shows the media containers and
266media files provided by the media service in your app. You can also customize drawers
267with icons for list items.</p>
268
Ricardo Cervera6d615302014-06-20 18:42:30 -0700269<div class="cols">
270<div class="auto-col-2">
271 <div class="auto-img-container-cols">
272 <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
273 <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_06_gdrawer.png" />
274 </div>
Robert Ly20555292014-06-13 23:28:19 -0700275</div>
Ricardo Cervera6d615302014-06-20 18:42:30 -0700276<div class="auto-col-2">
277 <div class="auto-img-container-cols">
278 <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
279 <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_04_mdrawer.png" />
280 </div>
281</div>
282</div>
283<p class="img-caption">
284  <strong>Figure 4.</strong> Generic and customized drawer templates.
285</p>
Robert Ly20555292014-06-13 23:28:19 -0700286
Ricardo Cervera6d615302014-06-20 18:42:30 -0700287<h3 id="daynighttransitions">Day and Night Transitions</h3>
Robert Ly20555292014-06-13 23:28:19 -0700288
289<p>All the templates support different color schemes for day and night, as shown in
290Figure 8. The platform provides the state (day or night) and makes adjustments automatically.</p>
291
Ricardo Cervera6d615302014-06-20 18:42:30 -0700292<h3 id="customizetemplates">Customizing Templates</h3>
Robert Ly20555292014-06-13 23:28:19 -0700293
294<p>To customize the templates, provide the following app-specific resources and actions
295to the Android Auto media client.</p>
296
297<ul>
298<li><strong>Resources</strong> - App logo, app name, theme colors, and background images.</li>
299<li><strong>Actions</strong> - Multiple custom actions; for example: <em>Thumbs Up/Down</em>,
300<em>Favorite</em>, and <em>Bookmark</em>. These actions are app-specific.</li>
301</ul>
302
303<p>If provided, the media client automatically uses them in the templated UI.</p>
304
305
Ricardo Cervera6d615302014-06-20 18:42:30 -0700306<h2 id="devprocess">Development Process</h2>
Robert Ly20555292014-06-13 23:28:19 -0700307
308<p class="note"><strong>Note:</strong> When released, the Android Auto SDK will provide
309media service interfaces, an APK for handheld devices that simulates the Android Auto
310app, and other tools for Android Auto development.</p>
311
312<p>To create a media app for Android Auto, you include an Android service in your app
313that implements the media service interfaces provided by the Android Auto SDK. These
314interfaces define functionality for browsing and finding content, playing media,
315customizing the UI template, and performing app-specific actions.</p>
316
317<p>The media service interfaces present the content library as a navigable tree and enable
318clients to play media, get album art, obtain theme resources for the UI template, and
319invoke app-specific actions.</p>
320
321<p>You don’t have to create a new app for Android Auto: you can extend your existing
322Android app with implementations of the media service interfaces. Your service exposes
323your app’s media content, theme resources, and app-specific actions using the methods and
324data types specified by the media service interfaces. This simplifies the development
325cycle because:</p>
326
327<ul>
328<li>You do not have to maintain a separate project for Android Auto</li>
329<li>You can reuse existing functionality from your Android app</li>
330</ul>
331
332<p>The Android Auto client presents the customized UI to users and invokes the
333functionality from your service as needed. This has two additional advantages:</p>
334
335<ul>
336<li>Your app does not implement a UI for Android Auto</li>
337<li>Your app does not manage user interactions directly</li>
338</ul>
339
340<p>This also means that you do not have to worry about vehicle-specific hardware
341differences such as screen resolutions, software interfaces, knobs and touch
342controls.</p>
343
344
Ricardo Cervera6d615302014-06-20 18:42:30 -0700345<h2 id="emulator">Testing Your App on an Android Device</h2>
Robert Ly20555292014-06-13 23:28:19 -0700346
347<p>The Android Auto SDK includes an APK with a media client implementation, which is
348similar to those available in compatible vehicles. To test your app with this
349client:</p>
350
351<ol>
352<li>Get an Android device with a similar form factor to a dashboard screen (like a
353Nexus 7).</li>
354<li>Configure the device for Android development.</li>
355<li>Install the APK for the media client from the Android Auto SDK on the device.</li>
356<li>Install the APK for your app on the device.</li>
357<li>Open the media client app from the Android Auto SDK on the device.</li>
358<li>Select your app from the list of available services.</li>
359</ol>
360
361<p>The customized UI for your app appears on the client. You can navigate the content
362library and play media. If your app provides app-specific actions, these actions appear
363in the UI controls.</p>
364
365
Ricardo Cervera6d615302014-06-20 18:42:30 -0700366<h2 id="running">Running Your App on Android Auto</h2>
Robert Ly20555292014-06-13 23:28:19 -0700367
368<p>Media apps are available on the Google Play Store for compatible Android devices.
369When users connect their Android device to a compatible vehicle, the
370Android Auto media client shows a list of all the Android apps installed on the phone
371that implement the media service interfaces.</p>
372
373<p>When users select one of these apps, the Android Auto media client uses the app’s
374service to respond to user input and invoke the methods in the media service interfaces
375to build the UI, navigate the content library, and play media.</p>
376
377<div style="margin-bottom:40px"> </div>
378</div>