<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright 2017 The Android Open Source Project

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<sample>
    <name>WearComplicationProvidersTestSuite</name>
    <group>Wearable</group>
    <package>com.example.android.wearable.wear.wearcomplicationproviderstestsuite</package>

    <minSdk>18</minSdk>
    <targetSdkVersion>28</targetSdkVersion>

    <minSdkVersionWear>23</minSdkVersionWear>
    <targetSdkVersionWear>28</targetSdkVersionWear>

    <wearable>
        <has_handheld_app>false</has_handheld_app>
    </wearable>

    <androidX>true</androidX>

    <dependency_wearable>androidx.appcompat:appcompat:1.0.2</dependency_wearable>
    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>

    <strings>
        <intro>
<![CDATA[
Complication Test Suite is a set of complication providers that provide dummy data and it can be
used to test how different types of complications render on a watch face.
]]>
        </intro>
    </strings>

    <template src="base-build" />
    <template src="Wear" />

    <metadata>
        <!-- Values: {DRAFT | PUBLISHED | INTERNAL | DEPRECATED | SUPERCEDED} -->
        <status>PUBLISHED</status>
        <!-- See http://go/sample-categories for details on the next 4 fields. -->
        <!-- Most samples just need to udpate the Categories field. This is a comma-
             seperated list of topic tags. Unlike the old category system, samples
             may have multiple categories, so feel free to add extras. Try to avoid
             simply tagging everything with "UI". :)-->
        <categories>Wearable</categories>
        <technologies>Android</technologies>
        <languages>Java</languages>
        <solutions>Mobile</solutions>
        <!-- Values: {BEGINNER | INTERMEDIATE | ADVANCED | EXPERT} -->
        <!-- Beginner is for "getting started" type content, or essential content.
             (e.g. "Hello World", activities, intents)

             Intermediate is for content that covers material a beginner doesn't need
             to know, but that a skilled developer is expected to know.
             (e.g. services, basic styles and theming, sync adapters)

             Advanced is for highly technical content geared towards experienced developers.
             (e.g. performance optimizations, custom views, bluetooth)

             Expert is reserved for highly technical or specialized content, and should
             be used sparingly. (e.g. VPN clients, SELinux, custom instrumentation runners) -->
        <level>INTERMEDIATE</level>
        <!-- Dimensions: 512x512, PNG fomrat -->
        <icon>screenshots/icon-web.png</icon>
        <!-- Path to screenshots. Use <img> tags for each. -->
        <screenshots>
            <img>screenshots/wear-1.png</img>
            <img>screenshots/wear-2.png</img>
        </screenshots>
        <!-- List of APIs that this sample should be cross-referenced under. Use <android>
        for fully-qualified Framework class names ("android:" namespace).

        Use <ext> for custom namespaces, if needed. See "Samples Index API" documentation
        for more details. -->
        <api_refs>
            <android>android.support.wearable.complications.ComplicationData</android>
            <android>android.support.wearable.complications.ComplicationManager</android>
            <android>android.support.wearable.complications.ComplicationProviderService</android>
            <android>android.support.wearable.complications.ComplicationText</android>
            <android>android.support.wearable.complications.ProviderUpdateRequester</android>
        </api_refs>

        <!-- 1-3 line description of the sample here.

            Avoid simply rearranging the sample's title. What does this sample actually
            accomplish, and how does it do it? -->
        <description>
<![CDATA[
Complication Test Suite is a set of complication providers that provide dummy data and it can be
used to test how different types of complications render on a watch face.
]]>
        </description>


        <intro>
            <![CDATA[
Steps for trying out the sample:
* Compile and install the wearable app onto your Wear device or emulator (for Wear scenario).

* This sample does not have a main Activity (just Services that provide the complication data).
Therefore, you may see an error next to the 'Run' button. To fix, click on the
"Wearable" dropdown next to the 'Run' button and select 'Edit Configurations'. Under the
'Launch Options', change the 'Launch' field from 'Default APK' to 'Nothing' and save.

This sample provides dummy data for testing the complications UI in your watch face. After
selecting a type from your watch face configuration Activity, you can tap on the complications to
see more options.

The Wear app demonstrates the use of [ComplicationData][1], [ComplicationManager][2],
[ComplicationProviderService][3], [ComplicationText][4], and [ProviderUpdateRequester][5].

[1]: https://developer.android.com/reference/android/support/wearable/complications/ComplicationData.html
[2]: https://developer.android.com/reference/android/support/wearable/complications/ComplicationManager.html
[3]: https://developer.android.com/reference/android/support/wearable/complications/ComplicationProviderService.html
[4]: https://developer.android.com/reference/android/support/wearable/complications/ComplicationText.html
[5]: https://developer.android.com/reference/android/support/wearable/complications/ProviderUpdateRequester.html
]]>
        </intro>
    </metadata>
</sample>
