<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2016 Google Inc.
  ~
  ~ 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>WearVerifyRemoteApp</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.wearverifyremoteapp</package>

    <!-- change minSdk if needed-->
    <minSdk>23</minSdk>
    <minSdkVersionWear>23</minSdkVersionWear>
    <targetSdkVersion>24</targetSdkVersion>
    <targetSdkVersionWear>24</targetSdkVersionWear>

    <wearable>
        <has_handheld_app>true</has_handheld_app>
    </wearable>

    <dependency>com.google.android.support:wearable:2.0.0-beta1</dependency>

    <provided_dependency_wearable>com.google.android.wearable:wearable:1.0.0</provided_dependency_wearable>
    <preview_wearable_support_dependency>com.google.android.support:wearable:2.0.0-beta1</preview_wearable_support_dependency>


    <!-- Include additional dependencies here.-->
    <!-- dependency>com.google.android.gms:play-services:5.0.+</dependency -->

    <strings>
        <intro>
<![CDATA[
Sample demonstrates best practices for checking if the remote version of your app is installed on a
connected device. This enables standalone Android Wear apps to check if the phone app is installed
and the other way around.
]]>
        </intro>
    </strings>
    <template src="base" />
    <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>Getting Started, UI</categories>
        <technologies>Android</technologies>
        <languages>Java</languages>
        <solutions>Mobile</solutions>
        <!-- Values: {BEGINNER | INTERMEDIATE | ADVANCED | EXPERT} -->
        <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>
            <img>screenshots/mobile-1.png</img>
            <img>screenshots/mobile-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.activity.WearableActivity</android>
            <android>android.support.wearable.view.ConfirmationOverlay</android>
            <android>com.google.android.gms.common.api.GoogleApiClient</android>
            <android>com.google.android.gms.wearable.CapabilityApi</android>
            <android>com.google.android.gms.wearable.CapabilityInfo</android>
            <android>com.google.android.gms.wearable.Node</android>
            <android>com.google.android.gms.wearable.Wearable</android>
            <android>com.google.android.wearable.intent.RemoteIntent</android>
            <android>com.google.android.wearable.playstore.PlayStoreAvailability</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 demonstrates best practices for checking if connected mobile device has your app installed
from an Android Wear 2.+ standalone app and the other way around.
]]>
        </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[
Steps for trying out the sample:
* Compile and install the mobile app onto your mobile device or emulator (for mobile
scenario).
* Compile and install the wearable app onto your Wear device or emulator (for Wear
scenario).

This sample demonstrate best practices for using PlayStoreAvailability and RemoteIntent to check
if the mobile version of your app exists from within your Standalone Wear 2.+ app and the other
way around. Scenarios:

1. Launch Wear standalone app to verify if the mobile version is installed. If it is not, you will
be able to open the Play Store on the remote mobile device from the app (if it has the Play Store).

2. Launch Mobile app to verify if the Wear version is installed. If it is not, you will
be able to open the Play Store on the remote Wear device from the app.

Although there are two apps (Mobile and Wear), each should be looked at as a separate, standalone
apps/experiences.
]]>
        </intro>
    </metadata>
</sample>
