Docs: Complications additions and changes am: 5c7636218d
am: e1473e1124
Change-Id: I20035c0a8c18681663f960fdf69cdd64b5672814
This commit is contained in:
@@ -12,6 +12,13 @@ page.image=/wear/preview/images/complications-main-image.png
|
|||||||
<a href="#adding_complications_to_a_watch_face">Adding
|
<a href="#adding_complications_to_a_watch_face">Adding
|
||||||
Complications to a Watch Face</a>
|
Complications to a Watch Face</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#permissions-for-complication-data">Permissions
|
||||||
|
for Complication Data</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#default-providers">Default Providers for Watch Faces</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#exposing_data_to_complications">Exposing Data to
|
<a href="#exposing_data_to_complications">Exposing Data to
|
||||||
Complications</a>
|
Complications</a>
|
||||||
@@ -27,12 +34,14 @@ page.image=/wear/preview/images/complications-main-image.png
|
|||||||
<a href="#api_additions">API Additions</a>
|
<a href="#api_additions">API Additions</a>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<h2>See Also</h2>
|
<h2>See Also</h2>
|
||||||
<ol>
|
<ol>
|
||||||
<li><a class="external-link"
|
<li><a class="external-link"
|
||||||
href="https://github.com/googlesamples/android-WatchFace">Watch
|
href="https://github.com/googlesamples/android-WatchFace">Watch
|
||||||
Face sample app with complications</a></li>
|
Face sample app with complications</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -56,9 +65,12 @@ page.image=/wear/preview/images/complications-main-image.png
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Along with reviewing this page, download the Android Wear 2.0 Preview
|
You can review the Javadoc for complications by downloading
|
||||||
Reference (see the Complications API <a href=
|
the Android Wear 2.0 Preview
|
||||||
"#api_additions">additions</a>) and review the Javadoc for complications.
|
Reference. Also see the <a href="#api_additions">API additions for
|
||||||
|
complications</a> and the
|
||||||
|
<a href="https://developer.android.com/wear/preview/behavior-changes.html">
|
||||||
|
behavior changes</a> for Wear 2.0.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -117,8 +129,8 @@ page.image=/wear/preview/images/complications-main-image.png
|
|||||||
<code>WatchFaceService.Engine</code> class, with a list of watch face
|
<code>WatchFaceService.Engine</code> class, with a list of watch face
|
||||||
complication IDs. A watch face creates these IDs to uniquely identify
|
complication IDs. A watch face creates these IDs to uniquely identify
|
||||||
slots on the watch face where complications can appear, and passes them
|
slots on the watch face where complications can appear, and passes them
|
||||||
to the <code>createProviderChooserIntent</code> method (of the
|
to the <code>createProviderChooserIntent</code> method
|
||||||
<code>ProviderChooserIntent</code> class) to allow the user to decide
|
to allow the user to decide
|
||||||
which complication should go in which slot.
|
which complication should go in which slot.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -186,6 +198,406 @@ page.image=/wear/preview/images/complications-main-image.png
|
|||||||
where possible.
|
where possible.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<h2 id="permissions-for-complication-data">
|
||||||
|
Permissions for Complication Data
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
A watch face must have the following <a href=
|
||||||
|
"https://developer.android.com/training/permissions/requesting.html">permission</a>
|
||||||
|
to receive complication data and open the provider chooser:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h3 id="opening-the-provider-chooser">
|
||||||
|
Opening the provider chooser
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
A watch face that was not granted the above permission will be unable to
|
||||||
|
start the provider chooser.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To make it easier to request the permission and start the chooser, the
|
||||||
|
<code>ComplicationHelperActivity</code> class is available in the
|
||||||
|
wearable support library. This class should be used instead of
|
||||||
|
<code>ProviderChooserIntent</code> to start the chooser in almost all
|
||||||
|
cases.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4 id="requesting-the-necessary-permission">
|
||||||
|
Requesting the necessary permission
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To use <code>ComplicationHelperActivity</code>, add it to the watch face
|
||||||
|
in the <a href=
|
||||||
|
"https://developer.android.com/guide/topics/manifest/manifest-intro.html">
|
||||||
|
manifest file</a>:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<activity android:name="android.support.wearable.complications.ComplicationHelperActivity"/>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To start the provider chooser, call the
|
||||||
|
<code>ComplicationHelperActivity.createProviderChooserHelperIntent</code>
|
||||||
|
method, to obtain an intent.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The new intent can be used with either <code>startActivity</code> or
|
||||||
|
<code>startActivityForResult</code> to launch the chooser.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Here is an example of using the new intent with
|
||||||
|
<code>startActivityForResult</code>:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
startActivityForResult(
|
||||||
|
ComplicationHelperActivity.createProviderChooserHelperIntent(
|
||||||
|
getActivity(),
|
||||||
|
watchFace,
|
||||||
|
complicationId,
|
||||||
|
ComplicationData.TYPE_LARGE_IMAGE),
|
||||||
|
PROVIDER_CHOOSER_REQUEST_CODE);
|
||||||
|
</pre>
|
||||||
|
<p>
|
||||||
|
When the helper activity is started, the helper activity checks if the
|
||||||
|
permission was granted. If the permission was not granted, the helper
|
||||||
|
activity makes a runtime permission request. If the permission request is
|
||||||
|
accepted (or is unneeded), the provider chooser is shown.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If <code>startActivityForResult</code> was used with the intent, the
|
||||||
|
result delivered back to the calling Activity will have a result code of
|
||||||
|
<code>RESULT_OK</code> if a provider was successfully set, or a result
|
||||||
|
code of <code>RESULT_CANCELLED</code> if no provider was set.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In the case where a provider was set,
|
||||||
|
<code>ComplicationProviderInfo</code> for the chosen provider will be
|
||||||
|
included in the data intent of the result, as an extra with the key
|
||||||
|
<code>ProviderChooserIntent#EXTRA_PROVIDER_INFO</code>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3 id="receiving-complication-data">
|
||||||
|
Receiving complication data
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In general, watch faces need the above permission in order to receive
|
||||||
|
complication data, but there are some exceptions. Specifically, a watch
|
||||||
|
face can only receive data from a provider if one of the following is
|
||||||
|
true:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>The provider is a "safe" system provider,
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>The provider and watch face are from the same app,
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>The provider whitelists the watch face as a "safe" watch face, or
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>The watch face has the permission
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4 id="lack-of-appropriate-permission">
|
||||||
|
Lack of appropriate permission
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If none of the above is true, then when <code>ComplicationData</code>
|
||||||
|
normally would be sent by a provider to a watch face, the system instead
|
||||||
|
sends data of the type <code>TYPE_NO_PERMISSION</code>. This type
|
||||||
|
includes an icon (an exclamation mark) and short text ("--") to allow it
|
||||||
|
to be rendered as if it were of the short text type or icon type, for
|
||||||
|
convenience.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
When a watch face receives data of <code>TYPE_NO_PERMISSION</code>, the
|
||||||
|
watch face should render this appropriately, so the user can see that
|
||||||
|
action is needed for the complication to work. If possible, a tap on a
|
||||||
|
complication in this state should launch a permission request. This can
|
||||||
|
be done using
|
||||||
|
<code>ComplicationHelperActivity.createPermissionRequestHelperIntent</code>,
|
||||||
|
if the helper activity was added to the watch face app.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If a user accepts the permission request created by the helper activity,
|
||||||
|
updates are requested for all the active complications on the watch face
|
||||||
|
automatically, allowing the <code>TYPE_NO_PERMISSION</code> data to be
|
||||||
|
replaced by real data.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4 id="safe-providers">
|
||||||
|
Safe providers
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Some system providers are considered "safe", because they only supply
|
||||||
|
information that the watch face already could obtain itself.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
These providers are listed in the new <code>SystemProviders</code> class
|
||||||
|
in the wearable support library. Whether a system provider is safe is
|
||||||
|
stated in the Javadoc (in the Android Wear 2.0 Preview Reference). Also
|
||||||
|
see <a href="#system-providers">System providers</a> for a list.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4 id="provider-specified-safe-watch-faces">
|
||||||
|
Provider-specified safe watch faces
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Providers can specify certain watch faces as "safe" to receive their
|
||||||
|
data. This is intended to be used only when the watch face will attempt
|
||||||
|
to use the provider as a default (see below),
|
||||||
|
and the provider trusts the watch face app.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To declare watch faces as safe, the provider adds metadata with a key of
|
||||||
|
<code>android.support.wearable.complications.SAFE_WATCH_FACES</code>. The
|
||||||
|
metadata value should be a comma-separated list (whitespace is ignored).
|
||||||
|
Entries in the list can be component names (of
|
||||||
|
<code>WatchFaceServices</code>, given as if
|
||||||
|
<code>ComponentName.flattenToString()</code> had been called), or they
|
||||||
|
can be package names (of apps, in which case every watch face within a
|
||||||
|
specified app is considered safe).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For example:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<meta-data
|
||||||
|
android:name="android.support.wearable.complications.SAFE_WATCH_FACES"
|
||||||
|
android:value="
|
||||||
|
com.app.watchface/com.app.watchface.MyWatchFaceService,
|
||||||
|
com.anotherapp.anotherwatchface/com.something.WatchFaceService,
|
||||||
|
com.something.text
|
||||||
|
"/>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h2 id="default-providers">
|
||||||
|
Default Providers for Watch Faces
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Watch faces can specify default providers that are used until a user
|
||||||
|
selects a provider.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3 id="setting-default-providers">
|
||||||
|
Setting default providers
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Set default providers using the
|
||||||
|
<code>setDefaultComplicationProvider</code> method in
|
||||||
|
<code>WatchFaceService.Engine</code>. This method may be called at any
|
||||||
|
time, but it does nothing if the user already chose a provider for the
|
||||||
|
given complication.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3 id="safe-providers2">
|
||||||
|
Safe providers
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For most providers, the <code>RECEIVE_COMPLICATION_DATA</code> permission
|
||||||
|
must be granted to a watch face before data can flow to it. However, some
|
||||||
|
system providers are considered "safe", and do not require the watch face
|
||||||
|
to have the permission for data to be sent (see <a href=
|
||||||
|
"#safe-providers">Safe Providers</a> and <a href=
|
||||||
|
"#system-providers">System providers</a>). These providers may be
|
||||||
|
preferable to use as defaults, as they can supply data immediately.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Alternatively, if a watch face has a partnership with a certain provider
|
||||||
|
and wishes to use it as a default, it can request that the provider list
|
||||||
|
it as a safe watch face (see <a href=
|
||||||
|
"#provider-specified-safe-watch-faces">Provider-specified safe watch
|
||||||
|
faces</a>).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3 id="system-providers">
|
||||||
|
System providers
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The system includes providers that can be used as defaults. These are
|
||||||
|
listed in the <code>SystemProviders</code> class in the wearable support
|
||||||
|
library.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The following table has details about providers that are considered safe:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Method name in the SystemProviders class
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Safety
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Can be the default
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Notes
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>dateProvider()</code>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
The standard system date provider. Tapping opens the standard Agenda
|
||||||
|
app.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>currentTimeProvider()</code>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
The standard system "time and date" provider. No tap action.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>batteryProvider()</code>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
The standard system battery provider. No tap action.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>stepCountProvider()</code>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Shows a daily total of steps, as reported by
|
||||||
|
<code>readDailyTotal</code>.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>unreadCountProvider()</code>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Shows the number of unread notifications in the stream.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>worldClockProvider()</code>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Will default to London or New York. Can be tapped to change the time
|
||||||
|
zone.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>appsProvider()</code>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Will show an "apps" icon at first, which can be tapped to choose an
|
||||||
|
app.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>nextEventProvider()</code>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
No
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Yes (but not a safe provider)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
The standard system "next event" provider. Tapping opens
|
||||||
|
the standard Agenda app.
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
<h2 id="exposing_data_to_complications">
|
<h2 id="exposing_data_to_complications">
|
||||||
Exposing Data to Complications
|
Exposing Data to Complications
|
||||||
</h2>
|
</h2>
|
||||||
@@ -203,6 +615,11 @@ page.image=/wear/preview/images/complications-main-image.png
|
|||||||
be used to send data back to the system.
|
be used to send data back to the system.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p class="note"><strong>Note:</strong> When you provide data as a
|
||||||
|
complication data provider, the watch face receives the raw values
|
||||||
|
you send so it can draw them on the watch face.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
In your app's manifest, declare the service and add an intent filter for
|
In your app's manifest, declare the service and add an intent filter for
|
||||||
the following:
|
the following:
|
||||||
@@ -210,7 +627,8 @@ page.image=/wear/preview/images/complications-main-image.png
|
|||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST
|
android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The service's manifest entry should also include an
|
The service's manifest entry should also include an
|
||||||
<code>android:icon</code> attribute. The provided icon should be a
|
<code>android:icon</code> attribute. The provided icon should be a
|
||||||
@@ -227,6 +645,21 @@ android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST
|
|||||||
<a href="#api_additions">API Additions</a>).
|
<a href="#api_additions">API Additions</a>).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Additionally, a permission for provider services ensures that only the Android Wear system
|
||||||
|
can bind to provider services. Only the Android Wear system can have this
|
||||||
|
permission.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Provider services should add the following to their service declarations
|
||||||
|
in the manifest:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER"
|
||||||
|
</pre>
|
||||||
|
|
||||||
<h3 id="update_period">
|
<h3 id="update_period">
|
||||||
Update period
|
Update period
|
||||||
</h3>
|
</h3>
|
||||||
@@ -371,6 +804,11 @@ METADATA_KEY_PROVIDER_CONFIG_ACTION
|
|||||||
<p>
|
<p>
|
||||||
The following table describes the types and fields of the
|
The following table describes the types and fields of the
|
||||||
<code>ComplicationData</code> object.
|
<code>ComplicationData</code> object.
|
||||||
|
If a watch face requests a field that is invalid for a complication type,
|
||||||
|
a default value for the field is returned.
|
||||||
|
For example, if a watch face tries to access a <code>Long text</code>
|
||||||
|
field in a <code>SHORT_TEXT</code> type, the default value for the
|
||||||
|
<code>Long text</code> field is returned.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
@@ -489,56 +927,80 @@ METADATA_KEY_PROVIDER_CONFIG_ACTION
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
In addition, the following two types have no fields. These two types may
|
In addition, the types in the table below are for empty data and
|
||||||
be sent for any complication slot and do not need to be included in a
|
may be sent for any complication slot. These types have no fields
|
||||||
list of supported types:
|
and do not need to be included in a
|
||||||
|
list of supported types. These types enable watch
|
||||||
|
faces to differentiate among the following three cases:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>No provider was chosen
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>The user has selected "empty" for a slot
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>A provider has no data to send
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Providers should not send <code>TYPE_EMPTY</code> in response to
|
||||||
|
update requests. Providers should send <code>TYPE_NO_DATA</code> instead.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Details on the complication types for "empty" data are in the
|
||||||
|
following table:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:175px">
|
<th>Complication type
|
||||||
Type
|
|
||||||
</th>
|
</th>
|
||||||
<th style="width:175px">
|
<th>Description
|
||||||
Required fields
|
|
||||||
</th>
|
|
||||||
<th style="width:175px">
|
|
||||||
Optional fields
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
Notes
|
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
NOT_CONFIGURED
|
<code>TYPE_NOT_CONFIGURED</code>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
None
|
Sent by the system when a complication is activated but the user has
|
||||||
</td>
|
not selected a provider, and no default was set.
|
||||||
<td>
|
<p>
|
||||||
None
|
Cannot be sent by providers.
|
||||||
</td>
|
</p>
|
||||||
<td>
|
|
||||||
Sent when a provider has not yet been chosen for a complication.
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
EMPTY
|
<code>TYPE_EMPTY</code>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
None
|
Sent by the system when a complication is activated and the user has
|
||||||
|
chosen "empty" instead of a provider, or when the watch face has
|
||||||
|
chosen no provider, and this type, as the default.
|
||||||
|
<p>
|
||||||
|
Cannot be sent by providers.
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>TYPE_NO_DATA</code>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
None
|
Sent by the system when a complication (that has a provider) is
|
||||||
</td>
|
activated, to clear the complication before actual data is received
|
||||||
<td>
|
from the provider.
|
||||||
Sent by a provider when there is no data to display in a
|
<p>
|
||||||
complication, or sent by the system when nothing should be shown in a
|
Should be sent by providers if they have no actual data to send.
|
||||||
complication.
|
</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -700,8 +1162,8 @@ METADATA_KEY_PROVIDER_CONFIG_ACTION
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The Complications API includes new classes in the Wearable Support
|
The Complications API includes new classes in the wearable support
|
||||||
Library. For more information, download the <a href=
|
library. For more information, download the <a href=
|
||||||
"{@docRoot}wear/preview/start.html#get_the_preview_reference_documentation">
|
"{@docRoot}wear/preview/start.html#get_the_preview_reference_documentation">
|
||||||
Android Wear 2.0 Preview Reference</a>.
|
Android Wear 2.0 Preview Reference</a>.
|
||||||
</p>
|
</p>
|
||||||
@@ -722,26 +1184,14 @@ METADATA_KEY_PROVIDER_CONFIG_ACTION
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<code>ComplicationText</code>
|
<code>ComplicationHelperActivity</code>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Used to supply text-based values in a
|
<li>Used to request the following permission: <br>
|
||||||
<code>ComplicationData</code> object
|
<code>com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA</code>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>Includes options for time-dependent values, whose text value
|
<li>Used instead of <code>ProviderChooserIntent</code>
|
||||||
depends on the current time
|
to start the chooser in almost all cases
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<code>ComplicationProviderService</code>
|
|
||||||
<ul>
|
|
||||||
<li>Extends <code>Service</code> and includes callback methods to
|
|
||||||
respond to the complication system
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>Callback methods are all called on the main thread
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -759,13 +1209,35 @@ METADATA_KEY_PROVIDER_CONFIG_ACTION
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<code>ProviderChooserIntent</code>
|
<code>ComplicationProviderService</code>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Non-instantiable utility class
|
<li>Extends <code>Service</code> and includes callback methods to
|
||||||
|
respond to the complication system
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>Includes a method that a watch face can call for starting a
|
<li>Callback methods are all called on the main thread
|
||||||
provider chooser (to allow a user to configure complications)
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<code>ComplicationText</code>
|
||||||
|
<ul>
|
||||||
|
<li>Used to supply text-based values in a
|
||||||
|
<code>ComplicationData</code> object
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>Includes options for time-dependent values, whose text value
|
||||||
|
depends on the current time
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<code>ProviderChooserIntent</code>
|
||||||
|
<ul>
|
||||||
|
<li>Non-instantiable utility class that is not commonly used; use
|
||||||
|
<code>ComplicationHelperActivity</code> instead
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -789,6 +1261,16 @@ METADATA_KEY_PROVIDER_CONFIG_ACTION
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<code>SystemProviders</code>
|
||||||
|
<ul>
|
||||||
|
<li>Lists system providers that are considered "safe",
|
||||||
|
because they only supply information that the watch face
|
||||||
|
already could obtain itself
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
Reference in New Issue
Block a user