blob: e2a4947019642a0b9d95853e6737f3ad24718ccd [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 {
Ricardo Cerverac5f20772014-06-23 13:11:30 -070034 width:380px;
Ricardo Cervera6d615302014-06-20 18:42:30 -070035 z-index:2;
36 position:relative;
37}
38.auto-img-shot-cols {
Ricardo Cerverac5f20772014-06-23 13:11:30 -070039 width:369px;
Ricardo Cervera6d615302014-06-20 18:42:30 -070040 position:absolute;
Ricardo Cerverac5f20772014-06-23 13:11:30 -070041 top:7px;
42 left:6px;
Ricardo Cervera6d615302014-06-20 18:42:30 -070043 z-index:1;
Ricardo Cervera6d615302014-06-20 18:42:30 -070044}
45.auto-col-2 {
46 width:380px;
47 display: inline;
48 float: left;
49 margin-left: 10px;
50 margin-right: 10px;
51}
52.auto-img-container-single {
53 width:380px;
54 margin:0 auto;
55 margin-top:20px;
56}
Ricardo Cervera5fa67542014-06-15 21:23:16 -070057</style>
58
Robert Ly20555292014-06-13 23:28:19 -070059<div style="width:780px; margin:0 auto;">
60
61<div id="qv-wrapper">
62<div id="qv">
63<h2>In this document</h2>
64<ol>
65 <li><a href="#design">Design</a>
66 <ol>
67 <li><a href="#designprinciples">Design Principles</a></li>
68 <li><a href="#uioverview">UI Overview</a></li>
69 </ol>
70 </li>
71 <li><a href="#architecture">Architecture</a></li>
72 <li><a href="#uitemplates">UI Templates</a>
73 <ol>
74 <li><a href="#launchapp">Launch App</a></li>
75 <li><a href="#useractions">User Actions</a></li>
76 <li><a href="#drawertransitions">Drawer Transitions</a></li>
77 <li><a href="#daynighttransitions">Day and Night Transitions</a></li>
78 <li><a href="#customizetemplates">Customizing Templates</a></li>
79 </ol>
80 </li>
81 <li><a href="#devprocess">Development Process</a></li>
82 <li><a href="#emulator">Testing Your App</a></li>
83 <li><a href="#running">Running Your App</a></li>
84</ol>
85</div>
86</div>
87
88<h1>Android Auto Developer Overview</h1>
89
90<p>Android Auto extends the Android platform to car entertainment systems. When users connect
91their Android handheld device to a compatible vehicle, Android Auto lets users project apps on
92the vehicle’s touchscreen and interact with them using the vehicle’s controls.</p>
93
94<dl>
95<dt style="margin-bottom:10px"><strong>UI Templates</strong></dt>
96<dd style="margin-bottom:20px">
97Android Auto defines interaction models and UI templates for several app categories. The
98first version of Android Auto supports media apps, such as music, podcast, live radio, and
99audio news apps. Future versions will support messaging, communication, local search apps,
100and more.
101</dd>
102<dt style="margin-bottom:10px"><strong>Notifications</strong></dt>
103<dd style="margin-bottom:20px">
104The platform will integrate with existing Android APIs for notifications. Users will get
105some notifications from Android apps on the vehicle’s screen.</dd>
106
107<dt style="margin-bottom:10px"><strong>Voice Actions</strong></dt>
108<dd style="margin-bottom:20px">
109Android Auto supports voice search and voice actions for media apps. Future versions
110will support additional voice actions.</dd>
111
112<dt style="margin-bottom:10px"><strong>Easy Development Workflow</strong></dt>
113<dd style="margin-bottom:20px">
114To extend an existing Android app for Android Auto, you implement a set of interfaces and
115services defined in the platform. You can reuse existing functionality and many Android APIs
116you already know.</dd>
117</dl>
118
119<p>We’ll release the Android Auto SDK in the coming months, which will let you test your
120Android Auto experience on a regular Android device.</p>
121
122
Ricardo Cervera6d615302014-06-20 18:42:30 -0700123<h2 id="design">Design</h2>
Robert Ly20555292014-06-13 23:28:19 -0700124
125<p>Digital experiences for cars should complement and augment driving, not demand the driver's
126attention. Designing these experiences for cars is fundamentally different than in the case of
127phones and tablets. It requires rethinking how these experiences unfold.</p>
128
Ricardo Cervera6d615302014-06-20 18:42:30 -0700129<h3 id="designprinciples">Design Principles</h3>
Robert Ly20555292014-06-13 23:28:19 -0700130
131<p><strong>Glanceable</strong>. We designed Android Auto to reduce UI complexity, optimize user
132interactions, and lower cognitive load. Effective apps show just enough information
133and only provide features that do not require excessive menu interaction and navigation.</p>
134
135<p><strong>Predictive, yet predictable</strong>. Android Auto leverages rich, contextual awareness
136to keep the driver informed about important situations. Timely help is combined with predictable
137functions. Effective apps use patterns for common tasks and show timely information only when
138relevant.</p>
139
140<p><strong>Connected</strong>. Android Auto works with apps that drivers already use in other
141devices. Android Auto promotes a continuous app experience from phones and tablets to cars,
142providing access to user's existing settings, subscriptions, and digital libraries. Experiences
143that bring personal content and context from other devices are part of Android Auto.</p>
144
145<p><strong>Integrated</strong>. Android Auto blends your apps with the vehicle's entertainment
146system, creating a truly integrated experience in every car. By using the vehicle's screen and
147controls, apps feel tailored to each car.</p>
148
Robert Ly20555292014-06-13 23:28:19 -0700149
150
Ricardo Cervera6d615302014-06-20 18:42:30 -0700151<h2 id="architecture">Architecture</h2>
Robert Ly20555292014-06-13 23:28:19 -0700152
153<p>The Android Auto app projects your app's customized UI on the vehicle's screen. To communicate
154with the Android Auto app, your media app implements a set of media interfaces.</p>
155
156<div style="width:750px;margin:0 auto">
Ricardo Cervera6d615302014-06-20 18:42:30 -0700157<img src="{@docRoot}auto/images/figure01.png" alt="" id="figure1" />
Robert Ly20555292014-06-13 23:28:19 -0700158<p class="img-caption">
159  <strong>Figure 1</strong> - Architecture of Android Auto.
160</p>
161</div>
162
163<p>The architecture consists of the following components:</p>
164
165<p><strong>Media App</strong> - Runs a media service that exposes content through browsing and
166playback APIs. The service provides content to the Android Auto app. This is your Android app.</p>
167
168<p><strong>Android Auto App</strong> - Creates a templated UI and handles user interactions.
169This app uses a media client to request content from the media service running in the media
170app. The client requests data from the media service and monitors service states.</p>
171
172<p><strong>Vehicle Display</strong> - Shows app content and supports user interaction via
173on-screen soft buttons and other components, such as physical buttons or steering
174wheel controls.</p>
175
176<p>Android media apps must implement binders to these APIs:</p>
177
178<ul>
179<li><strong>Browsing</strong> - Enables a media client to browse a hierarchy of a user’s
180media collection, presented as a virtual file system with containers (similar to directories)
181and items (similar to files).</li>
182<li><strong>Playback</strong> - Enables a media client to control media playback and monitor
183playback state through callbacks.</li>
184</ul>
185
186
Ricardo Cervera6d615302014-06-20 18:42:30 -0700187<h2 id="uitemplates">UI Templates</h2>
Robert Ly20555292014-06-13 23:28:19 -0700188
189<p>The Android Auto app uses a templated UI to display content and user interaction
190opportunities. Android Auto provides you with a set of standard UI templates that follow
191international guidelines for minimizing driving distraction. You do not have to test your
192app's UI for for driver distraction, which is a lengthy and expensive process involving
193multiple legislations across the globe and different standards for each vehicle OEM.</p>
194
195<p>The UI templates define interfaces for browsing, searching, and listening to content from
196media apps. Although you cannot change the standard template format or layout, you can customize
197the template colors, action icons, background images, and more.</p>
198
Ricardo Cervera6d615302014-06-20 18:42:30 -0700199<h3 id="launchapp">Launch App Template</h3>
Robert Ly20555292014-06-13 23:28:19 -0700200
201<p>The Launcher template shows all the compatible media apps installed on the user’s
202Android device and lets users select one of them from an scrollable list:</p>
203
Ricardo Cervera6d615302014-06-20 18:42:30 -0700204<div class="auto-img-container-single">
205 <div class="auto-img-container">
206 <img class="auto-img-frame-cols" src="/auto/images/assets/00_frame.png" />
207 <img class="auto-img-shot-cols" src="/auto/images/assets/do_01_switcher.png" />
208 </div>
209 <p class="img-caption" style="margin-top:0px">
210  <strong>Figure 2.</strong> The Launcher template.
211 </p>
Robert Ly20555292014-06-13 23:28:19 -0700212</div>
213
Ricardo Cervera6d615302014-06-20 18:42:30 -0700214<h3>Primary App Template</h3>
Robert Ly20555292014-06-13 23:28:19 -0700215
216<p>After the user selects a media app, the display shows the primary app template. Figure
2173 shows the elements of this template that you can customize:</p>
218
Robert Ly20555292014-06-13 23:28:19 -0700219<p>You can customize the primary app template to show your own icons, app name, and
220background images. Figure 4 shows an example of a customized template:</p>
221
Ricardo Cervera6d615302014-06-20 18:42:30 -0700222<div class="cols">
223<div class="auto-col-2">
224 <div class="auto-img-container-cols">
225 <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
226 <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_05_template.png" />
227 </div>
228</div>
229<div class="auto-col-2">
230 <div class="auto-img-container-cols">
231 <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
232 <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_02_music.png" />
233 </div>
234</div>
235</div>
Robert Ly20555292014-06-13 23:28:19 -0700236<p class="img-caption">
237  <strong>Figure 4.</strong> A customized template.
238</p>
Robert Ly20555292014-06-13 23:28:19 -0700239
Ricardo Cervera6d615302014-06-20 18:42:30 -0700240
241
242<h3 id="useractions">User Actions</h3>
Robert Ly20555292014-06-13 23:28:19 -0700243
244<p>The primary app template supports four main actions on the action bar, four auxiliary actions
245on the overflow bar, and the <em>Return</em> action. You can use standard controls and customize
246the actions and icons, as shown in Figure 5.</p>
247
Ricardo Cervera6d615302014-06-20 18:42:30 -0700248<div class="auto-img-container-single">
249 <div class="auto-img-container">
250 <img class="auto-img-frame-cols" src="/auto/images/assets/00_frame.png" />
251 <img class="auto-img-shot-cols" src="/auto/images/assets/do_03_more.png" />
252 </div>
253 <p class="img-caption" style="margin-top:0px">
254  <strong>Figure 5.</strong> Custom extra actions.
255 </p>
Robert Ly20555292014-06-13 23:28:19 -0700256</div>
257
Ricardo Cervera6d615302014-06-20 18:42:30 -0700258<h3 id="drawertransitions">Drawer Transitions</h3>
Robert Ly20555292014-06-13 23:28:19 -0700259
260<p>For browse actions, the display shows the drawer transition and template:</p>
261
Robert Ly20555292014-06-13 23:28:19 -0700262<p>After the transition from the primary app template to the drawer template, the drawer
263appears on the center. The customized drawer template shows the media containers and
264media files provided by the media service in your app. You can also customize drawers
265with icons for list items.</p>
266
Ricardo Cervera6d615302014-06-20 18:42:30 -0700267<div class="cols">
268<div class="auto-col-2">
269 <div class="auto-img-container-cols">
270 <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
271 <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_06_gdrawer.png" />
272 </div>
Robert Ly20555292014-06-13 23:28:19 -0700273</div>
Ricardo Cervera6d615302014-06-20 18:42:30 -0700274<div class="auto-col-2">
275 <div class="auto-img-container-cols">
276 <img class="auto-img-frame-cols" src="{@docRoot}auto/images/assets/00_frame.png" />
277 <img class="auto-img-shot-cols" src="{@docRoot}auto/images/assets/do_04_mdrawer.png" />
278 </div>
279</div>
280</div>
281<p class="img-caption">
282  <strong>Figure 4.</strong> Generic and customized drawer templates.
283</p>
Robert Ly20555292014-06-13 23:28:19 -0700284
Ricardo Cervera6d615302014-06-20 18:42:30 -0700285<h3 id="daynighttransitions">Day and Night Transitions</h3>
Robert Ly20555292014-06-13 23:28:19 -0700286
287<p>All the templates support different color schemes for day and night, as shown in
288Figure 8. The platform provides the state (day or night) and makes adjustments automatically.</p>
289
Ricardo Cervera6d615302014-06-20 18:42:30 -0700290<h3 id="customizetemplates">Customizing Templates</h3>
Robert Ly20555292014-06-13 23:28:19 -0700291
292<p>To customize the templates, provide the following app-specific resources and actions
293to the Android Auto media client.</p>
294
295<ul>
296<li><strong>Resources</strong> - App logo, app name, theme colors, and background images.</li>
297<li><strong>Actions</strong> - Multiple custom actions; for example: <em>Thumbs Up/Down</em>,
298<em>Favorite</em>, and <em>Bookmark</em>. These actions are app-specific.</li>
299</ul>
300
301<p>If provided, the media client automatically uses them in the templated UI.</p>
302
303
Ricardo Cervera6d615302014-06-20 18:42:30 -0700304<h2 id="devprocess">Development Process</h2>
Robert Ly20555292014-06-13 23:28:19 -0700305
306<p class="note"><strong>Note:</strong> When released, the Android Auto SDK will provide
307media service interfaces, an APK for handheld devices that simulates the Android Auto
308app, and other tools for Android Auto development.</p>
309
310<p>To create a media app for Android Auto, you include an Android service in your app
311that implements the media service interfaces provided by the Android Auto SDK. These
312interfaces define functionality for browsing and finding content, playing media,
313customizing the UI template, and performing app-specific actions.</p>
314
315<p>The media service interfaces present the content library as a navigable tree and enable
316clients to play media, get album art, obtain theme resources for the UI template, and
317invoke app-specific actions.</p>
318
319<p>You don’t have to create a new app for Android Auto: you can extend your existing
320Android app with implementations of the media service interfaces. Your service exposes
321your app’s media content, theme resources, and app-specific actions using the methods and
322data types specified by the media service interfaces. This simplifies the development
323cycle because:</p>
324
325<ul>
326<li>You do not have to maintain a separate project for Android Auto</li>
327<li>You can reuse existing functionality from your Android app</li>
328</ul>
329
330<p>The Android Auto client presents the customized UI to users and invokes the
331functionality from your service as needed. This has two additional advantages:</p>
332
333<ul>
334<li>Your app does not implement a UI for Android Auto</li>
335<li>Your app does not manage user interactions directly</li>
336</ul>
337
338<p>This also means that you do not have to worry about vehicle-specific hardware
339differences such as screen resolutions, software interfaces, knobs and touch
340controls.</p>
341
342
Ricardo Cervera6d615302014-06-20 18:42:30 -0700343<h2 id="emulator">Testing Your App on an Android Device</h2>
Robert Ly20555292014-06-13 23:28:19 -0700344
345<p>The Android Auto SDK includes an APK with a media client implementation, which is
346similar to those available in compatible vehicles. To test your app with this
347client:</p>
348
349<ol>
350<li>Get an Android device with a similar form factor to a dashboard screen (like a
351Nexus 7).</li>
352<li>Configure the device for Android development.</li>
353<li>Install the APK for the media client from the Android Auto SDK on the device.</li>
354<li>Install the APK for your app on the device.</li>
355<li>Open the media client app from the Android Auto SDK on the device.</li>
356<li>Select your app from the list of available services.</li>
357</ol>
358
359<p>The customized UI for your app appears on the client. You can navigate the content
360library and play media. If your app provides app-specific actions, these actions appear
361in the UI controls.</p>
362
363
Ricardo Cervera6d615302014-06-20 18:42:30 -0700364<h2 id="running">Running Your App on Android Auto</h2>
Robert Ly20555292014-06-13 23:28:19 -0700365
366<p>Media apps are available on the Google Play Store for compatible Android devices.
367When users connect their Android device to a compatible vehicle, the
368Android Auto media client shows a list of all the Android apps installed on the phone
369that implement the media service interfaces.</p>
370
371<p>When users select one of these apps, the Android Auto media client uses the app’s
372service to respond to user input and invoke the methods in the media service interfaces
373to build the UI, navigate the content library, and play media.</p>
374
375<div style="margin-bottom:40px"> </div>
376</div>