1<?xml version="1.0" encoding="utf-8"?>
2<!--
3 Copyright (C) 2014 The Android Open Source Project
4
5     Licensed under the Apache License, Version 2.0 (the "License");
6     you may not use this file except in compliance with the License.
7     You may obtain a copy of the License at
8
9          http://www.apache.org/licenses/LICENSE-2.0
10
11     Unless required by applicable law or agreed to in writing, software
12     distributed under the License is distributed on an "AS IS" BASIS,
13     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14     See the License for the specific language governing permissions and
15     limitations under the License.
16-->
17<manifest xmlns:android="http://schemas.android.com/apk/res/android"
18    package="com.example.android.wearable.watchface" >
19
20    <uses-sdk
21        android:minSdkVersion="21"
22        android:targetSdkVersion="23" />
23
24    <uses-feature android:name="android.hardware.type.watch" />
25
26    <!-- Required to act as a custom watch face. -->
27    <uses-permission android:name="android.permission.WAKE_LOCK" />
28
29    <!-- Calendar permission used by CalendarWatchFaceService -->
30    <uses-permission android:name="android.permission.READ_CALENDAR" />
31
32    <!-- Location permission used by FitDistanceWatchFaceService -->
33    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
34
35    <application
36        android:allowBackup="true"
37        android:icon="@drawable/ic_launcher"
38        android:label="@string/app_name" >
39
40        <meta-data
41            android:name="com.google.android.gms.version"
42            android:value="@integer/google_play_services_version" />
43
44        <uses-library android:name="com.google.android.wearable" android:required="false" />
45
46        <service
47            android:name=".AnalogWatchFaceService"
48            android:label="@string/analog_name"
49            android:permission="android.permission.BIND_WALLPAPER" >
50            <meta-data
51                android:name="android.service.wallpaper"
52                android:resource="@xml/watch_face" />
53            <meta-data
54                android:name="com.google.android.wearable.watchface.preview"
55                android:resource="@drawable/preview_analog" />
56            <meta-data
57                android:name="com.google.android.wearable.watchface.preview_circular"
58                android:resource="@drawable/preview_analog_circular" />
59            <meta-data
60                android:name="com.google.android.wearable.watchface.companionConfigurationAction"
61                android:value="com.example.android.wearable.watchface.CONFIG_ANALOG" />
62
63            <intent-filter>
64                <action android:name="android.service.wallpaper.WallpaperService" />
65
66                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
67            </intent-filter>
68        </service>
69        <service
70            android:name=".SweepWatchFaceService"
71            android:label="@string/sweep_name"
72            android:permission="android.permission.BIND_WALLPAPER" >
73            <meta-data
74                android:name="android.service.wallpaper"
75                android:resource="@xml/watch_face" />
76            <meta-data
77                android:name="com.google.android.wearable.watchface.preview"
78                android:resource="@drawable/preview_analog" />
79            <meta-data
80                android:name="com.google.android.wearable.watchface.preview_circular"
81                android:resource="@drawable/preview_analog_circular" />
82
83            <intent-filter>
84                <action android:name="android.service.wallpaper.WallpaperService" />
85
86                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
87            </intent-filter>
88        </service>
89        <service
90            android:name=".OpenGLWatchFaceService"
91            android:label="@string/opengl_name"
92            android:permission="android.permission.BIND_WALLPAPER" >
93            <meta-data
94                android:name="android.service.wallpaper"
95                android:resource="@xml/watch_face" />
96            <meta-data
97                android:name="com.google.android.wearable.watchface.preview"
98                android:resource="@drawable/preview_opengl" />
99            <meta-data
100                android:name="com.google.android.wearable.watchface.preview_circular"
101                android:resource="@drawable/preview_opengl_circular" />
102            <meta-data
103                android:name="com.google.android.wearable.watchface.companionConfigurationAction"
104                android:value="com.example.android.wearable.watchface.CONFIG_OPENGL" />
105
106            <intent-filter>
107                <action android:name="android.service.wallpaper.WallpaperService" />
108
109                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
110            </intent-filter>
111        </service>
112        <service
113            android:name=".CardBoundsWatchFaceService"
114            android:label="@string/card_bounds_name"
115            android:permission="android.permission.BIND_WALLPAPER" >
116            <meta-data
117                android:name="android.service.wallpaper"
118                android:resource="@xml/watch_face" />
119            <meta-data
120                android:name="com.google.android.wearable.watchface.preview"
121                android:resource="@drawable/preview_card_bounds" />
122            <meta-data
123                android:name="com.google.android.wearable.watchface.preview_circular"
124                android:resource="@drawable/preview_card_bounds_circular" />
125            <meta-data
126                android:name="com.google.android.wearable.watchface.companionConfigurationAction"
127                android:value="com.example.android.wearable.watchface.CONFIG_CARD_BOUNDS" />
128
129            <intent-filter>
130                <action android:name="android.service.wallpaper.WallpaperService" />
131
132                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
133            </intent-filter>
134        </service>
135
136        <service
137            android:name=".ComplicationSimpleWatchFaceService"
138            android:enabled="true"
139            android:label="@string/complication_simple"
140            android:permission="android.permission.BIND_WALLPAPER">
141            <meta-data
142                android:name="android.service.wallpaper"
143                android:resource="@xml/watch_face"/>
144            <meta-data
145                android:name="com.google.android.wearable.watchface.preview"
146                android:resource="@drawable/preview_complication_simple"/>
147            <meta-data
148                android:name="com.google.android.wearable.watchface.preview_circular"
149                android:resource="@drawable/preview_complication_simple"/>
150            <meta-data
151                android:name="com.google.android.wearable.watchface.wearableConfigurationAction"
152                android:value="com.example.android.wearable.watchface.CONFIG_COMPLICATION_SIMPLE"/>
153
154            <intent-filter>
155                <action android:name="android.service.wallpaper.WallpaperService"/>
156
157                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE"/>
158            </intent-filter>
159        </service>
160        <activity
161            android:name=".ComplicationSimpleConfigActivity"
162            android:label="@string/complication_simple">
163            <intent-filter>
164                <action android:name="com.example.android.wearable.watchface.CONFIG_COMPLICATION_SIMPLE"/>
165
166                <category android:name="com.google.android.wearable.watchface.category.WEARABLE_CONFIGURATION"/>
167                <category android:name="android.intent.category.DEFAULT"/>
168            </intent-filter>
169        </activity>
170
171        <service
172            android:name=".InteractiveWatchFaceService"
173            android:label="@string/interactive_name"
174            android:permission="android.permission.BIND_WALLPAPER" >
175            <meta-data
176                android:name="android.service.wallpaper"
177                android:resource="@xml/watch_face" />
178            <meta-data
179                android:name="com.google.android.wearable.watchface.preview"
180                android:resource="@drawable/preview_interactive" />
181            <meta-data
182                android:name="com.google.android.wearable.watchface.preview_circular"
183                android:resource="@drawable/preview_interactive_circular" />
184
185            <intent-filter>
186                <action android:name="android.service.wallpaper.WallpaperService" />
187
188                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
189            </intent-filter>
190        </service>
191        <service
192            android:name=".DigitalWatchFaceService"
193            android:label="@string/digital_name"
194            android:permission="android.permission.BIND_WALLPAPER" >
195            <meta-data
196                android:name="android.service.wallpaper"
197                android:resource="@xml/watch_face" />
198            <meta-data
199                android:name="com.google.android.wearable.watchface.preview"
200                android:resource="@drawable/preview_digital" />
201            <meta-data
202                android:name="com.google.android.wearable.watchface.preview_circular"
203                android:resource="@drawable/preview_digital_circular" />
204            <meta-data
205                android:name="com.google.android.wearable.watchface.companionConfigurationAction"
206                android:value="com.example.android.wearable.watchface.CONFIG_DIGITAL" />
207            <meta-data
208                android:name="com.google.android.wearable.watchface.wearableConfigurationAction"
209                android:value="com.example.android.wearable.watchface.CONFIG_DIGITAL" />
210
211            <intent-filter>
212                <action android:name="android.service.wallpaper.WallpaperService" />
213
214                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
215            </intent-filter>
216        </service>
217
218        <!--
219             All intent-filters for config actions must include the categories
220            com.google.android.wearable.watchface.category.WEARABLE_CONFIGURATION
221            and android.intent.category.DEFAULT.
222        -->
223
224        <activity
225            android:name=".DigitalWatchFaceWearableConfigActivity"
226            android:label="@string/digital_config_name" >
227            <intent-filter>
228                <action android:name="com.example.android.wearable.watchface.CONFIG_DIGITAL" />
229
230                <category android:name="com.google.android.wearable.watchface.category.WEARABLE_CONFIGURATION" />
231                <category android:name="android.intent.category.DEFAULT" />
232            </intent-filter>
233        </activity>
234
235        <service
236            android:name=".CalendarWatchFaceService"
237            android:label="@string/calendar_name"
238            android:permission="android.permission.BIND_WALLPAPER" >
239            <meta-data
240                android:name="android.service.wallpaper"
241                android:resource="@xml/watch_face" />
242            <meta-data
243                android:name="com.google.android.wearable.watchface.preview"
244                android:resource="@drawable/preview_calendar" />
245            <meta-data
246                android:name="com.google.android.wearable.watchface.preview_circular"
247                android:resource="@drawable/preview_calendar_circular" />
248
249            <intent-filter>
250                <action android:name="android.service.wallpaper.WallpaperService" />
251
252                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
253            </intent-filter>
254        </service>
255        <service android:name=".DigitalWatchFaceConfigListenerService" >
256            <intent-filter>
257                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
258                <data android:scheme="wear" android:host="*" android:pathPrefix="/"/>
259            </intent-filter>
260        </service>
261        <service
262            android:name=".FitDistanceWatchFaceService"
263            android:label="@string/fit_distance_name"
264            android:permission="android.permission.BIND_WALLPAPER" >
265            <meta-data
266                android:name="android.service.wallpaper"
267                android:resource="@xml/watch_face" />
268            <meta-data
269                android:name="com.google.android.wearable.watchface.preview"
270                android:resource="@drawable/preview_distance" />
271            <meta-data
272                android:name="com.google.android.wearable.watchface.preview_circular"
273                android:resource="@drawable/preview_distance_circular" />
274            <meta-data
275                android:name="com.google.android.wearable.watchface.companionConfigurationAction"
276                android:value="com.example.android.wearable.watchface.CONFIG_FIT_DISTANCE" />
277
278            <intent-filter>
279                <action android:name="android.service.wallpaper.WallpaperService" />
280
281                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
282            </intent-filter>
283        </service>
284        <service
285            android:name=".FitStepsWatchFaceService"
286            android:label="@string/fit_steps_name"
287            android:permission="android.permission.BIND_WALLPAPER" >
288            <meta-data
289                android:name="android.service.wallpaper"
290                android:resource="@xml/watch_face" />
291            <meta-data
292                android:name="com.google.android.wearable.watchface.preview"
293                android:resource="@drawable/preview_fit" />
294            <meta-data
295                android:name="com.google.android.wearable.watchface.preview_circular"
296                android:resource="@drawable/preview_fit_circular" />
297
298            <intent-filter>
299                <action android:name="android.service.wallpaper.WallpaperService" />
300
301                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
302            </intent-filter>
303        </service>
304
305        <activity
306            android:name=".CalendarWatchFacePermissionActivity"
307            android:label="@string/title_activity_calendar_watch_face_permission" >
308        </activity>
309
310        <service
311            android:name=".provider.RandomNumberProviderService"
312            android:label="@string/complications_provider_random_number"
313            android:icon="@drawable/ic_launcher">
314
315            <intent-filter>
316                <action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST"/>
317            </intent-filter>
318
319            <meta-data
320                android:name="android.support.wearable.complications.SUPPORTED_TYPES"
321                android:value="RANGED_VALUE,SHORT_TEXT,LONG_TEXT"/>
322            <!--
323            When your complication data provider is active, UPDATE_PERIOD_SECONDS specifies how
324            often you want the system to check for updates to the data. In this case, the time is
325            specified to a relatively short 120 seconds, so we can observe the result of this code
326            lab. In everyday use, developers should consider intervals in the order of minutes.
327            Also, remember that this is only a guidance for the system. Android Wear may update less
328            frequently.
329
330            If your app needs to push updates instead of updating on a regular schedule, you should
331            set this value to 0 and use ProviderUpdateRequester.requestUpdate() to trigger an update
332            request when you need one.
333            -->
334            <meta-data
335                android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
336                android:value="120"/>
337        </service>
338    </application>
339
340</manifest>
341