Fix divergent equals and hashCode behavior

Calling Objects.hash with a byte[] will call the identity hashCode on
the byte[] and this doesn't agree with the use of Objects.deepEquals
in equals.
Bug caught by error prone.

Also, replaced usage of Objects.deepEquals(mServiceDataUuid, ...) with
Objects.equals(mServiceDataUuid, ...), because mServiceDataUuid
is an Object of type ParcelUuid.

Bug: 28585195
Change-Id: Id92734874339985fedafe1a28286a6a4dcd88d3b
diff --git a/core/java/android/bluetooth/le/ScanFilter.java b/core/java/android/bluetooth/le/ScanFilter.java
index 92a3817..17a802d 100644
--- a/core/java/android/bluetooth/le/ScanFilter.java
+++ b/core/java/android/bluetooth/le/ScanFilter.java
@@ -385,9 +385,13 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(mDeviceName, mDeviceAddress, mManufacturerId, mManufacturerData,
-                mManufacturerDataMask, mServiceDataUuid, mServiceData, mServiceDataMask,
-                mServiceUuid, mServiceUuidMask);
+        return Objects.hash(mDeviceName, mDeviceAddress, mManufacturerId,
+                            Arrays.hashCode(mManufacturerData),
+                            Arrays.hashCode(mManufacturerDataMask),
+                            mServiceDataUuid,
+                            Arrays.hashCode(mServiceData),
+                            Arrays.hashCode(mServiceDataMask),
+                            mServiceUuid, mServiceUuidMask);
     }
 
     @Override
@@ -401,10 +405,10 @@
         ScanFilter other = (ScanFilter) obj;
         return Objects.equals(mDeviceName, other.mDeviceName) &&
                 Objects.equals(mDeviceAddress, other.mDeviceAddress) &&
-                        mManufacturerId == other.mManufacturerId &&
+                mManufacturerId == other.mManufacturerId &&
                 Objects.deepEquals(mManufacturerData, other.mManufacturerData) &&
                 Objects.deepEquals(mManufacturerDataMask, other.mManufacturerDataMask) &&
-                Objects.deepEquals(mServiceDataUuid, other.mServiceDataUuid) &&
+                Objects.equals(mServiceDataUuid, other.mServiceDataUuid) &&
                 Objects.deepEquals(mServiceData, other.mServiceData) &&
                 Objects.deepEquals(mServiceDataMask, other.mServiceDataMask) &&
                 Objects.equals(mServiceUuid, other.mServiceUuid) &&