mirror of
https://github.com/moparisthebest/android_external_GmsApi
synced 2024-11-27 11:02:18 -05:00
Add some wearable APIs
This commit is contained in:
parent
b852fefd86
commit
704199355e
@ -24,16 +24,23 @@ public class DataHolder extends AutoSafeParcelable {
|
|||||||
private int versionCode = 1;
|
private int versionCode = 1;
|
||||||
|
|
||||||
@SafeParceled(1)
|
@SafeParceled(1)
|
||||||
private String[] columns;
|
public final String[] columns;
|
||||||
|
|
||||||
@SafeParceled(2)
|
@SafeParceled(2)
|
||||||
private CursorWindow[] windows;
|
public final CursorWindow[] windows;
|
||||||
|
|
||||||
@SafeParceled(3)
|
@SafeParceled(3)
|
||||||
private int statusCode;
|
public final int statusCode;
|
||||||
|
|
||||||
@SafeParceled(4)
|
@SafeParceled(4)
|
||||||
private Bundle metadata;
|
public final Bundle metadata;
|
||||||
|
|
||||||
|
private DataHolder() {
|
||||||
|
columns = null;
|
||||||
|
windows = null;
|
||||||
|
statusCode = 0;
|
||||||
|
metadata = null;
|
||||||
|
}
|
||||||
|
|
||||||
public DataHolder(String[] columns, CursorWindow[] windows, int statusCode, Bundle metadata) {
|
public DataHolder(String[] columns, CursorWindow[] windows, int statusCode, Bundle metadata) {
|
||||||
this.columns = columns;
|
this.columns = columns;
|
||||||
@ -48,13 +55,14 @@ public class DataHolder extends AutoSafeParcelable {
|
|||||||
protected static final int FIELD_TYPE_NULL = 0;
|
protected static final int FIELD_TYPE_NULL = 0;
|
||||||
protected static final int FIELD_TYPE_STRING = 3;
|
protected static final int FIELD_TYPE_STRING = 3;
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
static int getCursorType(Cursor cursor, int i) {
|
static int getCursorType(Cursor cursor, int i) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||||
return cursor.getType(i);
|
return cursor.getType(i);
|
||||||
}
|
}
|
||||||
if (cursor instanceof AbstractWindowedCursor) {
|
if (cursor instanceof AbstractWindowedCursor) {
|
||||||
CursorWindow cursorWindow = ((AbstractWindowedCursor)cursor).getWindow();
|
CursorWindow cursorWindow = ((AbstractWindowedCursor) cursor).getWindow();
|
||||||
int pos = cursor.getPosition();
|
int pos = cursor.getPosition();
|
||||||
int type = -1;
|
int type = -1;
|
||||||
if (cursorWindow.isNull(pos, i)) {
|
if (cursorWindow.isNull(pos, i)) {
|
||||||
@ -113,6 +121,17 @@ public class DataHolder extends AutoSafeParcelable {
|
|||||||
return dataHolder;
|
return dataHolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int getCount() {
|
||||||
|
int c = 0;
|
||||||
|
if (windows != null) {
|
||||||
|
for (CursorWindow window : windows) {
|
||||||
|
c += window.getNumRows();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "DataHolder{" +
|
return "DataHolder{" +
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013-2015 µg Project Team
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.google.android.gms.common.data;
|
||||||
|
|
||||||
|
public interface Freezable<T> {
|
||||||
|
/**
|
||||||
|
* Freeze a volatile representation into an immutable representation. Objects returned from
|
||||||
|
* this call are safe to cache.
|
||||||
|
* <p/>
|
||||||
|
* Note that the output of {@link #freeze} may not be identical to the parent object, but
|
||||||
|
* should be equal.
|
||||||
|
*
|
||||||
|
* @return A concrete implementation of the data object.
|
||||||
|
*/
|
||||||
|
T freeze();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check to see if this object is valid for use. If the object is still volatile, this method
|
||||||
|
* will indicate whether or not the object can be safely used.
|
||||||
|
* The output of a call to {@link #freeze()} will always be valid.
|
||||||
|
*
|
||||||
|
* @return whether or not the object is valid for use.
|
||||||
|
*/
|
||||||
|
boolean isDataValid();
|
||||||
|
}
|
@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013-2015 µg Project Team
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.google.android.gms.wearable;
|
||||||
|
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.ParcelFileDescriptor;
|
||||||
|
|
||||||
|
import org.microg.gms.common.PublicApi;
|
||||||
|
import org.microg.safeparcel.AutoSafeParcelable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An asset is a binary blob shared between data items that is replicated across the wearable
|
||||||
|
* network on demand.
|
||||||
|
* <p/>
|
||||||
|
* It may represent an asset not yet added with the Android Wear network. DataItemAssets
|
||||||
|
* are representations of an asset after it has been added to the network through a
|
||||||
|
* {@link PutDataRequest}.
|
||||||
|
*/
|
||||||
|
@PublicApi
|
||||||
|
public class Asset extends AutoSafeParcelable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an Asset using a byte array.
|
||||||
|
*/
|
||||||
|
public static Asset createFromBytes(byte[] assetData) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an Asset using a file descriptor. The FD should be closed after being successfully
|
||||||
|
* sent in a putDataItem request.
|
||||||
|
*/
|
||||||
|
public static Asset createFromFd(ParcelFileDescriptor fd) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an Asset using an existing Asset's digest.
|
||||||
|
*/
|
||||||
|
public static Asset createFromRef(String digest) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an Asset using a content URI. Google Play services must have permission to read this
|
||||||
|
* Uri.
|
||||||
|
*/
|
||||||
|
public static Asset createFromUri(Uri uri) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the digest associated with the asset data. A digest is a content identifier used to
|
||||||
|
* identify the asset across devices.
|
||||||
|
*/
|
||||||
|
public String getDigest() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the file descriptor referencing the asset.
|
||||||
|
*/
|
||||||
|
public ParcelFileDescriptor getFd() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the uri referencing the asset data.
|
||||||
|
*/
|
||||||
|
public Uri getUri() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Creator<Asset> CREATOR = new AutoCreator<>(Asset.class);
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013-2015 µg Project Team
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.google.android.gms.wearable;
|
||||||
|
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
|
import com.google.android.gms.common.data.Freezable;
|
||||||
|
|
||||||
|
import org.microg.gms.common.PublicApi;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The base object of data stored in the Android Wear network. {@link DataItem} are replicated
|
||||||
|
* across all devices in the network. It contains a small blob of data and associated assets.
|
||||||
|
* <p/>
|
||||||
|
* A {@link DataItem} is identified by its Uri, which contains its creator and a path.
|
||||||
|
*/
|
||||||
|
@PublicApi
|
||||||
|
public interface DataItem extends Freezable<DataItem> {
|
||||||
|
/**
|
||||||
|
* A map of assets associated with this data item.
|
||||||
|
*/
|
||||||
|
Map<String, DataItemAsset> getAssets();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An array of data stored at the specified {@link Uri}.
|
||||||
|
*/
|
||||||
|
byte[] getData();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the DataItem's Uri. {@link Uri#getHost()} returns the id of the node that created it.
|
||||||
|
*/
|
||||||
|
Uri getUri();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the data in a data item.
|
||||||
|
* <p/>
|
||||||
|
* The current maximum data item size limit is approximately 100k. Data items should generally be much smaller than this limit.
|
||||||
|
*/
|
||||||
|
DataItem setData(byte[] data);
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013-2015 µg Project Team
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.google.android.gms.wearable;
|
||||||
|
|
||||||
|
import com.google.android.gms.common.data.Freezable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A reference to an asset stored in a data item. Used to fetch file descriptors using
|
||||||
|
* DataApi#getFdForAsset(GoogleApiClient, DataItemAsset).
|
||||||
|
*/
|
||||||
|
public interface DataItemAsset extends Freezable<DataItemAsset> {
|
||||||
|
/**
|
||||||
|
* @return the identifier used to address this asset in the context of an existing
|
||||||
|
* {@link DataItem}.
|
||||||
|
*/
|
||||||
|
String getDataItemKey();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the Android Wear-wide unique identifier for a particular asset.
|
||||||
|
*/
|
||||||
|
String getId();
|
||||||
|
}
|
@ -27,10 +27,10 @@ public interface Node {
|
|||||||
* Returns a human readable description of the node. Sometimes generated from the Bluetooth
|
* Returns a human readable description of the node. Sometimes generated from the Bluetooth
|
||||||
* device name
|
* device name
|
||||||
*/
|
*/
|
||||||
public abstract String getDisplayName();
|
String getDisplayName();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an opaque string that represents a node in the Android Wear network.
|
* Returns an opaque string that represents a node in the Android Wear network.
|
||||||
*/
|
*/
|
||||||
public abstract String getId();
|
String getId();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013-2015 µg Project Team
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.google.android.gms.wearable;
|
||||||
|
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
|
import org.microg.gms.common.PublicApi;
|
||||||
|
import org.microg.safeparcel.AutoSafeParcelable;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link PutDataRequest} is used to create new data items in the Android Wear network.
|
||||||
|
*/
|
||||||
|
@PublicApi
|
||||||
|
public class PutDataRequest extends AutoSafeParcelable {
|
||||||
|
public static final String WEAR_URI_SCHEME = "wear";
|
||||||
|
|
||||||
|
private DataItem dataItem;
|
||||||
|
|
||||||
|
private PutDataRequest(DataItem dataItem) {
|
||||||
|
this.dataItem = dataItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PutDataRequest create(String path) {
|
||||||
|
// TODO
|
||||||
|
return new PutDataRequest(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PutDataRequest createFromDataItem(DataItem source) {
|
||||||
|
return new PutDataRequest(source);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PutDataRequest createWithAutoAppendedId(String pathPrefix) {
|
||||||
|
return new PutDataRequest(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Asset getAsset(String key) {
|
||||||
|
// TODO
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Asset> getAssets() {
|
||||||
|
// TODO
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] getData() {
|
||||||
|
return dataItem.getData();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Uri getUri() {
|
||||||
|
return dataItem.getUri();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasAsset(String key) {
|
||||||
|
return dataItem.getAssets().containsKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PutDataRequest putAsset(String key, Asset value) {
|
||||||
|
// TODO
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PutDataRequest removeAsset(String key) {
|
||||||
|
// TODO
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PutDataRequest setData(byte[] data) {
|
||||||
|
// TODO
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return toString(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString(boolean verbose) {
|
||||||
|
return "PutDataRequest{data=" + dataItem + "}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Creator<PutDataRequest> CREATOR = new AutoCreator<>(PutDataRequest.class);
|
||||||
|
}
|
@ -39,8 +39,10 @@ public @interface PublicApi {
|
|||||||
String until() default "latest";
|
String until() default "latest";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return used on a method or field to exclude it from the public api if the corresponding
|
* Used on a method or field to exclude it from the public api if the corresponding class was
|
||||||
* class was marked as public api
|
* marked as public api.
|
||||||
|
*
|
||||||
|
* @return true if the method or field is not part of the public api
|
||||||
*/
|
*/
|
||||||
boolean exclude() default false;
|
boolean exclude() default false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user