Loading src/com/android/settings/sound/AudioSwitchPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.bluetooth.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.FeatureFlags; import com.android.settings.sounde.AudioSwitchUtils; import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.CachedBluetoothDevice; Loading @@ -68,7 +69,8 @@ import java.util.concurrent.FutureTask; * updating the current status of switcher entry. Subclasses must overwrite */ public abstract class AudioSwitchPreferenceController extends BasePreferenceController implements BluetoothCallback, LifecycleObserver, OnStart, OnStop { implements BluetoothCallback, LifecycleObserver, OnStart, OnStop, LocalBluetoothProfileManager.ServiceListener { private static final String TAG = "AudioSwitchPrefCtrl"; Loading Loading @@ -149,6 +151,11 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont return; } mLocalBluetoothManager.setForegroundActivity(mContext); if (!AudioSwitchUtils.isLeAudioProfileReady(mProfileManager)) { if (mProfileManager != null) { mProfileManager.addServiceListener(this); } } register(); } Loading @@ -159,6 +166,9 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont return; } mLocalBluetoothManager.setForegroundActivity(null); if (mProfileManager != null) { mProfileManager.removeServiceListener(this); } unregister(); } Loading Loading @@ -193,6 +203,20 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont updateState(mPreference); } @Override public void onServiceConnected() { Log.d(TAG, "onServiceConnected"); if (AudioSwitchUtils.isLeAudioProfileReady(mProfileManager)) { updateState(mPreference); } } @Override public void onServiceDisconnected() { Log.d(TAG, "onServiceDisconnected()"); // Do nothing. } public void setCallback(AudioSwitchCallback callback) { mAudioSwitchPreferenceCallback = callback; } Loading src/com/android/settings/sound/AudioSwitchUtils.kt 0 → 100644 +32 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.sounde import com.android.settingslib.bluetooth.LocalBluetoothProfileManager /** * Utilities class for audio switcher controllers */ class AudioSwitchUtils { companion object { /** Check if LE Audio profile is ready. */ @JvmStatic fun isLeAudioProfileReady(profileManager: LocalBluetoothProfileManager?): Boolean = profileManager?.getLeAudioProfile()?.isProfileReady() ?: false } } No newline at end of file Loading
src/com/android/settings/sound/AudioSwitchPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.bluetooth.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.FeatureFlags; import com.android.settings.sounde.AudioSwitchUtils; import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.CachedBluetoothDevice; Loading @@ -68,7 +69,8 @@ import java.util.concurrent.FutureTask; * updating the current status of switcher entry. Subclasses must overwrite */ public abstract class AudioSwitchPreferenceController extends BasePreferenceController implements BluetoothCallback, LifecycleObserver, OnStart, OnStop { implements BluetoothCallback, LifecycleObserver, OnStart, OnStop, LocalBluetoothProfileManager.ServiceListener { private static final String TAG = "AudioSwitchPrefCtrl"; Loading Loading @@ -149,6 +151,11 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont return; } mLocalBluetoothManager.setForegroundActivity(mContext); if (!AudioSwitchUtils.isLeAudioProfileReady(mProfileManager)) { if (mProfileManager != null) { mProfileManager.addServiceListener(this); } } register(); } Loading @@ -159,6 +166,9 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont return; } mLocalBluetoothManager.setForegroundActivity(null); if (mProfileManager != null) { mProfileManager.removeServiceListener(this); } unregister(); } Loading Loading @@ -193,6 +203,20 @@ public abstract class AudioSwitchPreferenceController extends BasePreferenceCont updateState(mPreference); } @Override public void onServiceConnected() { Log.d(TAG, "onServiceConnected"); if (AudioSwitchUtils.isLeAudioProfileReady(mProfileManager)) { updateState(mPreference); } } @Override public void onServiceDisconnected() { Log.d(TAG, "onServiceDisconnected()"); // Do nothing. } public void setCallback(AudioSwitchCallback callback) { mAudioSwitchPreferenceCallback = callback; } Loading
src/com/android/settings/sound/AudioSwitchUtils.kt 0 → 100644 +32 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.sounde import com.android.settingslib.bluetooth.LocalBluetoothProfileManager /** * Utilities class for audio switcher controllers */ class AudioSwitchUtils { companion object { /** Check if LE Audio profile is ready. */ @JvmStatic fun isLeAudioProfileReady(profileManager: LocalBluetoothProfileManager?): Boolean = profileManager?.getLeAudioProfile()?.isProfileReady() ?: false } } No newline at end of file