am cc08c439: Merge "UsbAccessory: Add URI string, replace type string with description" into honeycomb-mr1
* commit 'cc08c439bc7b0afbdafc5ca18c584d2f7724f3df': UsbAccessory: Add URI string, replace type string with description
This commit is contained in:
@@ -94415,6 +94415,17 @@
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getDescription"
|
||||
return="java.lang.String"
|
||||
abstract="false"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getManufacturer"
|
||||
return="java.lang.String"
|
||||
abstract="false"
|
||||
@@ -94437,7 +94448,7 @@
|
||||
visibility="public"
|
||||
>
|
||||
</method>
|
||||
<method name="getType"
|
||||
<method name="getUri"
|
||||
return="java.lang.String"
|
||||
abstract="false"
|
||||
native="false"
|
||||
|
||||
@@ -30,18 +30,21 @@ public class UsbAccessory implements Parcelable {
|
||||
|
||||
private final String mManufacturer;
|
||||
private final String mModel;
|
||||
private final String mType;
|
||||
private final String mDescription;
|
||||
private final String mVersion;
|
||||
private final String mUri;
|
||||
|
||||
/**
|
||||
* UsbAccessory should only be instantiated by UsbService implementation
|
||||
* @hide
|
||||
*/
|
||||
public UsbAccessory(String manufacturer, String model, String type, String version) {
|
||||
public UsbAccessory(String manufacturer, String model, String description,
|
||||
String version, String uri) {
|
||||
mManufacturer = manufacturer;
|
||||
mModel = model;
|
||||
mType = type;
|
||||
mDescription = description;
|
||||
mVersion = version;
|
||||
mUri = uri;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,8 +54,9 @@ public class UsbAccessory implements Parcelable {
|
||||
public UsbAccessory(String[] strings) {
|
||||
mManufacturer = strings[0];
|
||||
mModel = strings[1];
|
||||
mType = strings[2];
|
||||
mDescription = strings[2];
|
||||
mVersion = strings[3];
|
||||
mUri = strings[4];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,12 +78,12 @@ public class UsbAccessory implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of the accessory.
|
||||
* Returns a user visible description of the accessory.
|
||||
*
|
||||
* @return the accessory type
|
||||
* @return the accessory description
|
||||
*/
|
||||
public String getType() {
|
||||
return mType;
|
||||
public String getDescription() {
|
||||
return mDescription;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -91,6 +95,17 @@ public class UsbAccessory implements Parcelable {
|
||||
return mVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the URI for the accessory.
|
||||
* This is an optional URI that might show information about the accessory
|
||||
* or provide the option to download an application for the accessory
|
||||
*
|
||||
* @return the accessory URI
|
||||
*/
|
||||
public String getUri() {
|
||||
return mUri;
|
||||
}
|
||||
|
||||
private static boolean compare(String s1, String s2) {
|
||||
if (s1 == null) return (s2 == null);
|
||||
return s1.equals(s2);
|
||||
@@ -102,8 +117,9 @@ public class UsbAccessory implements Parcelable {
|
||||
UsbAccessory accessory = (UsbAccessory)obj;
|
||||
return (compare(mManufacturer, accessory.getManufacturer()) &&
|
||||
compare(mModel, accessory.getModel()) &&
|
||||
compare(mType, accessory.getType()) &&
|
||||
compare(mVersion, accessory.getVersion()));
|
||||
compare(mDescription, accessory.getDescription()) &&
|
||||
compare(mVersion, accessory.getVersion()) &&
|
||||
compare(mUri, accessory.getUri()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -112,16 +128,18 @@ public class UsbAccessory implements Parcelable {
|
||||
public int hashCode() {
|
||||
return ((mManufacturer == null ? 0 : mManufacturer.hashCode()) ^
|
||||
(mModel == null ? 0 : mModel.hashCode()) ^
|
||||
(mType == null ? 0 : mType.hashCode()) ^
|
||||
(mVersion == null ? 0 : mVersion.hashCode()));
|
||||
(mDescription == null ? 0 : mDescription.hashCode()) ^
|
||||
(mVersion == null ? 0 : mVersion.hashCode()) ^
|
||||
(mUri == null ? 0 : mUri.hashCode()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UsbAccessory[mManufacturer=" + mManufacturer +
|
||||
", mModel=" + mModel +
|
||||
", mType=" + mType +
|
||||
", mVersion=" + mVersion + "]";
|
||||
", mDescription=" + mDescription +
|
||||
", mVersion=" + mVersion +
|
||||
", mUri=" + mUri + "]";
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<UsbAccessory> CREATOR =
|
||||
@@ -129,9 +147,10 @@ public class UsbAccessory implements Parcelable {
|
||||
public UsbAccessory createFromParcel(Parcel in) {
|
||||
String manufacturer = in.readString();
|
||||
String model = in.readString();
|
||||
String type = in.readString();
|
||||
String description = in.readString();
|
||||
String version = in.readString();
|
||||
return new UsbAccessory(manufacturer, model, type, version);
|
||||
String uri = in.readString();
|
||||
return new UsbAccessory(manufacturer, model, description, version, uri);
|
||||
}
|
||||
|
||||
public UsbAccessory[] newArray(int size) {
|
||||
@@ -146,7 +165,8 @@ public class UsbAccessory implements Parcelable {
|
||||
public void writeToParcel(Parcel parcel, int flags) {
|
||||
parcel.writeString(mManufacturer);
|
||||
parcel.writeString(mModel);
|
||||
parcel.writeString(mType);
|
||||
parcel.writeString(mDescription);
|
||||
parcel.writeString(mVersion);
|
||||
parcel.writeString(mUri);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,14 +23,16 @@ public final class UsbAccessory {
|
||||
|
||||
private final String mManufacturer;
|
||||
private final String mModel;
|
||||
private final String mType;
|
||||
private final String mDescription;
|
||||
private final String mVersion;
|
||||
private final String mUri;
|
||||
|
||||
/* package */ UsbAccessory(android.hardware.usb.UsbAccessory accessory) {
|
||||
mManufacturer = accessory.getManufacturer();
|
||||
mModel = accessory.getModel();
|
||||
mType = accessory.getType();
|
||||
mDescription = accessory.getDescription();
|
||||
mVersion = accessory.getVersion();
|
||||
mUri = accessory.getUri();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -52,12 +54,12 @@ public final class UsbAccessory {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of the accessory.
|
||||
* Returns a user visible description of the accessory.
|
||||
*
|
||||
* @return the accessory type
|
||||
* @return the accessory description
|
||||
*/
|
||||
public String getType() {
|
||||
return mType;
|
||||
public String getDescription() {
|
||||
return mDescription;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,6 +71,17 @@ public final class UsbAccessory {
|
||||
return mVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the URI for the accessory.
|
||||
* This is an optional URI that might show information about the accessory
|
||||
* or provide the option to download an application for the accessory
|
||||
*
|
||||
* @return the accessory URI
|
||||
*/
|
||||
public String getUri() {
|
||||
return mUri;
|
||||
}
|
||||
|
||||
private static boolean compare(String s1, String s2) {
|
||||
if (s1 == null) return (s2 == null);
|
||||
return s1.equals(s2);
|
||||
@@ -80,17 +93,28 @@ public final class UsbAccessory {
|
||||
UsbAccessory accessory = (UsbAccessory)obj;
|
||||
return (compare(mManufacturer, accessory.getManufacturer()) &&
|
||||
compare(mModel, accessory.getModel()) &&
|
||||
compare(mType, accessory.getType()) &&
|
||||
compare(mVersion, accessory.getVersion()));
|
||||
compare(mDescription, accessory.getDescription()) &&
|
||||
compare(mVersion, accessory.getVersion()) &&
|
||||
compare(mUri, accessory.getUri()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return ((mManufacturer == null ? 0 : mManufacturer.hashCode()) ^
|
||||
(mModel == null ? 0 : mModel.hashCode()) ^
|
||||
(mDescription == null ? 0 : mDescription.hashCode()) ^
|
||||
(mVersion == null ? 0 : mVersion.hashCode()) ^
|
||||
(mUri == null ? 0 : mUri.hashCode()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UsbAccessory[mManufacturer=" + mManufacturer +
|
||||
", mModel=" + mModel +
|
||||
", mType=" + mType +
|
||||
", mVersion=" + mVersion + "]";
|
||||
", mDescription=" + mDescription +
|
||||
", mVersion=" + mVersion +
|
||||
", mUri=" + mUri + "]";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ public class UsbManager {
|
||||
try {
|
||||
return mService.openAccessory(new android.hardware.usb.UsbAccessory(
|
||||
accessory.getManufacturer(),accessory.getModel(),
|
||||
accessory.getType(), accessory.getVersion()));
|
||||
accessory.getDescription(), accessory.getVersion(), accessory.getUri()));
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException in openAccessory" , e);
|
||||
return null;
|
||||
@@ -149,8 +149,8 @@ public class UsbManager {
|
||||
public boolean hasPermission(UsbAccessory accessory) {
|
||||
try {
|
||||
return mService.hasAccessoryPermission(new android.hardware.usb.UsbAccessory(
|
||||
accessory.getManufacturer(),accessory.getModel(),
|
||||
accessory.getType(), accessory.getVersion()));
|
||||
accessory.getManufacturer(),accessory.getModel(),
|
||||
accessory.getDescription(), accessory.getVersion(), accessory.getUri()));
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException in hasPermission", e);
|
||||
return false;
|
||||
@@ -173,8 +173,8 @@ public class UsbManager {
|
||||
public void requestPermission(UsbAccessory accessory, PendingIntent pi) {
|
||||
try {
|
||||
mService.requestAccessoryPermission(new android.hardware.usb.UsbAccessory(
|
||||
accessory.getManufacturer(),accessory.getModel(),
|
||||
accessory.getType(), accessory.getVersion()),
|
||||
accessory.getManufacturer(),accessory.getModel(),
|
||||
accessory.getDescription(), accessory.getVersion(), accessory.getUri()),
|
||||
mContext.getPackageName(), pi);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException in requestPermission", e);
|
||||
|
||||
@@ -133,10 +133,19 @@ static int usb_device_added(const char *devname, void* client_data) {
|
||||
} else {
|
||||
printf("Found possible android device - attempting to switch to accessory mode\n");
|
||||
|
||||
uint16_t protocol;
|
||||
ret = usb_device_control_transfer(device, USB_DIR_IN | USB_TYPE_VENDOR,
|
||||
ACCESSORY_GET_PROTOCOL, 0, 0, &protocol, sizeof(protocol), 0);
|
||||
if (ret == 2)
|
||||
printf("device supports protocol version %d\n", protocol);
|
||||
else
|
||||
fprintf(stderr, "failed to read protocol version\n");
|
||||
|
||||
send_string(device, ACCESSORY_STRING_MANUFACTURER, "Google, Inc.");
|
||||
send_string(device, ACCESSORY_STRING_MODEL, "AccessoryChat");
|
||||
send_string(device, ACCESSORY_STRING_TYPE, "Sample Program");
|
||||
send_string(device, ACCESSORY_STRING_DESCRIPTION, "Sample Program");
|
||||
send_string(device, ACCESSORY_STRING_VERSION, "1.0");
|
||||
send_string(device, ACCESSORY_STRING_URI, "http://www.android.com");
|
||||
|
||||
ret = usb_device_control_transfer(device, USB_DIR_OUT | USB_TYPE_VENDOR,
|
||||
ACCESSORY_START, 0, 0, 0, 0, 0);
|
||||
|
||||
@@ -236,22 +236,18 @@ class UsbDeviceSettingsManager {
|
||||
public final String mManufacturer;
|
||||
// USB accessory model (or null for unspecified)
|
||||
public final String mModel;
|
||||
// USB accessory type (or null for unspecified)
|
||||
public final String mType;
|
||||
// USB accessory version (or null for unspecified)
|
||||
public final String mVersion;
|
||||
|
||||
public AccessoryFilter(String manufacturer, String model, String type, String version) {
|
||||
public AccessoryFilter(String manufacturer, String model, String version) {
|
||||
mManufacturer = manufacturer;
|
||||
mModel = model;
|
||||
mType = type;
|
||||
mVersion = version;
|
||||
}
|
||||
|
||||
public AccessoryFilter(UsbAccessory accessory) {
|
||||
mManufacturer = accessory.getManufacturer();
|
||||
mModel = accessory.getModel();
|
||||
mType = accessory.getType();
|
||||
mVersion = accessory.getVersion();
|
||||
}
|
||||
|
||||
@@ -259,7 +255,6 @@ class UsbDeviceSettingsManager {
|
||||
throws XmlPullParserException, IOException {
|
||||
String manufacturer = null;
|
||||
String model = null;
|
||||
String type = null;
|
||||
String version = null;
|
||||
|
||||
int count = parser.getAttributeCount();
|
||||
@@ -271,13 +266,11 @@ class UsbDeviceSettingsManager {
|
||||
manufacturer = value;
|
||||
} else if ("model".equals(name)) {
|
||||
model = value;
|
||||
} else if ("type".equals(name)) {
|
||||
type = value;
|
||||
} else if ("version".equals(name)) {
|
||||
version = value;
|
||||
}
|
||||
}
|
||||
return new AccessoryFilter(manufacturer, model, type, version);
|
||||
return new AccessoryFilter(manufacturer, model, version);
|
||||
}
|
||||
|
||||
public void write(XmlSerializer serializer)throws IOException {
|
||||
@@ -288,9 +281,6 @@ class UsbDeviceSettingsManager {
|
||||
if (mModel != null) {
|
||||
serializer.attribute(null, "model", mModel);
|
||||
}
|
||||
if (mType != null) {
|
||||
serializer.attribute(null, "type", mType);
|
||||
}
|
||||
if (mVersion != null) {
|
||||
serializer.attribute(null, "version", mVersion);
|
||||
}
|
||||
@@ -300,7 +290,6 @@ class UsbDeviceSettingsManager {
|
||||
public boolean matches(UsbAccessory acc) {
|
||||
if (mManufacturer != null && !acc.getManufacturer().equals(mManufacturer)) return false;
|
||||
if (mModel != null && !acc.getModel().equals(mModel)) return false;
|
||||
if (mType != null && !acc.getType().equals(mType)) return false;
|
||||
if (mVersion != null && !acc.getVersion().equals(mVersion)) return false;
|
||||
return true;
|
||||
}
|
||||
@@ -308,21 +297,19 @@ class UsbDeviceSettingsManager {
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
// can't compare if we have wildcard strings
|
||||
if (mManufacturer == null || mModel == null || mType == null || mVersion == null) {
|
||||
if (mManufacturer == null || mModel == null || mVersion == null) {
|
||||
return false;
|
||||
}
|
||||
if (obj instanceof AccessoryFilter) {
|
||||
AccessoryFilter filter = (AccessoryFilter)obj;
|
||||
return (mManufacturer.equals(filter.mManufacturer) &&
|
||||
mModel.equals(filter.mModel) &&
|
||||
mType.equals(filter.mType) &&
|
||||
mVersion.equals(filter.mVersion));
|
||||
}
|
||||
if (obj instanceof UsbAccessory) {
|
||||
UsbAccessory accessory = (UsbAccessory)obj;
|
||||
return (mManufacturer.equals(accessory.getManufacturer()) &&
|
||||
mModel.equals(accessory.getModel()) &&
|
||||
mType.equals(accessory.getType()) &&
|
||||
mVersion.equals(accessory.getVersion()));
|
||||
}
|
||||
return false;
|
||||
@@ -332,7 +319,6 @@ class UsbDeviceSettingsManager {
|
||||
public int hashCode() {
|
||||
return ((mManufacturer == null ? 0 : mManufacturer.hashCode()) ^
|
||||
(mModel == null ? 0 : mModel.hashCode()) ^
|
||||
(mType == null ? 0 : mType.hashCode()) ^
|
||||
(mVersion == null ? 0 : mVersion.hashCode()));
|
||||
}
|
||||
|
||||
@@ -340,7 +326,6 @@ class UsbDeviceSettingsManager {
|
||||
public String toString() {
|
||||
return "AccessoryFilter[mManufacturer=\"" + mManufacturer +
|
||||
"\", mModel=\"" + mModel +
|
||||
"\", mType=\"" + mType +
|
||||
"\", mVersion=\"" + mVersion + "\"]";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,12 +193,13 @@ static jobjectArray android_server_UsbService_getAccessoryStrings(JNIEnv *env, j
|
||||
return NULL;
|
||||
}
|
||||
jclass stringClass = env->FindClass("java/lang/String");
|
||||
jobjectArray strArray = env->NewObjectArray(4, stringClass, NULL);
|
||||
jobjectArray strArray = env->NewObjectArray(5, stringClass, NULL);
|
||||
if (!strArray) goto out;
|
||||
set_accessory_string(env, fd, ACCESSORY_GET_STRING_MANUFACTURER, strArray, 0);
|
||||
set_accessory_string(env, fd, ACCESSORY_GET_STRING_MODEL, strArray, 1);
|
||||
set_accessory_string(env, fd, ACCESSORY_GET_STRING_TYPE, strArray, 2);
|
||||
set_accessory_string(env, fd, ACCESSORY_GET_STRING_DESCRIPTION, strArray, 2);
|
||||
set_accessory_string(env, fd, ACCESSORY_GET_STRING_VERSION, strArray, 3);
|
||||
set_accessory_string(env, fd, ACCESSORY_GET_STRING_URI, strArray, 4);
|
||||
|
||||
out:
|
||||
close(fd);
|
||||
|
||||
Reference in New Issue
Block a user