blob: f799b0cea5e0f223e98ab2c111997331febb2486 [file] [log] [blame]
Roman Nurike577d722010-04-16 15:57:34 -07001var ANDROID_TAGS = {
2 type: {
3 'article': 'Article',
4 'tutorial': 'Tutorial',
5 'sample': 'Sample',
6 'video': 'Video',
7 'library': 'Code Library'
8 },
9 topic: {
10 'accessibility': 'Accessibility',
11 'accountsync': 'Accounts & Sync',
12 'bestpractice': 'Best Practices',
13 'communication': 'Communication',
14 'compatibility': 'Compatibility',
15 'data': 'Data Access',
16 'drawing': 'Canvas Drawing',
17 'gamedev': 'Game Development',
18 'gl': 'OpenGL ES',
19 'input': 'Input Methods',
20 'intent': 'Intents',
21 'layout': 'Layouts/Views',
22 'media': 'Multimedia',
Roman Nurike7d60072011-05-18 17:50:39 -070023 'multitasking': 'Multi-tasking',
Roman Nurike577d722010-04-16 15:57:34 -070024 'newfeature': 'New Features',
25 'performance': 'Performance',
26 'search': 'Search',
27 'testing': 'Testing',
28 'ui': 'User Interface',
Roman Nurik94be4a52011-02-11 14:46:00 -080029 'web': 'Web Content',
30 'widgets': 'App Widgets'
Roman Nurike577d722010-04-16 15:57:34 -070031 },
32 misc: {
33 'external': 'External',
Scott Main9ed517d2011-09-21 21:04:19 -070034 'new': 'New',
35 'updated': 'Updated'
Roman Nurike577d722010-04-16 15:57:34 -070036 }
37};
38
39var ANDROID_RESOURCES = [
40
41//////////////////////////
42/// TECHNICAL ARTICLES ///
43//////////////////////////
44
45 {
46 tags: ['article', 'performance', 'bestpractice'],
47 path: 'articles/avoiding-memory-leaks.html',
48 title: {
49 en: 'Avoiding Memory Leaks'
50 },
51 description: {
52 en: 'Mobile devices often have limited memory, and memory leaks can cause your application to waste this valuable resource without your knowledge. This article provides tips to help you avoid common causes of memory leaks on the Android platform.'
53 }
54 },
55 {
56 tags: ['article', 'compatibility'],
57 path: 'articles/backward-compatibility.html',
58 title: {
59 en: 'Backward Compatibility'
60 },
61 description: {
62 en: 'The Android platform strives to ensure backwards compatibility. However, sometimes you want to use new features which aren\'t supported on older platforms. This article discusses strategies for selectively using these features based on availability, allowing you to keep your applications portable across a wide range of devices.'
63 }
64 },
65 {
66 tags: ['article', 'intent'],
67 path: 'articles/can-i-use-this-intent.html',
68 title: {
69 en: 'Can I Use this Intent?'
70 },
71 description: {
72 en: 'Android offers a very powerful and yet easy-to-use message type called an intent. You can use intents to turn applications into high-level libraries and make code modular and reusable. While it is nice to be able to make use of a loosely coupled API, there is no guarantee that the intent you send will be received by another application. This article describes a technique you can use to find out whether the system contains any application capable of responding to the intent you want to use.'
73 }
74 },
75 {
76 tags: ['article', 'input'],
77 path: 'articles/creating-input-method.html',
78 title: {
79 en: 'Creating an Input Method'
80 },
81 description: {
82 en: 'Input Method Editors (IMEs) provide the mechanism for entering text into text fields and other Views. Android devices come bundled with at least one IME, but users can install additional IMEs. This article covers the basics of developing an IME for the Android platform.'
83 }
84 },
85 {
86 tags: ['article', 'drawing', 'ui'],
87 path: 'articles/drawable-mutations.html',
88 title: {
89 en: 'Drawable Mutations'
90 },
91 description: {
92 en: 'Drawables are pluggable drawing containers that allow applications to display graphics. This article explains some common pitfalls when trying to modify the properties of multiple Drawables.'
93 }
94 },
95 {
96 tags: ['article', 'bestpractice', 'ui'],
97 path: 'articles/faster-screen-orientation-change.html',
98 title: {
99 en: 'Faster Screen Orientation Change'
100 },
101 description: {
102 en: 'When an Android device changes its orientation, the default behavior is to automatically restart the current activity with a new configuration. However, this can become a bottleneck in applications that access a large amount of external data. This article discusses how to gracefully handle this situation without resorting to manually processing configuration changes.'
103 }
104 },
105 {
106 tags: ['article', 'compatibility'],
107 path: 'articles/future-proofing.html',
108 title: {
109 en: 'Future-Proofing Your Apps'
110 },
111 description: {
112 en: 'A collection of common sense advice to help you ensure that your applications don\'t break when new versions of the Android platform are released.'
113 }
114 },
115 {
116 tags: ['article', 'input'],
117 path: 'articles/gestures.html',
118 title: {
119 en: 'Gestures'
120 },
121 description: {
122 en: 'Touch screens allow users to perform gestures, such as tapping, dragging, flinging, or sliding, to perform various actions. The gestures API enables your application to recognize even complicated gestures with ease. This article explains how to integrate this API into an application.'
123 }
124 },
125 {
126 tags: ['article', 'gamedev', 'gl'],
127 path: 'articles/glsurfaceview.html',
128 title: {
129 en: 'Introducing GLSurfaceView'
130 },
131 description: {
132 en: 'This article provides an overview of GLSurfaceView, a class that makes it easy to implement 2D or 3D OpenGL rendering inside of an Android application.'
133 }
134 },
135 {
136 tags: ['article', 'ui', 'layout'],
137 path: 'articles/layout-tricks-reuse.html',
138 title: {
139 en: 'Layout Tricks: Creating Reusable UI Components'
140 },
141 description: {
142 en: 'Learn how to combine multiple standard UI widgets into a single high-level component, which can be reused throughout your application.'
143 }
144 },
145 {
146 tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
147 path: 'articles/layout-tricks-efficiency.html',
148 title: {
149 en: 'Layout Tricks: Creating Efficient Layouts'
150 },
151 description: {
152 en: 'Learn how to optimize application layouts as this article walks you through converting a LinearLayout into a RelativeLayout, and analyzes the resulting implications on performance.'
153 }
154 },
155 {
156 tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
157 path: 'articles/layout-tricks-stubs.html',
158 title: {
159 en: 'Layout Tricks: Using ViewStubs'
160 },
161 description: {
162 en: 'Learn about using ViewStubs inside an application\'s layout in order to inflate rarely used UI elements, without the performance implications which would otherwise be caused by using the <code>&lt;include&gt;</code> tag.'
163 }
164 },
165 {
166 tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
167 path: 'articles/layout-tricks-merge.html',
168 title: {
169 en: 'Layout Tricks: Merging Layouts'
170 },
171 description: {
172 en: 'Learn how to use the <code>&lt;merge&gt;</code> tag in your XML layouts in order to avoid unnecessary levels of hierarchy within an application\'s view tree.'
173 }
174 },
175 {
176 tags: ['article', 'ui', 'performance'],
177 path: 'articles/listview-backgrounds.html',
178 title: {
179 en: 'ListView Backgrounds: An Optimization'
180 },
181 description: {
182 en: 'ListViews are very popular widgets within the Android framework. This article describes some of the optimizations used by the ListView widget, and how to avoid some common issues that this causes when trying to use a custom background.'
183 }
184 },
185 {
Roman Nurika35f6562011-02-04 14:28:22 -0800186 tags: ['article', 'ui'],
Roman Nurike577d722010-04-16 15:57:34 -0700187 path: 'articles/live-folders.html',
188 title: {
189 en: 'Live Folders'
190 },
191 description: {
192 en: 'Live Folders allow users to display any source of data on their home screen without launching an application. This article discusses how to export an application\'s data in a format suitable for display inside of a live folder.'
193 }
194 },
195 {
Roman Nurika35f6562011-02-04 14:28:22 -0800196 tags: ['article', 'ui'],
Roman Nurike577d722010-04-16 15:57:34 -0700197 path: 'articles/live-wallpapers.html',
198 title: {
199 en: 'Live Wallpapers'
200 },
201 description: {
202 en: 'Live wallpapers are richer, animated, interactive backgrounds that users can display in their home screens. Learn how to create a live wallpaper and bundle it in an application that users can install on their devices.'
203 }
204 },
205 {
Roman Nurike7d60072011-05-18 17:50:39 -0700206 tags: ['article', 'bestpractice', 'multitasking'],
207 path: 'articles/multitasking-android-way.html',
208 title: {
209 en: 'Multitasking the Android Way'
210 },
211 description: {
212 en: 'This article describes best practices and user experience guidelines for multi-tasking on Android.'
213 }
214 },
215 {
Roman Nurike577d722010-04-16 15:57:34 -0700216 tags: ['article', 'input'],
217 path: 'articles/on-screen-inputs.html',
218 title: {
219 en: 'Onscreen Input Methods'
220 },
221 description: {
222 en: 'The Input Method Framework (IMF) allows users to take advantage of on-screen input methods, such as software keyboards. This article provides an overview of Input Method Editors (IMEs) and how applications interact with them.'
223 }
224 },
225 {
226 tags: ['article', 'performance', 'bestpractice'],
227 path: 'articles/painless-threading.html',
228 title: {
229 en: 'Painless Threading'
230 },
231 description: {
232 en: 'This article discusses the threading model used by Android applications and how applications can ensure best UI performance by spawning worker threads to handle long-running operations, rather than handling them in the main thread. The article also explains the API that your application can use to interact with Android UI toolkit components running on the main thread and spawn managed worker threads.'
233 }
234 },
235 {
236 tags: ['article', 'ui', 'search'],
237 path: 'articles/qsb.html',
238 title: {
239 en: 'Quick Search Box'
240 },
241 description: {
242 en: 'Quick Search Box (QSB) is a powerful, system-wide search framework. QSB makes it possible for users to quickly and easily find what they\'re looking for, both on their devices and on the web. This article discusses how to work with the QSB framework to add new search results for an installed application.'
243 }
244 },
245 {
Roman Nurikecaf3f42011-05-16 14:00:13 -0700246 tags: ['article', 'input', 'search', 'ui'],
247 path: 'articles/speech-input.html',
248 title: {
249 en: 'Speech Input'
250 },
251 description: {
252 en: 'This articles describes the basics of integrating speech recognition into Android applications.'
253 }
254 },
255 {
Roman Nurike7d60072011-05-18 17:50:39 -0700256 tags: ['article', 'compatibility', 'multitasking'],
257 path: 'articles/service-api-changes-starting-with.html',
258 title: {
259 en: 'Service API changes starting with Android 2.0'
260 },
261 description: {
262 en: 'This article describes the changes and improvements to services introduced in Android 2.0, as well as strategies for compatibility with older versions of the platform.'
263 }
264 },
265 {
Roman Nurike577d722010-04-16 15:57:34 -0700266 tags: ['article', 'ui'],
267 path: 'articles/touch-mode.html',
268 title: {
269 en: 'Touch Mode'
270 },
271 description: {
272 en: 'This article explains the touch mode, one of the most important principles of Android\'s UI toolkit. Whenever a user interacts with a device\'s touch screen, the system enters touch mode. While simple in concept, there are important implications touch mode that are often overlooked.'
273 }
274 },
275 {
276 tags: ['article', 'performance', 'bestpractice'],
277 path: 'articles/track-mem.html',
278 title: {
279 en: 'Tracking Memory Allocations'
280 },
281 description: {
282 en: 'This article discusses how to use the Allocation Tracker tool to observe memory allocations and avoid performance problems that would otherwise be caused by ignoring the effect of Dalvik\'s garbage collector.'
283 }
284 },
285 {
Roman Nurika35f6562011-02-04 14:28:22 -0800286 tags: ['article'],
Roman Nurike577d722010-04-16 15:57:34 -0700287 path: 'articles/ui-1.5.html',
288 title: {
289 en: 'UI Framework Changes in Android 1.5'
290 },
291 description: {
292 en: 'Explore the UI changes that were introduced in Android 1.5, compared with the UI provided in Android 1.0 and 1.1.'
293 }
294 },
295 {
Roman Nurika35f6562011-02-04 14:28:22 -0800296 tags: ['article'],
Roman Nurike577d722010-04-16 15:57:34 -0700297 path: 'articles/ui-1.6.html',
298 title: {
299 en: 'UI Framework Changes in Android 1.6'
300 },
301 description: {
302 en: 'Explore the UI changes that were introduced in Android 1.6, compared with the UI provided in Android 1.5. In particular, this article discusses changes to RelativeLayouts and click listeners.'
303 }
304 },
305 {
306 tags: ['article', 'ui', 'bestpractice'],
307 path: 'articles/timed-ui-updates.html',
308 title: {
309 en: 'Updating the UI from a Timer'
310 },
311 description: {
312 en: 'Learn about how to use Handlers as a more efficient replacement for java.util.Timer on the Android platform.'
313 }
314 },
315 {
316 tags: ['article', 'ui', 'accessibility'],
317 path: 'articles/tts.html',
318 title: {
319 en: 'Using Text-to-Speech'
320 },
321 description: {
322 en: 'The text-to-speech API lets your application "speak" to users, in any of several languages. This article provides an overview of the TTS API and how you use to add speech capabilities to your application.'
323 }
324 },
325 {
326 tags: ['article', 'ui', 'web'],
327 path: 'articles/using-webviews.html',
328 title: {
329 en: 'Using WebViews'
330 },
331 description: {
332 en: 'WebViews allow an application to dynamically display HTML and execute JavaScript, without relinquishing control to a separate browser application. This article introduces the WebView classes and provides a sample application that demonstrates its use.'
333 }
334 },
335 {
336 tags: ['article', 'ui'],
337 path: 'articles/wikinotes-linkify.html',
338 title: {
339 en: 'WikiNotes: Linkify your Text!'
340 },
341 description: {
342 en: 'This article introduces WikiNotes for Android, part of the Apps for Android project. It covers the use of Linkify to turn ordinary text views into richer, link-oriented content that causes Android intents to fire when a link is selected.'
343 }
344 },
345 {
346 tags: ['article', 'intent'],
347 path: 'articles/wikinotes-intents.html',
348 title: {
349 en: 'WikiNotes: Routing Intents'
350 },
351 description: {
352 en: 'This article illustrates how an application, in this case the WikiNotes sample app, can use intents to route various types of linked text to the application that handles that type of data. For example, an app can use intents to route a linked telephone number to a dialer app and a web URL to a browser.'
353 }
354 },
355 {
356 tags: ['article', 'ui', 'performance'],
357 path: 'articles/window-bg-speed.html',
358 title: {
359 en: 'Window Backgrounds & UI Speed'
360 },
361 description: {
362 en: 'Some Android applications need to squeeze every bit of performance out of the UI toolkit and there are many ways to do so. In this article, you will discover how to speed up the drawing and the perceived startup time of your activities. Both of these techniques rely on a single feature, the window\'s background drawable.'
363 }
364 },
365 {
366 tags: ['article', 'performance', 'bestpractice'],
367 path: 'articles/zipalign.html',
368 title: {
369 en: 'Zipalign: an Easy Optimization'
370 },
371 description: {
372 en: 'The Android SDK includes a tool called zipalign that optimizes the way an application is packaged. Running zipalign against your application enables Android to interact with it more efficiently at run time and thus has the potential to make it and the overall system run faster. This article provides a high-level overview of the zipalign tool and its use.'
373 }
374 },
375
376///////////////////
377/// SAMPLE CODE ///
378///////////////////
Robert Ly3f9b6442011-01-19 18:14:50 -0800379
380 {
Scott Main9ed517d2011-09-21 21:04:19 -0700381 tags: ['sample'],
Robert Ly3f9b6442011-01-19 18:14:50 -0800382 path: 'samples/AccelerometerPlay/index.html',
383 title: {
384 en: 'Accelerometer Play'
385 },
386 description: {
Roman Nurik94be4a52011-02-11 14:46:00 -0800387 en: 'An example of using the accelerometer to integrate the device\'s acceleration to a position using the Verlet method. This is illustrated with a very simple particle system comprised of a few iron balls freely moving on an inclined wooden table. The inclination of the virtual table is controlled by the device\'s accelerometer.'
Robert Ly3f9b6442011-01-19 18:14:50 -0800388 }
389 },
390 {
Scott Main9ed517d2011-09-21 21:04:19 -0700391 tags: ['sample', 'accessibility'],
Robert Ly3f9b6442011-01-19 18:14:50 -0800392 path: 'samples/AccessibilityService/index.html',
393 title: {
394 en: 'Accessibility Service'
395 },
396 description: {
397 en: 'Illustrates an accessibility service that provides custom feedback for the Clock application which comes by default with Android devices'
398 }
399 },
Roman Nurike577d722010-04-16 15:57:34 -0700400 {
401 tags: ['sample', 'layout', 'ui'],
402 path: 'samples/ApiDemos/index.html',
403 title: {
404 en: 'API Demos'
405 },
406 description: {
407 en: 'A variety of small applications that demonstrate an extensive collection of framework topics.'
408 }
409 },
410 {
Scott Main9ed517d2011-09-21 21:04:19 -0700411 tags: ['sample', 'layout', 'ui', 'fragment', 'loader'],
Dianne Hackborn2f048832011-06-16 13:31:57 -0700412 path: 'samples/Support4Demos/index.html',
413 title: {
414 en: 'API 4+ Support Demos'
415 },
416 description: {
417 en: 'A variety of small applications that demonstrate the use of the helper classes in the Android API 4+ Support Library (classes which work down to API level 4 or version 1.6 of the platform).'
418 }
419 },
420 {
Scott Main9ed517d2011-09-21 21:04:19 -0700421 tags: ['sample', 'layout', 'ui'],
Dianne Hackborn2f048832011-06-16 13:31:57 -0700422 path: 'samples/Support13Demos/index.html',
423 title: {
424 en: 'API 13+ Support Demos'
425 },
426 description: {
427 en: 'A variety of small applications that demonstrate the use of the helper classes in the Android API 13+ Support Library (classes which work down to API level 13 or version 3.2 of the platform).'
428 }
429 },
430 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800431 tags: ['sample', 'data', 'newfeature', 'accountsync'],
Roman Nurike577d722010-04-16 15:57:34 -0700432 path: 'samples/BackupRestore/index.html',
433 title: {
434 en: 'Backup and Restore'
435 },
436 description: {
437 en: 'Illustrates a few different approaches that an application developer can take when integrating with the Android Backup Manager using the BackupAgent API introduced in Android 2.2.'
438 }
439 },
440 {
441 tags: ['sample', 'communication'],
442 path: 'samples/BluetoothChat/index.html',
443 title: {
444 en: 'Bluetooth Chat'
445 },
446 description: {
447 en: 'An application for two-way text messaging over Bluetooth.'
448 }
449 },
450 {
451 tags: ['sample', 'accountsync'],
452 path: 'samples/BusinessCard/index.html',
453 title: {
454 en: 'BusinessCard'
455 },
456 description: {
457 en: 'An application that demonstrates how to launch the built-in contact picker from within an activity. This sample also uses reflection to ensure that the correct version of the contacts API is used, depending on which API level the application is running under.'
458 }
459 },
460 {
461 tags: ['sample', 'accountsync'],
462 path: 'samples/ContactManager/index.html',
463 title: {
464 en: 'Contact Manager'
465 },
466 description: {
467 en: 'An application that demonstrates how to query the system contacts provider using the <code>ContactsContract</code> API, as well as insert contacts into a specific account.'
468 }
469 },
470 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800471 tags: ['sample', 'ui'],
472 path: 'samples/CubeLiveWallpaper/index.html',
473 title: {
474 en: 'Cube Live Wallpaper'
475 },
476 description: {
477 en: 'An application that demonstrates how to create a live wallpaper and bundle it in an application that users can install on their devices.'
478 }
479 },
480 {
Roman Nurike577d722010-04-16 15:57:34 -0700481 tags: ['sample'],
482 path: 'samples/Home/index.html',
483 title: {
484 en: 'Home'
485 },
486 description: {
487 en: 'A home screen replacement application.'
488 }
489 },
490 {
Scott Main9ed517d2011-09-21 21:04:19 -0700491 tags: ['sample', 'updated', 'newfeature', 'ui'],
Roman Nurika35f6562011-02-04 14:28:22 -0800492 path: 'samples/HoneycombGallery/index.html',
Alexander Lucasd8472542011-01-19 12:15:38 -0800493 title: {
494 en: 'Honeycomb Gallery'
495 },
496 description: {
Scott Main9ed517d2011-09-21 21:04:19 -0700497 en: 'An image gallery application that demonstrates a variety of new APIs in Android 3.0 (Honeycomb). In addition to providing a tablet-optimized design, it also supports handsets running Android 4.0 (Ice Cream Sandwich) and beyond, so is a good example of how to reuse Fragments to support different screen sizes.'
Alexander Lucasd8472542011-01-19 12:15:38 -0800498 }
499 },
500 {
Roman Nurike577d722010-04-16 15:57:34 -0700501 tags: ['sample', 'gamedev', 'media'],
502 path: 'samples/JetBoy/index.html',
503 title: {
504 en: 'JetBoy'
505 },
506 description: {
507 en: 'A game that demonstrates the SONiVOX JET interactive music technology, with <code><a href="/reference/android/media/JetPlayer.html">JetPlayer</a></code>.'
508 }
509 },
510 {
Roman Nurike577d722010-04-16 15:57:34 -0700511 tags: ['sample', 'gamedev', 'media'],
512 path: 'samples/LunarLander/index.html',
513 title: {
514 en: 'Lunar Lander'
515 },
516 description: {
517 en: 'A classic Lunar Lander game.'
518 }
519 },
520 {
521 tags: ['sample', 'ui', 'bestpractice', 'layout'],
522 path: 'samples/MultiResolution/index.html',
523 title: {
524 en: 'Multiple Resolutions'
525 },
526 description: {
527 en: 'A sample application that shows how to use resource directory qualifiers to provide different resources for different screen configurations.'
528 }
529 },
530 {
531 tags: ['sample', 'data'],
Robert Ly3f9b6442011-01-19 18:14:50 -0800532 path: 'samples/NFCDemo/index.html',
533 title: {
534 en: 'NFC Demo'
535 },
536 description: {
537 en: 'An application for reading NFC Forum Type 2 Tags using the NFC APIs'
538 }
539 },
540 {
541 tags: ['sample', 'data'],
Roman Nurike577d722010-04-16 15:57:34 -0700542 path: 'samples/NotePad/index.html',
543 title: {
544 en: 'Note Pad'
545 },
546 description: {
547 en: 'An application for saving notes. Similar (but not identical) to the <a href="/resources/tutorials/notepad/index.html">Notepad tutorial</a>.'
548 }
549 },
550 {
Scott Main9ed517d2011-09-21 21:04:19 -0700551 tags: ['sample', 'media' ],
Bruno Oliveira9e67587d2011-06-07 01:23:02 -0400552 path: 'samples/RandomMusicPlayer/index.html',
553 title: {
554 en: 'Random Music Player'
555 },
556 description: {
557 en: 'Demonstrates how to write a multimedia application that plays music from the device and from URLs. It manages media playback from a service and can play music in the background, respecting audio focus changes.'
558 }
559 },
560 {
Scott Main9ed517d2011-09-21 21:04:19 -0700561 tags: ['sample', 'newfeature', 'performance', 'gamedev', 'gl'],
Robert Ly44b362c2011-02-28 15:53:15 -0800562 path: 'samples/RenderScript/index.html',
Robert Ly6518f482011-02-14 18:57:46 -0800563 title: {
Robert Ly44b362c2011-02-28 15:53:15 -0800564 en: 'RenderScript'
Robert Ly6518f482011-02-14 18:57:46 -0800565 },
566 description: {
Robert Ly44b362c2011-02-28 15:53:15 -0800567 en: 'A set of samples that demonstrate how to use various features of the RenderScript APIs.'
Robert Ly6518f482011-02-14 18:57:46 -0800568 }
569 },
570 {
Roman Nurike577d722010-04-16 15:57:34 -0700571 tags: ['sample', 'accountsync'],
572 path: 'samples/SampleSyncAdapter/index.html',
573 title: {
574 en: 'SampleSyncAdapter'
575 },
576 description: {
577 en: 'Demonstrates how an application can communicate with a cloud-based service and synchronize its data with data stored locally in a content provider. The sample uses two related parts of the Android framework &mdash; the account manager and the synchronization manager (through a sync adapter).'
578 }
579 },
580 {
Scott Main183ecbc2010-11-19 10:20:45 -0800581 tags: ['sample', 'ui', 'search'],
Roman Nurike577d722010-04-16 15:57:34 -0700582 path: 'samples/SearchableDictionary/index.html',
583 title: {
584 en: 'Searchable Dictionary v2'
585 },
586 description: {
587 en: 'A sample application that demonstrates Android\'s search framework, including how to provide search suggestions for Quick Search Box.'
588 }
589 },
590 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800591 tags: ['sample'],
592 path: 'samples/SipDemo/index.html',
593 title: {
594 en: 'SIP Demo'
595 },
596 description: {
597 en: 'A demo application highlighting how to make internet-based calls with the SIP API.'
598 }
599 },
600 {
Roman Nurike577d722010-04-16 15:57:34 -0700601 tags: ['sample', 'layout', 'ui'],
602 path: 'samples/Snake/index.html',
603 title: {
604 en: 'Snake'
605 },
606 description: {
607 en: 'An implementation of the classic game "Snake."'
608 }
609 },
610 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800611 tags: ['sample', 'input'],
612 path: 'samples/SoftKeyboard/index.html',
613 title: {
614 en: 'Soft Keyboard'
615 },
616 description: {
617 en: 'An example of writing an input method for a software keyboard.'
618 }
619 },
620 {
Scott Main183ecbc2010-11-19 10:20:45 -0800621 tags: ['sample', 'testing'],
Roman Nurike577d722010-04-16 15:57:34 -0700622 path: 'samples/Spinner/index.html',
623 title: {
624 en: 'Spinner'
625 },
626 description: {
627 en: 'A simple application that serves as an application under test for the SpinnerTest example.'
628 }
629 },
630 {
Scott Main183ecbc2010-11-19 10:20:45 -0800631 tags: ['sample', 'testing'],
Roman Nurike577d722010-04-16 15:57:34 -0700632 path: 'samples/SpinnerTest/index.html',
633 title: {
634 en: 'SpinnerTest'
635 },
636 description: {
637 en: 'The test application for the Activity Testing tutorial. It tests the Spinner example application.'
638 }
639 },
640 {
Scott Main9ed517d2011-09-21 21:04:19 -0700641 tags: ['sample', 'newfeature', 'widgets'],
Adam Cohenfca67c52011-02-10 18:57:45 -0800642 path: 'samples/StackWidget/index.html',
643 title: {
Scott Maind873e662011-02-15 10:58:34 -0800644 en: 'StackView Widget'
Adam Cohenfca67c52011-02-10 18:57:45 -0800645 },
646 description: {
647 en: 'Demonstrates how to create a simple collection widget containing a StackView.'
648 }
649 },
650 {
Scott Main183ecbc2010-11-19 10:20:45 -0800651 tags: ['sample', 'newfeature'],
Roman Nurike577d722010-04-16 15:57:34 -0700652 path: 'samples/TicTacToeLib/index.html',
653 title: {
654 en: 'TicTacToeLib'
655 },
656 description: {
657 en: 'An example of an Android library project, a type of project that lets you store and manage shared code and resources in one place, then make them available to your other Android applications.'
658 }
659 },
660 {
Scott Main183ecbc2010-11-19 10:20:45 -0800661 tags: ['sample', 'newfeature',],
Roman Nurike577d722010-04-16 15:57:34 -0700662 path: 'samples/TicTacToeMain/index.html',
663 title: {
664 en: 'TicTacToeMain'
665 },
666 description: {
667 en: 'Demonstrates how an application can make use of shared code and resources stored in an Android library project.'
668 }
669 },
670 {
Scott Main9ed517d2011-09-21 21:04:19 -0700671 tags: ['sample', 'newfeature'],
Robert Ly8cdb2e22011-05-02 17:49:05 -0700672 path: 'samples/USB/index.html',
673 title: {
674 en: 'USB'
675 },
676 description: {
677 en: 'A set of samples that demonstrate how to use various features of the USB APIs.'
678 }
679 },
680 {
Debashish Chatterjeeacd6f5f2011-05-19 13:21:48 +0100681 tags: ['sample', 'data', 'new'],
682 path: 'samples/VoicemailProviderDemo/index.html',
683 title: {
684 en: 'Voicemail Provider Demo'
685 },
686 description: {
Scott Main9ed517d2011-09-21 21:04:19 -0700687 en: 'A sample application to demonstrate how to use voicemail content provider APIs in Android 4.0.'
Debashish Chatterjeeacd6f5f2011-05-19 13:21:48 +0100688 }
689 },
690 {
Roman Nurik94be4a52011-02-11 14:46:00 -0800691 tags: ['sample', 'ui', 'widgets'],
Roman Nurike577d722010-04-16 15:57:34 -0700692 path: 'samples/Wiktionary/index.html',
693 title: {
694 en: 'Wiktionary'
695 },
696 description: {
697 en: 'An example of creating interactive widgets for display on the Android home screen.'
698 }
699 },
700 {
Roman Nurik94be4a52011-02-11 14:46:00 -0800701 tags: ['sample', 'ui', 'widgets'],
Roman Nurike577d722010-04-16 15:57:34 -0700702 path: 'samples/WiktionarySimple/index.html',
703 title: {
704 en: 'Wiktionary (Simplified)'
705 },
706 description: {
707 en: 'A simple Android home screen widgets example.'
708 }
709 },
Gilles Debunne3eb9b662010-06-23 16:53:35 -0700710 {
Scott Main9ed517d2011-09-21 21:04:19 -0700711 tags: ['sample', 'widgets', 'newfeature'],
Winson Chung06d2fa72011-02-10 19:11:33 -0800712 path: 'samples/WeatherListWidget/index.html',
713 title: {
Scott Maind873e662011-02-15 10:58:34 -0800714 en: 'Weather List Widget'
Winson Chung06d2fa72011-02-10 19:11:33 -0800715 },
716 description: {
717 en: 'A more complex collection-widget example which uses a ContentProvider as its data source.'
718 }
719 },
720 {
Robert Ly3f9b6442011-01-19 18:14:50 -0800721 tags: ['sample', 'layout'],
Gilles Debunne3eb9b662010-06-23 16:53:35 -0700722 path: 'samples/XmlAdapters/index.html',
723 title: {
724 en: 'XML Adapters'
725 },
726 description: {
727 en: 'Binding data to views using XML Adapters examples.'
728 }
729 },
Narayan Kamathaf1ad3c2011-06-23 10:43:27 +0100730 {
731 tags: ['sample', 'new', 'accessibility'],
732 path: 'samples/TtsEngine/index.html',
733 title: {
734 en: 'Text To Speech Engine'
735 },
736 description: {
Scott Main9ed517d2011-09-21 21:04:19 -0700737 en: 'An example Text To Speech engine written using the Android text to speech engine API in Android 4.0.'
Narayan Kamathaf1ad3c2011-06-23 10:43:27 +0100738 }
739 },
Roman Nurike577d722010-04-16 15:57:34 -0700740
741/////////////////
742/// TUTORIALS ///
743/////////////////
744
745 {
746 tags: ['tutorial'],
747 path: 'tutorials/hello-world.html',
748 title: {
749 en: 'Hello World'
750 },
751 description: {
752 en: 'Beginning basic application development with the Android SDK.'
753 }
754 },
755 {
756 tags: ['tutorial', 'ui', 'layout'],
757 path: 'tutorials/views/index.html',
758 title: {
759 en: 'Hello Views'
760 },
761 description: {
762 en: 'A walk-through of the various types of layouts and views available in the Android SDK.'
763 }
764 },
765 {
766 tags: ['tutorial', 'ui', 'bestpractice'],
767 path: 'tutorials/localization/index.html',
768 title: {
769 en: 'Hello Localization'
770 },
771 description: {
772 en: 'The basics of localizing your applications for multiple languages and locales.'
773 }
774 },
775 {
776 tags: ['tutorial', 'data'],
777 path: 'tutorials/notepad/index.html',
778 title: {
779 en: 'Notepad Tutorial'
780 },
781 description: {
782 en: 'A multi-part tutorial discussing intermediate-level concepts such as data access.'
783 }
784 },
785 {
Joe Fernandez0664a8f2011-07-15 16:02:30 -0700786 tags: ['tutorial', 'gl', 'new'],
787 path: 'tutorials/opengl/opengl-es10.html',
788 title: {
789 en: 'OpenGL ES 1.0'
790 },
791 description: {
792 en: 'The basics of implementing an application using the OpenGL ES 1.0 APIs.'
793 }
794 },
795 {
796 tags: ['tutorial', 'gl', 'new'],
797 path: 'tutorials/opengl/opengl-es20.html',
798 title: {
799 en: 'OpenGL ES 2.0'
800 },
801 description: {
802 en: 'The basics of implementing an application using the OpenGL ES 2.0 APIs.'
803 }
804 },
805 {
Scott Main183ecbc2010-11-19 10:20:45 -0800806 tags: ['tutorial', 'testing'],
Roman Nurike577d722010-04-16 15:57:34 -0700807 path: 'tutorials/testing/helloandroid_test.html',
808 title: {
809 en: 'Hello Testing'
810 },
811 description: {
812 en: 'A basic introduction to the Android testing framework.'
813 }
814 },
815 {
Scott Main183ecbc2010-11-19 10:20:45 -0800816 tags: ['tutorial', 'testing'],
Roman Nurike577d722010-04-16 15:57:34 -0700817 path: 'tutorials/testing/activity_test.html',
818 title: {
819 en: 'Activity Testing'
820 },
821 description: {
822 en: 'A more advanced demonstration of the Android testing framework and tools.'
823 }
824 }
825];