diff options
| author | 2017-08-09 18:56:57 +0000 | |
|---|---|---|
| committer | 2017-08-09 18:56:57 +0000 | |
| commit | c7da241b3e083ea70bd21a8f279a93b1b53393b3 (patch) | |
| tree | 83cb5e567fcc296052fcb5067bccaec7f399ef67 | |
| parent | d27af8af624c85bccdbc7bd53e66f59cfd5ad623 (diff) | |
| parent | e8c3b91dc306dfae808b4baab395ee66302a6390 (diff) | |
Merge "Bluetooth: AdvertiseData parceling simplification"
| -rw-r--r-- | core/java/android/bluetooth/le/AdvertiseData.java | 51 |
1 files changed, 13 insertions, 38 deletions
diff --git a/core/java/android/bluetooth/le/AdvertiseData.java b/core/java/android/bluetooth/le/AdvertiseData.java index ff0db9aeb610..bde2d2f890f5 100644 --- a/core/java/android/bluetooth/le/AdvertiseData.java +++ b/core/java/android/bluetooth/le/AdvertiseData.java @@ -141,32 +141,18 @@ public final class AdvertiseData implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeList(mServiceUuids); + dest.writeTypedArray(mServiceUuids.toArray(new ParcelUuid[mServiceUuids.size()]), flags); // mManufacturerSpecificData could not be null. dest.writeInt(mManufacturerSpecificData.size()); for (int i = 0; i < mManufacturerSpecificData.size(); ++i) { dest.writeInt(mManufacturerSpecificData.keyAt(i)); - byte[] data = mManufacturerSpecificData.valueAt(i); - if (data == null) { - dest.writeInt(0); - } else { - dest.writeInt(1); - dest.writeInt(data.length); - dest.writeByteArray(data); - } + dest.writeByteArray(mManufacturerSpecificData.valueAt(i)); } dest.writeInt(mServiceData.size()); for (ParcelUuid uuid : mServiceData.keySet()) { - dest.writeParcelable(uuid, flags); - byte[] data = mServiceData.get(uuid); - if (data == null) { - dest.writeInt(0); - } else { - dest.writeInt(1); - dest.writeInt(data.length); - dest.writeByteArray(data); - } + dest.writeTypedObject(uuid, flags); + dest.writeByteArray(mServiceData.get(uuid)); } dest.writeByte((byte) (getIncludeTxPowerLevel() ? 1 : 0)); dest.writeByte((byte) (getIncludeDeviceName() ? 1 : 0)); @@ -182,33 +168,22 @@ public final class AdvertiseData implements Parcelable { @Override public AdvertiseData createFromParcel(Parcel in) { Builder builder = new Builder(); - @SuppressWarnings("unchecked") - List<ParcelUuid> uuids = in.readArrayList(ParcelUuid.class.getClassLoader()); - if (uuids != null) { - for (ParcelUuid uuid : uuids) { - builder.addServiceUuid(uuid); - } + ArrayList<ParcelUuid> uuids = in.createTypedArrayList(ParcelUuid.CREATOR); + for (ParcelUuid uuid : uuids) { + builder.addServiceUuid(uuid); } + int manufacturerSize = in.readInt(); for (int i = 0; i < manufacturerSize; ++i) { int manufacturerId = in.readInt(); - if (in.readInt() == 1) { - int manufacturerDataLength = in.readInt(); - byte[] manufacturerData = new byte[manufacturerDataLength]; - in.readByteArray(manufacturerData); - builder.addManufacturerData(manufacturerId, manufacturerData); - } + byte[] manufacturerData = in.createByteArray(); + builder.addManufacturerData(manufacturerId, manufacturerData); } int serviceDataSize = in.readInt(); for (int i = 0; i < serviceDataSize; ++i) { - ParcelUuid serviceDataUuid = in.readParcelable( - ParcelUuid.class.getClassLoader()); - if (in.readInt() == 1) { - int serviceDataLength = in.readInt(); - byte[] serviceData = new byte[serviceDataLength]; - in.readByteArray(serviceData); - builder.addServiceData(serviceDataUuid, serviceData); - } + ParcelUuid serviceDataUuid = in.readTypedObject(ParcelUuid.CREATOR); + byte[] serviceData = in.createByteArray(); + builder.addServiceData(serviceDataUuid, serviceData); } builder.setIncludeTxPowerLevel(in.readByte() == 1); builder.setIncludeDeviceName(in.readByte() == 1); |