From d187437c57384ed3c4b5026abd45b0c583737ad9 Mon Sep 17 00:00:00 2001 From: chelseahao Date: Fri, 2 Aug 2024 11:47:27 +0800 Subject: [PATCH] [Audiosharing] When bt is off or unsupported, we show "Please connect a device" dialog after camera scans a QR code Bug: 308368124 Flag: com.android.settingslib.flags.enable_le_audio_qr_code_private_broadcast_sharing Test: atest Change-Id: I89697e25b57d67fa765f5ad593b72f6cdecda418 --- .../audiostreams/AudioStreamConfirmDialogActivity.java | 9 +++++++++ .../AudioStreamConfirmDialogActivityTest.java | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java index 902501a60e8..34fa25e2029 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java +++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivity.java @@ -16,6 +16,7 @@ package com.android.settings.connecteddevice.audiosharing.audiostreams; +import android.bluetooth.BluetoothAdapter; import android.content.Intent; import android.os.Bundle; import android.util.Log; @@ -51,6 +52,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity @Override protected void createUiFromIntent(@Nullable Bundle savedState, Intent intent) { if (BluetoothUtils.isAudioSharingUIAvailable(this) + && !isBluetoothUnsupportedOrOff() && !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) { Log.d(TAG, "createUiFromIntent() : supported but not ready, skip createUiFromIntent"); mSavedState = savedState; @@ -68,6 +70,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity @Override public void onStart() { if (BluetoothUtils.isAudioSharingUIAvailable(this) + && !isBluetoothUnsupportedOrOff() && !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) { Log.d(TAG, "onStart() : supported but not ready, listen to service ready"); if (mProfileManager != null) { @@ -88,6 +91,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity @Override public void onServiceConnected() { if (BluetoothUtils.isAudioSharingUIAvailable(this) + && !isBluetoothUnsupportedOrOff() && AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) { if (mProfileManager != null) { mProfileManager.removeServiceListener(this); @@ -106,4 +110,9 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity protected boolean isValidFragment(String fragmentName) { return AudioStreamConfirmDialog.class.getName().equals(fragmentName); } + + private static boolean isBluetoothUnsupportedOrOff() { + var adapter = BluetoothAdapter.getDefaultAdapter(); + return adapter == null || !adapter.isEnabled(); + } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivityTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivityTest.java index 1f05cbb0df3..200afd1cf6c 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivityTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivityTest.java @@ -139,6 +139,15 @@ public class AudioStreamConfirmDialogActivityTest { verify(mLocalBluetoothProfileManager, never()).addServiceListener(any()); } + @Test + public void setupActivity_serviceNotReady_bluetoothOff_doNothing() { + when(mAssistant.isProfileReady()).thenReturn(false); + mShadowBluetoothAdapter.setEnabled(false); + mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class); + + verify(mLocalBluetoothProfileManager, never()).addServiceListener(any()); + } + @Test public void onStop_unregisterCallback() { mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);