Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f67ab8e3 authored by Łukasz Rymanowski's avatar Łukasz Rymanowski
Browse files

LeAudioService: Fix crash on Airplane mode on

Fix race which cause the crash

  at com.android.bluetooth.le_audio.LeAudioService$AudioManagerRemoveAudioDeviceCallback.onAudioDevicesRemoved(LeAudioService.java:899)
  at android.media.AudioManager$NativeEventHandlerDelegate$1.handleMessage(AudioManager.java:8560)
  at android.os.Handler.dispatchMessage(Handler.java:106)
  at android.os.Looper.loopOnce(Looper.java:201)
  at android.os.Looper.loop(Looper.java:288)
  at android.app.ActivityThread.main(ActivityThread.java:7868)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Bug: 262180035
Test: compile
Tag: #feature
Change-Id: I9786d38f702086c93cc852b5500f160318d4d70a
parent 3beec8f4
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -890,6 +890,11 @@ public class LeAudioService extends ProfileService {
    private class AudioManagerRemoveAudioDeviceCallback extends AudioDeviceCallback {
        @Override
        public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
            if (mAudioManager == null) {
                Log.e(TAG, "Callback called when LeAudioService is stopped");
                return;
            }

            for (AudioDeviceInfo deviceInfo : removedDevices) {
                if (deviceInfo.getType() == AudioDeviceInfo.TYPE_BLE_HEADSET
                        || deviceInfo.getType() == AudioDeviceInfo.TYPE_BLE_SPEAKER) {
@@ -907,6 +912,11 @@ public class LeAudioService extends ProfileService {
    private class AudioManagerAddAudioDeviceCallback extends AudioDeviceCallback {
        @Override
        public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
            if (mAudioManager == null) {
                Log.e(TAG, "Callback called when LeAudioService is stopped");
                return;
            }

            for (AudioDeviceInfo deviceInfo : addedDevices) {
                if (deviceInfo.getType() == AudioDeviceInfo.TYPE_BLE_HEADSET
                        || deviceInfo.getType() == AudioDeviceInfo.TYPE_BLE_SPEAKER) {