Loading packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +23 −14 Original line number Original line Diff line number Diff line Loading @@ -69,9 +69,9 @@ public class LocalMediaManager implements BluetoothCallback { private MediaDevice mOnTransferBluetoothDevice; private MediaDevice mOnTransferBluetoothDevice; @VisibleForTesting @VisibleForTesting List<MediaDevice> mMediaDevices = new ArrayList<>(); List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>(); @VisibleForTesting @VisibleForTesting List<MediaDevice> mDisconnectedMediaDevices = new ArrayList<>(); List<MediaDevice> mDisconnectedMediaDevices = new CopyOnWriteArrayList<>(); @VisibleForTesting @VisibleForTesting MediaDevice mPhoneDevice; MediaDevice mPhoneDevice; @VisibleForTesting @VisibleForTesting Loading Loading @@ -207,6 +207,7 @@ public class LocalMediaManager implements BluetoothCallback { public void stopScan() { public void stopScan() { mInfoMediaManager.unregisterCallback(mMediaDeviceCallback); mInfoMediaManager.unregisterCallback(mMediaDeviceCallback); mInfoMediaManager.stopScan(); mInfoMediaManager.stopScan(); unRegisterDeviceAttributeChangeCallback(); } } /** /** Loading Loading @@ -397,22 +398,26 @@ public class LocalMediaManager implements BluetoothCallback { } } private List<MediaDevice> buildDisconnectedBluetoothDevice() { private List<MediaDevice> buildDisconnectedBluetoothDevice() { for (MediaDevice device : mDisconnectedMediaDevices) { ((BluetoothMediaDevice) device).getCachedDevice() .unregisterCallback(mDeviceAttributeChangeCallback); } mDisconnectedMediaDevices.clear(); final List<BluetoothDevice> bluetoothDevices = final List<BluetoothDevice> bluetoothDevices = mBluetoothAdapter.getMostRecentlyConnectedDevices(); mBluetoothAdapter.getMostRecentlyConnectedDevices(); final CachedBluetoothDeviceManager cachedDeviceManager = final CachedBluetoothDeviceManager cachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager(); mLocalBluetoothManager.getCachedDeviceManager(); final List<CachedBluetoothDevice> cachedBluetoothDeviceList = new ArrayList<>(); for (BluetoothDevice device : bluetoothDevices) { for (BluetoothDevice device : bluetoothDevices) { final CachedBluetoothDevice cachedDevice = final CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(device); cachedDeviceManager.findDevice(device); if (cachedDevice != null) { if (cachedDevice != null) { if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED && !cachedDevice.isConnected()) { && !cachedDevice.isConnected()) { cachedBluetoothDeviceList.add(cachedDevice); } } } unRegisterDeviceAttributeChangeCallback(); mDisconnectedMediaDevices.clear(); for (CachedBluetoothDevice cachedDevice : cachedBluetoothDeviceList) { final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, cachedDevice, null, null, mPackageName); null, null, mPackageName); Loading @@ -421,8 +426,6 @@ public class LocalMediaManager implements BluetoothCallback { mDisconnectedMediaDevices.add(mediaDevice); mDisconnectedMediaDevices.add(mediaDevice); } } } } } } return new ArrayList<>(mDisconnectedMediaDevices); return new ArrayList<>(mDisconnectedMediaDevices); } } Loading Loading @@ -473,6 +476,12 @@ public class LocalMediaManager implements BluetoothCallback { } } } } private void unRegisterDeviceAttributeChangeCallback() { for (MediaDevice device : mDisconnectedMediaDevices) { ((BluetoothMediaDevice) device).getCachedDevice() .unregisterCallback(mDeviceAttributeChangeCallback); } } /** /** * Callback for notifying device information updating * Callback for notifying device information updating Loading Loading
packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +23 −14 Original line number Original line Diff line number Diff line Loading @@ -69,9 +69,9 @@ public class LocalMediaManager implements BluetoothCallback { private MediaDevice mOnTransferBluetoothDevice; private MediaDevice mOnTransferBluetoothDevice; @VisibleForTesting @VisibleForTesting List<MediaDevice> mMediaDevices = new ArrayList<>(); List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>(); @VisibleForTesting @VisibleForTesting List<MediaDevice> mDisconnectedMediaDevices = new ArrayList<>(); List<MediaDevice> mDisconnectedMediaDevices = new CopyOnWriteArrayList<>(); @VisibleForTesting @VisibleForTesting MediaDevice mPhoneDevice; MediaDevice mPhoneDevice; @VisibleForTesting @VisibleForTesting Loading Loading @@ -207,6 +207,7 @@ public class LocalMediaManager implements BluetoothCallback { public void stopScan() { public void stopScan() { mInfoMediaManager.unregisterCallback(mMediaDeviceCallback); mInfoMediaManager.unregisterCallback(mMediaDeviceCallback); mInfoMediaManager.stopScan(); mInfoMediaManager.stopScan(); unRegisterDeviceAttributeChangeCallback(); } } /** /** Loading Loading @@ -397,22 +398,26 @@ public class LocalMediaManager implements BluetoothCallback { } } private List<MediaDevice> buildDisconnectedBluetoothDevice() { private List<MediaDevice> buildDisconnectedBluetoothDevice() { for (MediaDevice device : mDisconnectedMediaDevices) { ((BluetoothMediaDevice) device).getCachedDevice() .unregisterCallback(mDeviceAttributeChangeCallback); } mDisconnectedMediaDevices.clear(); final List<BluetoothDevice> bluetoothDevices = final List<BluetoothDevice> bluetoothDevices = mBluetoothAdapter.getMostRecentlyConnectedDevices(); mBluetoothAdapter.getMostRecentlyConnectedDevices(); final CachedBluetoothDeviceManager cachedDeviceManager = final CachedBluetoothDeviceManager cachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager(); mLocalBluetoothManager.getCachedDeviceManager(); final List<CachedBluetoothDevice> cachedBluetoothDeviceList = new ArrayList<>(); for (BluetoothDevice device : bluetoothDevices) { for (BluetoothDevice device : bluetoothDevices) { final CachedBluetoothDevice cachedDevice = final CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(device); cachedDeviceManager.findDevice(device); if (cachedDevice != null) { if (cachedDevice != null) { if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED && !cachedDevice.isConnected()) { && !cachedDevice.isConnected()) { cachedBluetoothDeviceList.add(cachedDevice); } } } unRegisterDeviceAttributeChangeCallback(); mDisconnectedMediaDevices.clear(); for (CachedBluetoothDevice cachedDevice : cachedBluetoothDeviceList) { final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, final MediaDevice mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, cachedDevice, null, null, mPackageName); null, null, mPackageName); Loading @@ -421,8 +426,6 @@ public class LocalMediaManager implements BluetoothCallback { mDisconnectedMediaDevices.add(mediaDevice); mDisconnectedMediaDevices.add(mediaDevice); } } } } } } return new ArrayList<>(mDisconnectedMediaDevices); return new ArrayList<>(mDisconnectedMediaDevices); } } Loading Loading @@ -473,6 +476,12 @@ public class LocalMediaManager implements BluetoothCallback { } } } } private void unRegisterDeviceAttributeChangeCallback() { for (MediaDevice device : mDisconnectedMediaDevices) { ((BluetoothMediaDevice) device).getCachedDevice() .unregisterCallback(mDeviceAttributeChangeCallback); } } /** /** * Callback for notifying device information updating * Callback for notifying device information updating Loading