resources-data.js revision 9e67587d022675f4b6f62e565b23745c4a550ed9
1e577d72a3be20e589437271f0e5ca474fab38124Roman Nurikvar ANDROID_TAGS = {
2e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  type: {
3e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'article': 'Article',
4e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'tutorial': 'Tutorial',
5e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'sample': 'Sample',
6e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'video': 'Video',
7e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'library': 'Code Library'
8e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
9e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  topic: {
10e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'accessibility': 'Accessibility',
11e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'accountsync': 'Accounts & Sync',
12e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'bestpractice': 'Best Practices',
13e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'communication': 'Communication',
14e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'compatibility': 'Compatibility',
15e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'data': 'Data Access',
16e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'drawing': 'Canvas Drawing',
17e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'gamedev': 'Game Development',
18e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'gl': 'OpenGL ES',
19e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'input': 'Input Methods',
20e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'intent': 'Intents',
21e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'layout': 'Layouts/Views',
22e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'media': 'Multimedia',
23e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'newfeature': 'New Features',
24e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'performance': 'Performance',
25e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'search': 'Search',
26e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'testing': 'Testing',
27e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'ui': 'User Interface',
2894be4a5e1ad833d7e5d0dbed29b806ba8fd5409eRoman Nurik    'web': 'Web Content',
2994be4a5e1ad833d7e5d0dbed29b806ba8fd5409eRoman Nurik    'widgets': 'App Widgets'
30e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
31e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  misc: {
32e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'external': 'External',
33e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    'new': 'New'
34e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  }
35e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik};
36e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik
37e577d72a3be20e589437271f0e5ca474fab38124Roman Nurikvar ANDROID_RESOURCES = [
38e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik
39e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik//////////////////////////
40e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik/// TECHNICAL ARTICLES ///
41e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik//////////////////////////
42e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik
43e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
44e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'performance', 'bestpractice'],
45e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/avoiding-memory-leaks.html',
46e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
47e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Avoiding Memory Leaks'
48e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
49e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
50e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
51e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
52e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
53e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
54e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'compatibility'],
55e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/backward-compatibility.html',
56e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
57e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Backward Compatibility'
58e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
59e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
60e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
61e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
62e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
63e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
64e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'intent'],
65e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/can-i-use-this-intent.html',
66e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
67e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Can I Use this Intent?'
68e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
69e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
70e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
71e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
72e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
73e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
74e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'input'],
75e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/creating-input-method.html',
76e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
77e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Creating an Input Method'
78e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
79e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
80e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
81e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
82e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
83e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
84e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'drawing', 'ui'],
85e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/drawable-mutations.html',
86e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
87e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Drawable Mutations'
88e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
89e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
90e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
91e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
92e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
93e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
94e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'bestpractice', 'ui'],
95e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/faster-screen-orientation-change.html',
96e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
97e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Faster Screen Orientation Change'
98e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
99e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
100e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
101e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
102e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
103e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
104e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'compatibility'],
105e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/future-proofing.html',
106e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
107e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Future-Proofing Your Apps'
108e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
109e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
110e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
111e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
112e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
113e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
114e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'input'],
115e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/gestures.html',
116e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
117e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Gestures'
118e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
119e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
120e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
121e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
122e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
123e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
124e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'gamedev', 'gl'],
125e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/glsurfaceview.html',
126e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
127e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Introducing GLSurfaceView'
128e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
129e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
130e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
131e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
132e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
133e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
134e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui', 'layout'],
135e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/layout-tricks-reuse.html',
136e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
137e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Layout Tricks: Creating Reusable UI Components'
138e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
139e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
140e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Learn how to combine multiple standard UI widgets into a single high-level component, which can be reused throughout your application.'
141e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
142e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
143e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
144e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
145e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/layout-tricks-efficiency.html',
146e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
147e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Layout Tricks: Creating Efficient Layouts'
148e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
149e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
150e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
151e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
152e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
153e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
154e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
155e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/layout-tricks-stubs.html',
156e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
157e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Layout Tricks: Using ViewStubs'
158e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
159e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
160e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
161e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
162e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
163e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
164e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'layout', 'ui', 'performance', 'bestpractice'],
165e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/layout-tricks-merge.html',
166e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
167e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Layout Tricks: Merging Layouts'
168e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
169e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
170e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
171e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
172e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
173e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
174e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui', 'performance'],
175e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/listview-backgrounds.html',
176e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
177e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'ListView Backgrounds: An Optimization'
178e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
179e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
180e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
181e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
182e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
183e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
184a35f65692d9f97264dc939d5749db86845141810Roman Nurik    tags: ['article', 'ui'],
185e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/live-folders.html',
186e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
187e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Live Folders'
188e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
189e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
190e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
191e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
192e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
193e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
194a35f65692d9f97264dc939d5749db86845141810Roman Nurik    tags: ['article', 'ui'],
195e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/live-wallpapers.html',
196e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
197e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Live Wallpapers'
198e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
199e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
200e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
201e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
202e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
203e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
204e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'input'],
205e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/on-screen-inputs.html',
206e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
207e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Onscreen Input Methods'
208e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
209e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
210e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
211e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
212e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
213e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
214e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'performance', 'bestpractice'],
215e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/painless-threading.html',
216e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
217e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Painless Threading'
218e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
219e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
220e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
221e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
222e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
223e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
224e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui', 'search'],
225e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/qsb.html',
226e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
227e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Quick Search Box'
228e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
229e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
230e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
231e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
232e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
233e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
234ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik    tags: ['article', 'input', 'search', 'ui'],
235ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik    path: 'articles/speech-input.html',
236ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik    title: {
237ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik      en: 'Speech Input'
238ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik    },
239ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik    description: {
240ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik      en: 'This articles describes the basics of integrating speech recognition into Android applications.'
241ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik    }
242ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik  },
243ecaf3f4f28ac3ec12fa1c5dd967c0f2ffd5bd3a7Roman Nurik  {
244e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui'],
245e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/touch-mode.html',
246e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
247e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Touch Mode'
248e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
249e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
250e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
251e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
252e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
253e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
254e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'performance', 'bestpractice'],
255e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/track-mem.html',
256e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
257e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Tracking Memory Allocations'
258e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
259e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
260e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
261e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
262e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
263e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
264a35f65692d9f97264dc939d5749db86845141810Roman Nurik    tags: ['article'],
265e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/ui-1.5.html',
266e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
267e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'UI Framework Changes in Android 1.5'
268e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
269e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
270e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Explore the UI changes that were introduced in Android 1.5, compared with the UI provided in Android 1.0 and 1.1.'
271e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
272e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
273e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
274a35f65692d9f97264dc939d5749db86845141810Roman Nurik    tags: ['article'],
275e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/ui-1.6.html',
276e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
277e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'UI Framework Changes in Android 1.6'
278e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
279e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
280e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
281e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
282e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
283e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
284e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui', 'bestpractice'],
285e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/timed-ui-updates.html',
286e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
287e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Updating the UI from a Timer'
288e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
289e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
290e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Learn about how to use Handlers as a more efficient replacement for java.util.Timer on the Android platform.'
291e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
292e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
293e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
294e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui', 'accessibility'],
295e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/tts.html',
296e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
297e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Using Text-to-Speech'
298e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
299e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
300e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
301e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
302e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
303e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
304e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui', 'web'],
305e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/using-webviews.html',
306e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
307e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Using WebViews'
308e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
309e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
310e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
311e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
312e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
313e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
314e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui'],
315e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/wikinotes-linkify.html',
316e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
317e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'WikiNotes: Linkify your Text!'
318e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
319e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
320e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
321e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
322e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
323e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
324e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'intent'],
325e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/wikinotes-intents.html',
326e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
327e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'WikiNotes: Routing Intents'
328e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
329e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
330e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
331e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
332e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
333e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
334e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'ui', 'performance'],
335e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/window-bg-speed.html',
336e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
337e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Window Backgrounds & UI Speed'
338e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
339e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
340e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
341e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
342e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
343e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
344e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['article', 'performance', 'bestpractice'],
345e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'articles/zipalign.html',
346e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
347e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Zipalign: an Easy Optimization'
348e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
349e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
350e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
351e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
352e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
353e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik
354e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik///////////////////
355e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik/// SAMPLE CODE ///
356e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik///////////////////
3573f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly
3583f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  {
35994be4a5e1ad833d7e5d0dbed29b806ba8fd5409eRoman Nurik    tags: ['sample', 'new'],
3603f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    path: 'samples/AccelerometerPlay/index.html',
3613f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    title: {
3623f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'Accelerometer Play'
3633f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    },
3643f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    description: {
36594be4a5e1ad833d7e5d0dbed29b806ba8fd5409eRoman Nurik      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.'
3663f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    }
3673f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  },
3683f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  {
36994be4a5e1ad833d7e5d0dbed29b806ba8fd5409eRoman Nurik    tags: ['sample', 'new', 'accessibility'],
3703f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    path: 'samples/AccessibilityService/index.html',
3713f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    title: {
3723f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'Accessibility Service'
3733f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    },
3743f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    description: {
3753f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'Illustrates an accessibility service that provides custom feedback for the Clock application which comes by default with Android devices'
3763f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    }
3773f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  },
378e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
379e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'layout', 'ui'],
380e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/ApiDemos/index.html',
381e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
382e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'API Demos'
383e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
384e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
385e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A variety of small applications that demonstrate an extensive collection of framework topics.'
386e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
387e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
388e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
3893f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    tags: ['sample', 'data', 'newfeature', 'accountsync'],
390e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/BackupRestore/index.html',
391e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
392e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Backup and Restore'
393e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
394e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
395e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
396e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
397e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
398e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
399e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'communication'],
400e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/BluetoothChat/index.html',
401e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
402e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Bluetooth Chat'
403e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
404e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
405e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'An application for two-way text messaging over Bluetooth.'
406e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
407e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
408e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
409e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'accountsync'],
410e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/BusinessCard/index.html',
411e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
412e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'BusinessCard'
413e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
414e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
415e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
416e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
417e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
418e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
419e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'accountsync'],
420e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/ContactManager/index.html',
421e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
422e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Contact Manager'
423e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
424e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
425e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
426e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
427e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
428e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
4293f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    tags: ['sample', 'ui'],
4303f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    path: 'samples/CubeLiveWallpaper/index.html',
4313f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    title: {
4323f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'Cube Live Wallpaper'
4333f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    },
4343f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    description: {
4353f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'An application that demonstrates how to create a live wallpaper and  bundle it in an application that users can install on their devices.'
4363f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    }
4373f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  },
4383f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  {
439e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample'],
440e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/Home/index.html',
441e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
442e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Home'
443e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
444e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
445e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A home screen replacement application.'
446d84725401d7b79b79020793d06427cad43fa95b1Alexander Lucas    }
447d84725401d7b79b79020793d06427cad43fa95b1Alexander Lucas  },
448d84725401d7b79b79020793d06427cad43fa95b1Alexander Lucas  {
449a35f65692d9f97264dc939d5749db86845141810Roman Nurik    tags: ['sample', 'new', 'newfeature', 'ui'],
450a35f65692d9f97264dc939d5749db86845141810Roman Nurik    path: 'samples/HoneycombGallery/index.html',
451d84725401d7b79b79020793d06427cad43fa95b1Alexander Lucas    title: {
452d84725401d7b79b79020793d06427cad43fa95b1Alexander Lucas      en: 'Honeycomb Gallery'
453d84725401d7b79b79020793d06427cad43fa95b1Alexander Lucas    },
454d84725401d7b79b79020793d06427cad43fa95b1Alexander Lucas    description: {
455a35f65692d9f97264dc939d5749db86845141810Roman Nurik      en: 'An image gallery application using APIs that are new in Android 3.0 (a.k.a. Honeycomb).'
456e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
457e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
458e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
459e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'gamedev', 'media'],
460e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/JetBoy/index.html',
461e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
462e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'JetBoy'
463e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
464e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
465e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A game that demonstrates the SONiVOX JET interactive music technology, with <code><a href="/reference/android/media/JetPlayer.html">JetPlayer</a></code>.'
466e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
467e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
468e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
469e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'gamedev', 'media'],
470e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/LunarLander/index.html',
471e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
472e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Lunar Lander'
473e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
474e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
475e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A classic Lunar Lander game.'
476e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
477e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
478e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
479e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'ui', 'bestpractice', 'layout'],
480e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/MultiResolution/index.html',
481e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
482e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Multiple Resolutions'
483e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
484e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
485e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A sample application that shows how to use resource directory qualifiers to provide different resources for different screen configurations.'
486e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
487e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
488e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
489e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'data'],
4903f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    path: 'samples/NFCDemo/index.html',
4913f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    title: {
4923f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'NFC Demo'
4933f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    },
4943f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    description: {
4953f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'An application for reading NFC Forum Type 2 Tags using the NFC APIs'
4963f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    }
4973f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  },
4983f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  {
4993f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    tags: ['sample', 'data'],
500e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/NotePad/index.html',
501e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
502e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Note Pad'
503e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
504e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
505e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'An application for saving notes. Similar (but not identical) to the <a href="/resources/tutorials/notepad/index.html">Notepad tutorial</a>.'
506e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
507e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
508e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
5099e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira    tags: ['sample', 'new', 'media' ],
5109e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira    path: 'samples/RandomMusicPlayer/index.html',
5119e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira    title: {
5129e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira      en: 'Random Music Player'
5139e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira    },
5149e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira    description: {
5159e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira      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.'
5169e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira    }
5179e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira  },
5189e67587d022675f4b6f62e565b23745c4a550ed9Bruno Oliveira  {
519cba8efdff8a77b159f259d973b05d508a61206e1Roman Nurik    tags: ['sample', 'new', 'newfeature', 'performance', 'gamedev', 'gl'],
52044b362c34066764b6711ce04923ce71b5d011283Robert Ly    path: 'samples/RenderScript/index.html',
5216518f486a5b9cdcb48df3ca09732b51b6df249bfRobert Ly    title: {
52244b362c34066764b6711ce04923ce71b5d011283Robert Ly      en: 'RenderScript'
5236518f486a5b9cdcb48df3ca09732b51b6df249bfRobert Ly    },
5246518f486a5b9cdcb48df3ca09732b51b6df249bfRobert Ly    description: {
52544b362c34066764b6711ce04923ce71b5d011283Robert Ly      en: 'A set of samples that demonstrate how to use various features of the RenderScript APIs.'
5266518f486a5b9cdcb48df3ca09732b51b6df249bfRobert Ly    }
5276518f486a5b9cdcb48df3ca09732b51b6df249bfRobert Ly  },
5286518f486a5b9cdcb48df3ca09732b51b6df249bfRobert Ly  {
529e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'accountsync'],
530e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/SampleSyncAdapter/index.html',
531e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
532e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'SampleSyncAdapter'
533e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
534e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
535e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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).'
536e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
537e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
538e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
539183ecbc229d70e30effe7e8e7173ff9228728316Scott Main    tags: ['sample', 'ui', 'search'],
540e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/SearchableDictionary/index.html',
541e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
542e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Searchable Dictionary v2'
543e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
544e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
545e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A sample application that demonstrates Android\'s search framework, including how to provide search suggestions for Quick Search Box.'
546e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
547e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
548e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
5493f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    tags: ['sample'],
5503f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    path: 'samples/SipDemo/index.html',
5513f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    title: {
5523f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'SIP Demo'
5533f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    },
5543f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    description: {
5553f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'A demo application highlighting how to make internet-based calls with the SIP API.'
5563f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    }
5573f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  },
5583f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  {
559e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['sample', 'layout', 'ui'],
560e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/Snake/index.html',
561e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
562e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Snake'
563e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
564e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
565e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'An implementation of the classic game "Snake."'
566e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
567e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
568e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
5693f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    tags: ['sample', 'input'],
5703f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    path: 'samples/SoftKeyboard/index.html',
5713f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    title: {
5723f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'Soft Keyboard'
5733f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    },
5743f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    description: {
5753f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly      en: 'An example of writing an input method for a software keyboard.'
5763f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    }
5773f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  },
5783f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly  {
579183ecbc229d70e30effe7e8e7173ff9228728316Scott Main    tags: ['sample', 'testing'],
580e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/Spinner/index.html',
581e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
582e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Spinner'
583e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
584e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
585e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A simple application that serves as an application under test for the SpinnerTest example.'
586e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
587e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
588e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
589183ecbc229d70e30effe7e8e7173ff9228728316Scott Main    tags: ['sample', 'testing'],
590e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/SpinnerTest/index.html',
591e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
592e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'SpinnerTest'
593e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
594e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
595e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'The test application for the Activity Testing tutorial. It tests the Spinner example application.'
596e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
597e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
598e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
59994be4a5e1ad833d7e5d0dbed29b806ba8fd5409eRoman Nurik    tags: ['sample', 'new', 'newfeature', 'widgets'],
600fca67c5525bf26ac9eadb03476fb846c167387f4Adam Cohen    path: 'samples/StackWidget/index.html',
601fca67c5525bf26ac9eadb03476fb846c167387f4Adam Cohen    title: {
602d873e660c57eabb15a95acf71398c38929504284Scott Main      en: 'StackView Widget'
603fca67c5525bf26ac9eadb03476fb846c167387f4Adam Cohen    },
604fca67c5525bf26ac9eadb03476fb846c167387f4Adam Cohen    description: {
605fca67c5525bf26ac9eadb03476fb846c167387f4Adam Cohen      en: 'Demonstrates how to create a simple collection widget containing a StackView.'
606fca67c5525bf26ac9eadb03476fb846c167387f4Adam Cohen    }
607fca67c5525bf26ac9eadb03476fb846c167387f4Adam Cohen  },
608fca67c5525bf26ac9eadb03476fb846c167387f4Adam Cohen  {
609183ecbc229d70e30effe7e8e7173ff9228728316Scott Main    tags: ['sample', 'newfeature'],
610e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/TicTacToeLib/index.html',
611e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
612e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'TicTacToeLib'
613e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
614e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
615e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      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.'
616e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
617e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
618e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
619183ecbc229d70e30effe7e8e7173ff9228728316Scott Main    tags: ['sample', 'newfeature',],
620e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/TicTacToeMain/index.html',
621e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
622e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'TicTacToeMain'
623e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
624e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
625e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Demonstrates how an application can make use of shared code and resources stored in an Android library project.'
626e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
627e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
628e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
6298cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly    tags: ['sample', 'new', 'newfeature'],
6308cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly    path: 'samples/USB/index.html',
6318cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly    title: {
6328cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly      en: 'USB'
6338cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly    },
6348cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly    description: {
6358cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly      en: 'A set of samples that demonstrate how to use various features of the USB APIs.'
6368cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly    }
6378cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly  },
6388cdb2e2d834fc1dbff8d02124a08c0f426aa1de7Robert Ly  {
63994be4a5e1ad833d7e5d0dbed29b806ba8fd5409eRoman Nurik    tags: ['sample', 'ui', 'widgets'],
640e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/Wiktionary/index.html',
641e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
642e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Wiktionary'
643e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
644e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
645e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'An example of creating interactive widgets for display on the Android home screen.'
646e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
647e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
648e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
64994be4a5e1ad833d7e5d0dbed29b806ba8fd5409eRoman Nurik    tags: ['sample', 'ui', 'widgets'],
650e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'samples/WiktionarySimple/index.html',
651e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
652e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Wiktionary (Simplified)'
653e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
654e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
655e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A simple Android home screen widgets example.'
656e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
657e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
6583eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne  {
65906d2fa705ba5a11f712187229238b0d41b446a52Winson Chung    tags: ['sample', 'widgets', 'newfeature', 'new'],
66006d2fa705ba5a11f712187229238b0d41b446a52Winson Chung    path: 'samples/WeatherListWidget/index.html',
66106d2fa705ba5a11f712187229238b0d41b446a52Winson Chung    title: {
662d873e660c57eabb15a95acf71398c38929504284Scott Main      en: 'Weather List Widget'
66306d2fa705ba5a11f712187229238b0d41b446a52Winson Chung    },
66406d2fa705ba5a11f712187229238b0d41b446a52Winson Chung    description: {
66506d2fa705ba5a11f712187229238b0d41b446a52Winson Chung      en: 'A more complex collection-widget example which uses a ContentProvider as its data source.'
66606d2fa705ba5a11f712187229238b0d41b446a52Winson Chung    }
66706d2fa705ba5a11f712187229238b0d41b446a52Winson Chung  },
66806d2fa705ba5a11f712187229238b0d41b446a52Winson Chung  {
6693f9b6445cb9c384a428364a1cca85ca3c172fbe6Robert Ly    tags: ['sample', 'layout'],
6703eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne    path: 'samples/XmlAdapters/index.html',
6713eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne    title: {
6723eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne      en: 'XML Adapters'
6733eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne    },
6743eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne    description: {
6753eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne      en: 'Binding data to views using XML Adapters examples.'
6763eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne    }
6773eb9b66deb18888d7f52ed901abf342506aa3db7Gilles Debunne  },
678e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik
679e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik/////////////////
680e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik/// TUTORIALS ///
681e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik/////////////////
682e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik
683e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
684e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['tutorial'],
685e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'tutorials/hello-world.html',
686e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
687e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Hello World'
688e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
689e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
690e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Beginning basic application development with the Android SDK.'
691e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
692e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
693e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
694e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['tutorial', 'ui', 'layout'],
695e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'tutorials/views/index.html',
696e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
697e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Hello Views'
698e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
699e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
700e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A walk-through of the various types of layouts and views available in the Android SDK.'
701e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
702e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
703e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
704e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['tutorial', 'ui', 'bestpractice'],
705e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'tutorials/localization/index.html',
706e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
707e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Hello Localization'
708e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
709e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
710e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'The basics of localizing your applications for multiple languages and locales.'
711e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
712e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
713e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
714e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    tags: ['tutorial', 'data'],
715e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'tutorials/notepad/index.html',
716e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
717e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Notepad Tutorial'
718e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
719e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
720e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A multi-part tutorial discussing intermediate-level concepts such as data access.'
721e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
722e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
723e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
724183ecbc229d70e30effe7e8e7173ff9228728316Scott Main    tags: ['tutorial', 'testing'],
725e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'tutorials/testing/helloandroid_test.html',
726e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
727e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Hello Testing'
728e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
729e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
730e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A basic introduction to the Android testing framework.'
731e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
732e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  },
733e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  {
734183ecbc229d70e30effe7e8e7173ff9228728316Scott Main    tags: ['tutorial', 'testing'],
735e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    path: 'tutorials/testing/activity_test.html',
736e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    title: {
737e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'Activity Testing'
738e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    },
739e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    description: {
740e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik      en: 'A more advanced demonstration of the Android testing framework and tools.'
741e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik    }
742e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik  }
743e577d72a3be20e589437271f0e5ca474fab38124Roman Nurik];
744