Merge "To Add try-catch for MetadataChangedListener to handle the Exception" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
3750ebfef1
@@ -167,6 +167,10 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
|
||||
}
|
||||
|
||||
private void registerBluetoothDevice() {
|
||||
if (mBluetoothAdapter == null) {
|
||||
Log.d(TAG, "No mBluetoothAdapter");
|
||||
return;
|
||||
}
|
||||
if (mBluetoothDevices == null) {
|
||||
mBluetoothDevices = new HashSet<>();
|
||||
}
|
||||
@@ -180,23 +184,52 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
|
||||
}
|
||||
});
|
||||
if (mBluetoothDevices.isEmpty()) {
|
||||
Log.d(TAG, "No BT devcie to register.");
|
||||
Log.d(TAG, "No BT device to register.");
|
||||
return;
|
||||
}
|
||||
mCachedDevice.registerCallback(this);
|
||||
mBluetoothDevices.forEach(bd ->
|
||||
mBluetoothAdapter.addOnMetadataChangedListener(bd,
|
||||
mContext.getMainExecutor(), mMetadataListener));
|
||||
Set<BluetoothDevice> errorDevices = new HashSet<>();
|
||||
mBluetoothDevices.forEach(bd -> {
|
||||
try {
|
||||
boolean isSuccess = mBluetoothAdapter.addOnMetadataChangedListener(bd,
|
||||
mContext.getMainExecutor(), mMetadataListener);
|
||||
if (!isSuccess) {
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ": add into Listener failed");
|
||||
errorDevices.add(bd);
|
||||
}
|
||||
} catch (NullPointerException e) {
|
||||
errorDevices.add(bd);
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ":" + e.toString());
|
||||
} catch (IllegalArgumentException e) {
|
||||
errorDevices.add(bd);
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ":" + e.toString());
|
||||
}
|
||||
});
|
||||
for (BluetoothDevice errorDevice : errorDevices) {
|
||||
mBluetoothDevices.remove(errorDevice);
|
||||
Log.d(TAG, "mBluetoothDevices remove " + errorDevice.getAnonymizedAddress());
|
||||
}
|
||||
}
|
||||
|
||||
private void unRegisterBluetoothDevice() {
|
||||
if (mBluetoothAdapter == null) {
|
||||
Log.d(TAG, "No mBluetoothAdapter");
|
||||
return;
|
||||
}
|
||||
if (mBluetoothDevices == null || mBluetoothDevices.isEmpty()) {
|
||||
Log.d(TAG, "No BT devcie to unregister.");
|
||||
Log.d(TAG, "No BT device to unregister.");
|
||||
return;
|
||||
}
|
||||
mCachedDevice.unregisterCallback(this);
|
||||
mBluetoothDevices.forEach(bd -> mBluetoothAdapter.removeOnMetadataChangedListener(bd,
|
||||
mMetadataListener));
|
||||
mBluetoothDevices.forEach(bd -> {
|
||||
try {
|
||||
mBluetoothAdapter.removeOnMetadataChangedListener(bd, mMetadataListener);
|
||||
} catch (NullPointerException e) {
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ":" + e.toString());
|
||||
} catch (IllegalArgumentException e) {
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ":" + e.toString());
|
||||
}
|
||||
});
|
||||
mBluetoothDevices.clear();
|
||||
}
|
||||
|
||||
|
@@ -196,6 +196,10 @@ public final class BluetoothDevicePreference extends GearPreference {
|
||||
}
|
||||
|
||||
private void registerMetadataChangedListener() {
|
||||
if (mBluetoothAdapter == null) {
|
||||
Log.d(TAG, "No mBluetoothAdapter");
|
||||
return;
|
||||
}
|
||||
if (mBluetoothDevices == null) {
|
||||
mBluetoothDevices = new HashSet<>();
|
||||
}
|
||||
@@ -210,18 +214,47 @@ public final class BluetoothDevicePreference extends GearPreference {
|
||||
Log.d(TAG, "No BT device to register.");
|
||||
return;
|
||||
}
|
||||
mBluetoothDevices.forEach(bd ->
|
||||
mBluetoothAdapter.addOnMetadataChangedListener(bd,
|
||||
getContext().getMainExecutor(), mMetadataListener));
|
||||
Set<BluetoothDevice> errorDevices = new HashSet<>();
|
||||
mBluetoothDevices.forEach(bd -> {
|
||||
try {
|
||||
boolean isSuccess = mBluetoothAdapter.addOnMetadataChangedListener(bd,
|
||||
getContext().getMainExecutor(), mMetadataListener);
|
||||
if (!isSuccess) {
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ": add into Listener failed");
|
||||
errorDevices.add(bd);
|
||||
}
|
||||
} catch (NullPointerException e) {
|
||||
errorDevices.add(bd);
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ":" + e.toString());
|
||||
} catch (IllegalArgumentException e) {
|
||||
errorDevices.add(bd);
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ":" + e.toString());
|
||||
}
|
||||
});
|
||||
for (BluetoothDevice errorDevice : errorDevices) {
|
||||
mBluetoothDevices.remove(errorDevice);
|
||||
Log.d(TAG, "mBluetoothDevices remove " + errorDevice.getAnonymizedAddress());
|
||||
}
|
||||
}
|
||||
|
||||
private void unregisterMetadataChangedListener() {
|
||||
if (mBluetoothAdapter == null) {
|
||||
Log.d(TAG, "No mBluetoothAdapter");
|
||||
return;
|
||||
}
|
||||
if (mBluetoothDevices == null || mBluetoothDevices.isEmpty()) {
|
||||
Log.d(TAG, "No BT device to unregister.");
|
||||
return;
|
||||
}
|
||||
mBluetoothDevices.forEach(
|
||||
bd -> mBluetoothAdapter.removeOnMetadataChangedListener(bd, mMetadataListener));
|
||||
mBluetoothDevices.forEach(bd -> {
|
||||
try {
|
||||
mBluetoothAdapter.removeOnMetadataChangedListener(bd, mMetadataListener);
|
||||
} catch (NullPointerException e) {
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ":" + e.toString());
|
||||
} catch (IllegalArgumentException e) {
|
||||
Log.e(TAG, bd.getAnonymizedAddress() + ":" + e.toString());
|
||||
}
|
||||
});
|
||||
mBluetoothDevices.clear();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user