[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
This commit is contained in:
chelseahao
2024-08-02 11:47:27 +08:00
committed by Chelsea Hao
parent 509c1d7834
commit d187437c57
2 changed files with 18 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams; package com.android.settings.connecteddevice.audiosharing.audiostreams;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
@@ -51,6 +52,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity
@Override @Override
protected void createUiFromIntent(@Nullable Bundle savedState, Intent intent) { protected void createUiFromIntent(@Nullable Bundle savedState, Intent intent) {
if (BluetoothUtils.isAudioSharingUIAvailable(this) if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& !isBluetoothUnsupportedOrOff()
&& !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) { && !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
Log.d(TAG, "createUiFromIntent() : supported but not ready, skip createUiFromIntent"); Log.d(TAG, "createUiFromIntent() : supported but not ready, skip createUiFromIntent");
mSavedState = savedState; mSavedState = savedState;
@@ -68,6 +70,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity
@Override @Override
public void onStart() { public void onStart() {
if (BluetoothUtils.isAudioSharingUIAvailable(this) if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& !isBluetoothUnsupportedOrOff()
&& !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) { && !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
Log.d(TAG, "onStart() : supported but not ready, listen to service ready"); Log.d(TAG, "onStart() : supported but not ready, listen to service ready");
if (mProfileManager != null) { if (mProfileManager != null) {
@@ -88,6 +91,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity
@Override @Override
public void onServiceConnected() { public void onServiceConnected() {
if (BluetoothUtils.isAudioSharingUIAvailable(this) if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& !isBluetoothUnsupportedOrOff()
&& AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) { && AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
if (mProfileManager != null) { if (mProfileManager != null) {
mProfileManager.removeServiceListener(this); mProfileManager.removeServiceListener(this);
@@ -106,4 +110,9 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity
protected boolean isValidFragment(String fragmentName) { protected boolean isValidFragment(String fragmentName) {
return AudioStreamConfirmDialog.class.getName().equals(fragmentName); return AudioStreamConfirmDialog.class.getName().equals(fragmentName);
} }
private static boolean isBluetoothUnsupportedOrOff() {
var adapter = BluetoothAdapter.getDefaultAdapter();
return adapter == null || !adapter.isEnabled();
}
} }

View File

@@ -139,6 +139,15 @@ public class AudioStreamConfirmDialogActivityTest {
verify(mLocalBluetoothProfileManager, never()).addServiceListener(any()); 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 @Test
public void onStop_unregisterCallback() { public void onStop_unregisterCallback() {
mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class); mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);