<?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>WearMessagingApp</name>
    <group>Wearable</group>  <!-- This field will be deprecated in the future
                            and replaced with the "categories" tags below. -->
    <package>com.example.android.wearable.wear.messaging</package>

    <minSdk>24</minSdk>
    <targetSdkVersion>25</targetSdkVersion>
    <targetSdkVersionWear>25</targetSdkVersionWear>

    <dependency_wearable>com.android.support:appcompat-v7:25.3.1</dependency_wearable>
    <dependency_wearable>com.android.support:support-v13:25.3.1</dependency_wearable>
    <dependency_wearable>com.android.support:design:25.3.1</dependency_wearable>

    <dependency_wearable>com.google.android.gms:play-services-wearable:10.2.6</dependency_wearable>
    <dependency_wearable>com.google.android.gms:play-services-auth:10.2.6</dependency_wearable>

    <dependency_wearable>com.github.bumptech.glide:glide:3.8.0</dependency_wearable>
    <dependency_wearable>com.google.code.gson:gson:2.8.0</dependency_wearable>

    <strings>
        <intro>
<![CDATA[
Sample demonstrates best practices for building a messaging experience on Wear.
]]>
        </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/chat_list.png</img>
            <img>screenshots/chat.png</img>
            <img>screenshots/contacts.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>com.google.android.gms.auth.api.Auth</android>
            <android>com.google.android.gms.auth.api.signin.GoogleSignInAccount</android>
            <android>com.google.android.gms.common.api.GoogleApiClient</android>
            <android>android.support.wearable.view.WearableRecyclerView</android>
            <android>android.support.wearable.view.drawer.WearableActionDrawer</android>
            <android>android.support.wearable.view.drawer.WearableDrawerLayout</android>
            <android>android.support.v7.util.SortedList</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[
Sample demonstrating how to build a messaging app with the following features: contacts list,
chat list, send messages, message style notification, and sign-in with Google.
]]>
        </description>

        <!-- Multi-paragraph introduction to sample, from an educational point-of-view.
        Makrdown formatting allowed. This will be used to generate a mini-article for the
        sample on DAC. -->
        <intro>
<![CDATA[
Getting Started
---------------

This project demonstrates Google Sign-in. You will need to follow the setup instructions for
integrating Google Sign-in into an Android app at the link below. Remember to use the package name
com.example.android.wearable.wear.messaging when configuring your project and credentials, or
otherwise modify the sample appropriately if you want to use a different package name.

https://developers.google.com/identity/sign-in/android/start-integrating

After you finish setting up the ___google-services.json___ file for Google Sign-in, update the
___strings.xml___ file for the string value ___default\_web\_client\_id___ to the value for the
OAuth web client id created.

Features
---------------
The project demonstrates the following features:

- Chat list
- Contacts list
- Authentication with Google
- Sending a chat message
- Receiving a chat message
- Replying from a notification

Each feature is contained in it's own package:

- _com.example.android.wearable.wear.messaging.____chat___
    - Displays a conversation
    - Handles incoming messages from a mocked back end server.
    - Replies to messages from a notification
- _com.example.android.wearable.wear.messaging.____chatlist___
    - Displays all of the conversations you are involved in.
- _com.example.android.wearable.wear.messaging.____contacts___
    - Displays a list your contacts. In this sample, the contacts are mocked out. You will want to
    replace the backing datasource with your own contacts solution.
- _com.example.android.wearable.wear.messaging.____mock___
    - A local mock database.
- _com.example.android.wearable.wear.messaging.____model___
    - Objects that are displayed in the UI. These objects also act as entities and are persisted in
    the mock database.


To see other examples of Google Sign-in, check out the [Wear Google Sign-In Sample][1].

To see other examples of notifications, check out the [WearNotifications Sample][2]

[1]: https://github.com/googlesamples/android-WearStandaloneGoogleSignIn
[2]: https://github.com/googlesamples/android-WearNotifications
]]>
        </intro>
    </metadata>
</sample>
