Exposes an API for components to read or write {@linkplain DataItem data items} and {@linkplain Asset assets}.
A DataItem
is synchronized across all devices in an Android Wear network. It is
possible to set data items while not connected to any nodes. Those data items will be
synchronized when the nodes eventually come online.
Data items are private to the application that created them, and are only accessible by that application on other nodes. They should generally be small in size, relying on {@linkplain Asset assets} for the transfer of larger, more persistent data objects such as images.
DataItem URI format
Each data item is identified by a URI, accessible withgetUri()
, that
indicates the item's creator and path. Fully specified URIs follow the following format:
wear://<node_id>/<path>where <node_id> is the
node ID
of the wearable node that created
the data item, and <path> is an application-defined path. This means that given a
data item's URI, calling getHost()
will return the creator's node ID.
Some methods, such as getDataItems(GoogleApiClient, Uri)
and
addListener(GoogleApiClient, DataListener, Uri, int)
, support wildcard node IDs
to match data items with the same path or path prefix created by multiple nodes.
A wildcard data item URI has the following format:
wear://*/<path>See method documentation for details.
Concurrency
Concurrent modification of data items from different nodes may result in inconsistent results. It is recommended that apps are built with some concept of ownership of data items. Two common patterns are:- Creator owns data items: Data items may be updated only by the original creator node.
- Producer-consumer: One node is responsible for creating a data item, and a second node is responsible for deleting it, once it has been processed. Data items should have unique IDs when using this pattern, and data items should not be modified once created.
Nested Class Summary
interface | DataApi.DataItemResult | Contains a single data item. | |
interface | DataApi.DataListener | Used with addListener(GoogleApiClient, DataApi.DataListener) to receive data events. |
|
interface | DataApi.DeleteDataItemsResult | Contains the number of deleted items. | |
@interface | DataApi.FilterType | ||
interface | DataApi.GetFdForAssetResult | Contains a file descriptor for the requested asset. |
Constant Summary
String | ACTION_DATA_CHANGED | Data changed action for use in manifest-based listener filters. |
int | FILTER_LITERAL | Filter type for
getDataItems(GoogleApiClient, Uri, int) ,
deleteDataItems(GoogleApiClient, Uri, int) :
addListener(GoogleApiClient, DataListener, Uri, int) :
if this filter is set, the given URI will be taken as a literal path, and the operation
will apply to the matching item only. |
int | FILTER_PREFIX | Filter type for
getDataItems(GoogleApiClient, Uri, int) ,
deleteDataItems(GoogleApiClient, Uri, int) :
addListener(GoogleApiClient, DataListener, Uri, int) :
if this filter is set, the given URI will be taken as a path prefix, and the operation
will apply to all matching items. |
Public Method Summary
abstract PendingResult<Status> |
addListener(GoogleApiClient client, DataApi.DataListener listener)
Registers a listener to receive data item changed and deleted events.
|
abstract PendingResult<Status> |
addListener(GoogleApiClient client, DataApi.DataListener listener, Uri uri, int filterType)
Registers a listener to receive data item changed and deleted events.
|
abstract PendingResult<DataApi.DeleteDataItemsResult> |
deleteDataItems(GoogleApiClient client, Uri uri, int filterType)
Removes all specified
data items from the Android Wear network. |
abstract PendingResult<DataApi.DeleteDataItemsResult> |
deleteDataItems(GoogleApiClient client, Uri uri)
Removes all specified
data items from the Android Wear network. |
abstract PendingResult<DataApi.DataItemResult> |
getDataItem(GoogleApiClient client, Uri uri)
Retrieves a single
DataItem from the Android Wear network. |
abstract PendingResult<DataItemBuffer> |
getDataItems(GoogleApiClient client, Uri uri, int filterType)
Retrieves all
data items matching the provided URI and filter type, from
the Android Wear network. |
abstract PendingResult<DataItemBuffer> | |
abstract PendingResult<DataItemBuffer> |
getDataItems(GoogleApiClient client, Uri uri)
Retrieves all
data items matching the provided URI, from the Android Wear
network. |
abstract PendingResult<DataApi.GetFdForAssetResult> |
getFdForAsset(GoogleApiClient client, Asset asset)
Retrieves a
ParcelFileDescriptor pointing at the bytes of an asset. |
abstract PendingResult<DataApi.GetFdForAssetResult> |
getFdForAsset(GoogleApiClient client, DataItemAsset asset)
Retrieves a
ParcelFileDescriptor pointing at the bytes of an asset. |
abstract PendingResult<DataApi.DataItemResult> |
putDataItem(GoogleApiClient client, PutDataRequest request)
Adds a
DataItem to the Android Wear network. |
abstract PendingResult<Status> |
removeListener(GoogleApiClient client, DataApi.DataListener listener)
Removes a data listener which was previously added through
addListener(GoogleApiClient, DataListener) . |
Constants
public static final String ACTION_DATA_CHANGED
Data changed action for use in manifest-based listener filters.
See Also
public static final int FILTER_LITERAL
Filter type for
getDataItems(GoogleApiClient, Uri, int)
,
deleteDataItems(GoogleApiClient, Uri, int)
:
addListener(GoogleApiClient, DataListener, Uri, int)
:
if this filter is set, the given URI will be taken as a literal path, and the operation
will apply to the matching item only.
public static final int FILTER_PREFIX
Filter type for
getDataItems(GoogleApiClient, Uri, int)
,
deleteDataItems(GoogleApiClient, Uri, int)
:
addListener(GoogleApiClient, DataListener, Uri, int)
:
if this filter is set, the given URI will be taken as a path prefix, and the operation
will apply to all matching items.
Public Methods
public abstract PendingResult<Status> addListener (GoogleApiClient client, DataApi.DataListener listener)
Registers a listener to receive data item changed and deleted events. This call should be
balanced with a call to removeListener(GoogleApiClient, DataListener)
, to avoid
leaking resources.
Listener events will be called on the main thread, or the handler specified on
client
when it was built (using setHandler(Handler)
).
public abstract PendingResult<Status> addListener (GoogleApiClient client, DataApi.DataListener listener, Uri uri, int filterType)
Registers a listener to receive data item changed and deleted events. This call should be
balanced with a call to removeListener(GoogleApiClient, DataListener)
, to avoid
leaking resources.
uri
and filterType
can be used to filter the data item changes sent
to the listener. For example, if uri
and filterType
create a path prefix
filter, then only items matching that prefix will be notified. The uri
follows the
rules of the
<data> element of <intent-filter>. The path is ignored if a URI host is
not specified. The host should be an Android Wear node ID, or * to match any node. i.e, you
should use:
wear://*/<path>or
wear://<nodeId>/<path>
Listener events will be called on the main thread, or the handler specified on
client
when it was built (using setHandler(Handler)
).
public abstract PendingResult<DataApi.DeleteDataItemsResult> deleteDataItems (GoogleApiClient client, Uri uri, int filterType)
Removes all specified data items
from the Android Wear network.
If uri
is fully specified, this method will delete at
most one data item. If uri
contains a wildcard host, multiple data items may be
deleted, since different nodes may create data items with the same path. See
DataApi
for details of the URI format.
The filterType
parameter changes the interpretation of uri
.
For example, if uri
represents a path prefix, all items matching that
prefix will be deleted.
public abstract PendingResult<DataApi.DeleteDataItemsResult> deleteDataItems (GoogleApiClient client, Uri uri)
Removes all specified data items
from the Android Wear network.
If uri
is fully specified, this method will delete at
most one data item. If uri
contains a wildcard host, multiple data items may be
deleted, since different nodes may create data items with the same path. See
DataApi
for details of the URI format.
public abstract PendingResult<DataApi.DataItemResult> getDataItem (GoogleApiClient client, Uri uri)
public abstract PendingResult<DataItemBuffer> getDataItems (GoogleApiClient client, Uri uri, int filterType)
Retrieves all data items
matching the provided URI and filter type, from
the Android Wear network.
The URI must contain a path. If uri
is fully specified, at most one data item
will be returned. If uri
contains a wildcard host, multiple data items may be
returned, since different nodes may create data items with the same path. See DataApi
for details of the URI format.
Callers must call release()
on the returned buffer when finished
processing results.
The filterType
parameter changes the interpretation of uri
.
For example, if uri
represents a path prefix, all items matching that prefix
will be returned.
public abstract PendingResult<DataItemBuffer> getDataItems (GoogleApiClient client)
Retrieves all data items
from the Android Wear network.
Callers must call release()
on the returned buffer when finished
processing results.
public abstract PendingResult<DataItemBuffer> getDataItems (GoogleApiClient client, Uri uri)
Retrieves all data items
matching the provided URI, from the Android Wear
network.
The URI must contain a path. If uri
is fully specified, at most one data item
will be returned. If uri
contains a wildcard host, multiple data items may be
returned, since different nodes may create data items with the same path. See DataApi
for details of the URI format.
Callers must call release()
on the returned buffer when finished
processing results.
public abstract PendingResult<DataApi.GetFdForAssetResult> getFdForAsset (GoogleApiClient client, Asset asset)
Retrieves a ParcelFileDescriptor
pointing at the bytes of an asset. Only assets
previously stored in a DataItem
may be retrieved.
public abstract PendingResult<DataApi.GetFdForAssetResult> getFdForAsset (GoogleApiClient client, DataItemAsset asset)
Retrieves a ParcelFileDescriptor
pointing at the bytes of an asset. Only assets
previously stored in a DataItem
may be retrieved.
public abstract PendingResult<DataApi.DataItemResult> putDataItem (GoogleApiClient client, PutDataRequest request)
Adds a DataItem
to the Android Wear network. The updated item is synchronized across
all devices.
public abstract PendingResult<Status> removeListener (GoogleApiClient client, DataApi.DataListener listener)
Removes a data listener which was previously added through
addListener(GoogleApiClient, DataListener)
.