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() {
|
private void registerBluetoothDevice() {
|
||||||
|
if (mBluetoothAdapter == null) {
|
||||||
|
Log.d(TAG, "No mBluetoothAdapter");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (mBluetoothDevices == null) {
|
if (mBluetoothDevices == null) {
|
||||||
mBluetoothDevices = new HashSet<>();
|
mBluetoothDevices = new HashSet<>();
|
||||||
}
|
}
|
||||||
@@ -180,23 +184,52 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (mBluetoothDevices.isEmpty()) {
|
if (mBluetoothDevices.isEmpty()) {
|
||||||
Log.d(TAG, "No BT devcie to register.");
|
Log.d(TAG, "No BT device to register.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mCachedDevice.registerCallback(this);
|
mCachedDevice.registerCallback(this);
|
||||||
mBluetoothDevices.forEach(bd ->
|
Set<BluetoothDevice> errorDevices = new HashSet<>();
|
||||||
mBluetoothAdapter.addOnMetadataChangedListener(bd,
|
mBluetoothDevices.forEach(bd -> {
|
||||||
mContext.getMainExecutor(), mMetadataListener));
|
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() {
|
private void unRegisterBluetoothDevice() {
|
||||||
|
if (mBluetoothAdapter == null) {
|
||||||
|
Log.d(TAG, "No mBluetoothAdapter");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (mBluetoothDevices == null || mBluetoothDevices.isEmpty()) {
|
if (mBluetoothDevices == null || mBluetoothDevices.isEmpty()) {
|
||||||
Log.d(TAG, "No BT devcie to unregister.");
|
Log.d(TAG, "No BT device to unregister.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mCachedDevice.unregisterCallback(this);
|
mCachedDevice.unregisterCallback(this);
|
||||||
mBluetoothDevices.forEach(bd -> mBluetoothAdapter.removeOnMetadataChangedListener(bd,
|
mBluetoothDevices.forEach(bd -> {
|
||||||
mMetadataListener));
|
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();
|
mBluetoothDevices.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -196,6 +196,10 @@ public final class BluetoothDevicePreference extends GearPreference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void registerMetadataChangedListener() {
|
private void registerMetadataChangedListener() {
|
||||||
|
if (mBluetoothAdapter == null) {
|
||||||
|
Log.d(TAG, "No mBluetoothAdapter");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (mBluetoothDevices == null) {
|
if (mBluetoothDevices == null) {
|
||||||
mBluetoothDevices = new HashSet<>();
|
mBluetoothDevices = new HashSet<>();
|
||||||
}
|
}
|
||||||
@@ -210,18 +214,47 @@ public final class BluetoothDevicePreference extends GearPreference {
|
|||||||
Log.d(TAG, "No BT device to register.");
|
Log.d(TAG, "No BT device to register.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mBluetoothDevices.forEach(bd ->
|
Set<BluetoothDevice> errorDevices = new HashSet<>();
|
||||||
mBluetoothAdapter.addOnMetadataChangedListener(bd,
|
mBluetoothDevices.forEach(bd -> {
|
||||||
getContext().getMainExecutor(), mMetadataListener));
|
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() {
|
private void unregisterMetadataChangedListener() {
|
||||||
|
if (mBluetoothAdapter == null) {
|
||||||
|
Log.d(TAG, "No mBluetoothAdapter");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (mBluetoothDevices == null || mBluetoothDevices.isEmpty()) {
|
if (mBluetoothDevices == null || mBluetoothDevices.isEmpty()) {
|
||||||
Log.d(TAG, "No BT device to unregister.");
|
Log.d(TAG, "No BT device to unregister.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mBluetoothDevices.forEach(
|
mBluetoothDevices.forEach(bd -> {
|
||||||
bd -> mBluetoothAdapter.removeOnMetadataChangedListener(bd, mMetadataListener));
|
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();
|
mBluetoothDevices.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user