Merge "[Audiosharing] Enable audio sharing UI when preview option on." into main

This commit is contained in:
Yiyi Shen
2024-11-08 06:36:49 +00:00
committed by Android (Google) Code Review
29 changed files with 445 additions and 379 deletions

View File

@@ -77,7 +77,7 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater
// It would show in Available Devices group if the audio sharing flag is disabled or
// the device is not in the audio sharing session.
if (cachedDevice.isConnectedLeAudioDevice()) {
if (BluetoothUtils.isAudioSharingEnabled()
if (BluetoothUtils.isAudioSharingUIAvailable(mContext)
&& BluetoothUtils.hasConnectedBroadcastSource(
cachedDevice, mLocalBtManager)) {
Log.d(

View File

@@ -228,10 +228,7 @@ public abstract class BluetoothDevicePairingDetailBase extends DeviceListPrefere
final BluetoothDevice device = cachedDevice.getDevice();
if (device != null
&& mSelectedList.contains(device)) {
if (!BluetoothUtils.isAudioSharingEnabled()) {
finish();
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(getContext())) {
if (bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
&& state == BluetoothAdapter.STATE_CONNECTED
&& device.equals(mJustBonded)
@@ -242,6 +239,9 @@ public abstract class BluetoothDevicePairingDetailBase extends DeviceListPrefere
mHandler.removeMessages(AUTO_DISMISS_MESSAGE_ID);
finishFragmentWithResultForAudioSharing(device);
}
} else {
finish();
}
} else {
onDeviceDeleted(cachedDevice);
}
@@ -309,7 +309,7 @@ public abstract class BluetoothDevicePairingDetailBase extends DeviceListPrefere
@VisibleForTesting
boolean shouldTriggerAudioSharingShareThenPairFlow() {
if (!BluetoothUtils.isAudioSharingEnabled()) return false;
if (BluetoothUtils.isAudioSharingUIAvailable(getContext())) {
Activity activity = getActivity();
Intent intent = activity == null ? null : activity.getIntent();
Bundle args =
@@ -319,6 +319,8 @@ public abstract class BluetoothDevicePairingDetailBase extends DeviceListPrefere
return args != null
&& args.getBoolean(EXTRA_PAIR_AND_JOIN_SHARING, false);
}
return false;
}
private void addOnMetadataChangedListener(@Nullable BluetoothDevice device) {
var unused = ThreadUtils.postOnBackgroundThread(() -> {

View File

@@ -179,7 +179,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
super(context, KEY);
mBtManager = Utils.getLocalBtManager(mContext);
mExecutor = Executors.newSingleThreadExecutor();
if (BluetoothUtils.isAudioSharingEnabled()) {
if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
mBroadcast =
mBtManager == null
? null
@@ -200,7 +200,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
Log.d(TAG, "onStart() Bluetooth is not supported on this device");
return;
}
if (BluetoothUtils.isAudioSharingEnabled()) {
if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
registerAudioSharingCallbacks();
}
mBtManager.getEventManager().registerCallback(this);
@@ -216,7 +216,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
Log.d(TAG, "onStop() Bluetooth is not supported on this device");
return;
}
if (BluetoothUtils.isAudioSharingEnabled()) {
if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
unregisterAudioSharingCallbacks();
}
if (mBluetoothDeviceUpdater != null) {
@@ -278,7 +278,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
public void onDeviceClick(Preference preference) {
final CachedBluetoothDevice cachedDevice =
((BluetoothDevicePreference) preference).getBluetoothDevice();
if (BluetoothUtils.isAudioSharingEnabled() && mDialogHandler != null) {
if (BluetoothUtils.isAudioSharingUIAvailable(mContext) && mDialogHandler != null) {
mDialogHandler.handleDeviceConnected(cachedDevice, /* userTriggered= */ true);
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
.action(mContext, SettingsEnums.ACTION_MEDIA_DEVICE_CLICK);
@@ -294,7 +294,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
fragment.getContext(),
AvailableMediaDeviceGroupController.this,
fragment.getMetricsCategory());
if (BluetoothUtils.isAudioSharingEnabled()) {
if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
mDialogHandler = new AudioSharingDialogHandler(mContext, fragment);
}
}
@@ -341,7 +341,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
if (isAudioModeOngoingCall(mContext)) {
// in phone call
titleResId = R.string.connected_device_call_device_title;
} else if (BluetoothUtils.isAudioSharingEnabled()
} else if (BluetoothUtils.isAudioSharingUIAvailable(mContext)
&& BluetoothUtils.isBroadcasting(mBtManager)) {
// without phone call, in audio sharing
titleResId = R.string.audio_sharing_media_device_group_title;

View File

@@ -80,7 +80,7 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
+ ", action : "
+ action);
}
if (BluetoothUtils.isAudioSharingEnabled()) {
if (BluetoothUtils.isAudioSharingUIAvailable(context)) {
use(AudioSharingDevicePreferenceController.class).init(this);
}
use(AvailableMediaDeviceGroupController.class).init(this);

View File

@@ -25,7 +25,7 @@ public class AudioSharingActivity extends SettingsActivity {
@Override
protected void onCreate(Bundle savedState) {
super.onCreate(savedState);
if (!BluetoothUtils.isAudioSharingEnabled()) {
if (!BluetoothUtils.isAudioSharingUIAvailable(this)) {
finish();
}
}

View File

@@ -55,7 +55,8 @@ public abstract class AudioSharingBasePreferenceController extends BasePreferenc
@Override
public int getAvailabilityStatus() {
return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return (BluetoothUtils.isAudioSharingUIAvailable(mContext))
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override

View File

@@ -55,7 +55,7 @@ public class AudioSharingBluetoothDeviceUpdater extends BluetoothDeviceUpdater
if (isDeviceConnected(cachedDevice) && isDeviceInCachedDevicesList(cachedDevice)) {
// If device is LE audio device and has a broadcast source,
// it would show in audio sharing devices group.
if (BluetoothUtils.isAudioSharingEnabled()
if (BluetoothUtils.isAudioSharingUIAvailable(mContext)
&& cachedDevice.isConnectedLeAudioDevice()
&& BluetoothUtils.hasConnectedBroadcastSource(cachedDevice, mLocalBtManager)) {
isFilterMatched = true;

View File

@@ -65,11 +65,15 @@ public class AudioSharingCallAudioDialogFragment extends InstrumentedDialogFragm
* @param listener The callback to handle the user action on this dialog.
*/
public static void show(
@NonNull Fragment host,
@Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
int checkedItemIndex,
@NonNull DialogEventListener listener) {
if (!BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -88,6 +92,7 @@ public class AudioSharingCallAudioDialogFragment extends InstrumentedDialogFragm
dialog.show(manager, TAG);
}
}
}
@Override
@NonNull

View File

@@ -155,7 +155,8 @@ public class AudioSharingCompatibilityPreferenceController extends TogglePrefere
@Override
public int getAvailabilityStatus() {
return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@Override

View File

@@ -44,8 +44,12 @@ public class AudioSharingConfirmDialogFragment extends InstrumentedDialogFragmen
*
* @param host The Fragment this dialog will be hosted.
*/
public static void show(Fragment host) {
if (!BluetoothUtils.isAudioSharingEnabled()) return;
public static void show(@Nullable Fragment host) {
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -62,6 +66,7 @@ public class AudioSharingConfirmDialogFragment extends InstrumentedDialogFragmen
AudioSharingConfirmDialogFragment dialogFrag = new AudioSharingConfirmDialogFragment();
dialogFrag.show(manager, TAG);
}
}
@Override
@NonNull

View File

@@ -45,6 +45,7 @@ public class AudioSharingDashboardFragment extends DashboardFragment
public static final int SHARE_THEN_PAIR_REQUEST_CODE = 1002;
SettingsMainSwitchBar mMainSwitchBar;
private Context mContext;
private AudioSharingDeviceVolumeGroupController mAudioSharingDeviceVolumeGroupController;
private AudioSharingCallAudioPreferenceController mAudioSharingCallAudioPreferenceController;
private AudioSharingPlaySoundPreferenceController mAudioSharingPlaySoundPreferenceController;
@@ -78,6 +79,7 @@ public class AudioSharingDashboardFragment extends DashboardFragment
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext = context;
mAudioSharingDeviceVolumeGroupController =
use(AudioSharingDeviceVolumeGroupController.class);
mAudioSharingDeviceVolumeGroupController.init(this);
@@ -107,11 +109,12 @@ public class AudioSharingDashboardFragment extends DashboardFragment
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (!BluetoothUtils.isAudioSharingEnabled()) return;
// In share then pair flow, after users be routed to pair new device page and successfully
// pair and connect an LEA headset, the pair fragment will be finished with RESULT_OK
// and EXTRA_BT_DEVICE_TO_AUTO_ADD_SOURCE, pass the BT device to switch bar controller,
// which is responsible for adding source to the device with loading indicator.
if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
// In share then pair flow, after users be routed to pair new device page and
// successfully pair and connect an LEA headset, the pair fragment will be finished with
// RESULT_OK and EXTRA_BT_DEVICE_TO_AUTO_ADD_SOURCE, pass the BT device to switch bar
// controller, which is responsible for adding source to the device with loading
// indicator.
if (requestCode == SHARE_THEN_PAIR_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
BluetoothDevice btDevice =
@@ -128,6 +131,7 @@ public class AudioSharingDashboardFragment extends DashboardFragment
}
}
}
}
@Override
public void onAudioSharingStateChanged() {

View File

@@ -308,7 +308,8 @@ public class AudioSharingDevicePreferenceController extends BasePreferenceContro
@Override
public int getAvailabilityStatus() {
return BluetoothUtils.isAudioSharingEnabled() && mBluetoothDeviceUpdater != null
return (BluetoothUtils.isAudioSharingUIAvailable(mContext)
&& mBluetoothDeviceUpdater != null)
? AVAILABLE_UNSEARCHABLE
: UNSUPPORTED_ON_DEVICE;
}

View File

@@ -84,11 +84,15 @@ public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
* @param eventData The eventData to log with for dialog onClick events.
*/
public static void show(
@NonNull Fragment host,
@Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
if (!BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -116,6 +120,7 @@ public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
dialogFrag.setArguments(bundle);
dialogFrag.show(manager, TAG);
}
}
/** Return the tag of {@link AudioSharingDialogFragment} dialog. */
public static @NonNull String tag() {

View File

@@ -80,12 +80,16 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
* @param eventData The eventData to log with for dialog onClick events.
*/
public static void show(
@NonNull Fragment host,
@Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull CachedBluetoothDevice newDevice,
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
if (!BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -122,17 +126,7 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
+ "dismiss current dialog.",
newGroupId));
dialog.dismiss();
var unused =
ThreadUtils.postOnBackgroundThread(
() ->
FeatureFactory.getFeatureFactory()
.getMetricsFeatureProvider()
.action(
dialog.getContext(),
SettingsEnums
.ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
SettingsEnums
.DIALOG_AUDIO_SHARING_SWITCH_DEVICE));
logDialogAutoDismiss(dialog);
}
}
sListener = listener;
@@ -147,6 +141,7 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
dialogFrag.setArguments(bundle);
dialogFrag.show(manager, TAG);
}
}
/** Return the tag of {@link AudioSharingDisconnectDialogFragment} dialog. */
public static @NonNull String tag() {
@@ -216,4 +211,17 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
AudioSharingDeviceAdapter.ActionType.REMOVE));
return builder.build();
}
private static void logDialogAutoDismiss(AlertDialog dialog) {
var unused =
ThreadUtils.postOnBackgroundThread(
() -> FeatureFactory.getFeatureFactory()
.getMetricsFeatureProvider()
.action(
dialog.getContext(),
SettingsEnums
.ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
SettingsEnums
.DIALOG_AUDIO_SHARING_SWITCH_DEVICE));
}
}

View File

@@ -46,7 +46,11 @@ public class AudioSharingErrorDialogFragment extends InstrumentedDialogFragment
* @param host The Fragment this dialog will be hosted.
*/
public static void show(@Nullable Fragment host) {
if (host == null || !BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -68,6 +72,7 @@ public class AudioSharingErrorDialogFragment extends InstrumentedDialogFragment
AudioSharingErrorDialogFragment dialogFrag = new AudioSharingErrorDialogFragment();
dialogFrag.show(manager, TAG);
}
}
@Override
@NonNull

View File

@@ -62,7 +62,11 @@ public class AudioSharingIncompatibleDialogFragment extends InstrumentedDialogFr
*/
public static void show(@Nullable Fragment host, @NonNull String deviceName,
@NonNull DialogEventListener listener) {
if (host == null || !BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -89,6 +93,7 @@ public class AudioSharingIncompatibleDialogFragment extends InstrumentedDialogFr
dialogFrag.setArguments(bundle);
dialogFrag.show(manager, TAG);
}
}
@Override
@NonNull

View File

@@ -77,12 +77,16 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
* @param eventData The eventData to log with for dialog onClick events.
*/
public static void show(
@NonNull Fragment host,
@Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull CachedBluetoothDevice newDevice,
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
if (!BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -107,11 +111,13 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
final Bundle bundle = new Bundle();
bundle.putParcelableList(BUNDLE_KEY_DEVICE_ITEMS, deviceItems);
bundle.putString(BUNDLE_KEY_NEW_DEVICE_NAME, newDevice.getName());
final AudioSharingJoinDialogFragment dialogFrag = new AudioSharingJoinDialogFragment();
final AudioSharingJoinDialogFragment dialogFrag =
new AudioSharingJoinDialogFragment();
dialogFrag.setArguments(bundle);
dialogFrag.show(manager, TAG);
}
}
}
/** Return the tag of {@link AudioSharingJoinDialogFragment} dialog. */
public static @NonNull String tag() {

View File

@@ -174,7 +174,8 @@ public class AudioSharingNamePreferenceController extends BasePreferenceControll
@Override
public int getAvailabilityStatus() {
return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@Override

View File

@@ -113,7 +113,8 @@ public class AudioSharingPasswordPreferenceController extends BasePreferenceCont
@Override
public int getAvailabilityStatus() {
return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@Override

View File

@@ -57,7 +57,7 @@ public class AudioSharingPlaySoundPreferenceController
@Override
public int getAvailabilityStatus() {
return (mRingtone != null && BluetoothUtils.isAudioSharingEnabled())
return (mRingtone != null && BluetoothUtils.isAudioSharingUIAvailable(mContext))
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}

View File

@@ -135,7 +135,8 @@ public class AudioSharingPreferenceController extends BasePreferenceController
@Override
public int getAvailabilityStatus() {
return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@Override

View File

@@ -65,7 +65,11 @@ public class AudioSharingProgressDialogFragment extends InstrumentedDialogFragme
* @param message The content to be shown on the dialog.
*/
public static void show(@Nullable Fragment host, @NonNull String message) {
if (host == null || !BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -95,14 +99,20 @@ public class AudioSharingProgressDialogFragment extends InstrumentedDialogFragme
Log.d(TAG, "Show up the progress dialog.");
Bundle args = new Bundle();
args.putString(BUNDLE_KEY_MESSAGE, message);
AudioSharingProgressDialogFragment dialogFrag = new AudioSharingProgressDialogFragment();
AudioSharingProgressDialogFragment dialogFrag =
new AudioSharingProgressDialogFragment();
dialogFrag.setArguments(args);
dialogFrag.show(manager, TAG);
}
}
/** Dismiss the {@link AudioSharingProgressDialogFragment} dialog. */
public static void dismiss(@Nullable Fragment host) {
if (host == null || !BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to dismiss dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -116,6 +126,7 @@ public class AudioSharingProgressDialogFragment extends InstrumentedDialogFragme
dialog.dismiss();
}
}
}
@Override
@NonNull

View File

@@ -62,7 +62,7 @@ public class AudioSharingReceiver extends BroadcastReceiver {
intent.getIntExtra(
LocalBluetoothLeBroadcast.EXTRA_LE_AUDIO_SHARING_STATE, -1);
if (state == LocalBluetoothLeBroadcast.BROADCAST_STATE_ON) {
if (!BluetoothUtils.isAudioSharingEnabled()) {
if (!BluetoothUtils.isAudioSharingUIAvailable(context)) {
Log.w(TAG, "Skip showSharingNotification, feature disabled.");
return;
}
@@ -85,7 +85,7 @@ public class AudioSharingReceiver extends BroadcastReceiver {
}
break;
case ACTION_LE_AUDIO_SHARING_STOP:
if (BluetoothUtils.isAudioSharingEnabled()) {
if (BluetoothUtils.isAudioSharingUIAvailable(context)) {
LocalBluetoothManager manager = Utils.getLocalBtManager(context);
if (BluetoothUtils.isBroadcasting(manager)) {
AudioSharingUtils.stopBroadcasting(manager);

View File

@@ -77,12 +77,16 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
* @param eventData The eventData to log with for dialog onClick events.
*/
public static void show(
@NonNull Fragment host,
@Nullable Fragment host,
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull CachedBluetoothDevice newDevice,
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
if (!BluetoothUtils.isAudioSharingEnabled()) return;
if (host == null) {
Log.d(TAG, "Fail to show dialog, host is null");
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(host.getContext())) {
final FragmentManager manager;
try {
manager = host.getChildFragmentManager();
@@ -119,16 +123,7 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
+ "dismiss current dialog.",
newGroupId));
dialog.dismiss();
var unused =
ThreadUtils.postOnBackgroundThread(
() ->
FeatureFactory.getFeatureFactory()
.getMetricsFeatureProvider()
.action(
dialog.getContext(),
SettingsEnums
.ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
SettingsEnums.DIALOG_STOP_AUDIO_SHARING));
logDialogAutoDismiss(dialog);
}
}
sListener = listener;
@@ -142,6 +137,7 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
dialogFrag.setArguments(bundle);
dialogFrag.show(manager, TAG);
}
}
/** Return the tag of {@link AudioSharingStopDialogFragment} dialog. */
public static @NonNull String tag() {
@@ -221,4 +217,16 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
AudioSharingDialogHelper.updateMessageStyle(dialog);
return dialog;
}
private static void logDialogAutoDismiss(AlertDialog dialog) {
var unused =
ThreadUtils.postOnBackgroundThread(
() -> FeatureFactory.getFeatureFactory()
.getMetricsFeatureProvider()
.action(
dialog.getContext(),
SettingsEnums
.ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
SettingsEnums.DIALOG_STOP_AUDIO_SHARING));
}
}

View File

@@ -426,9 +426,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
() -> {
mSwitchBar.setEnabled(true);
mSwitchBar.setChecked(false);
if (mFragment != null) {
AudioSharingConfirmDialogFragment.show(mFragment);
}
});
return;
}
@@ -447,7 +445,8 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
@Override
public int getAvailabilityStatus() {
return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@Override
@@ -733,13 +732,8 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
};
AudioSharingUtils.postOnMainThread(
mContext,
() -> {
// Check nullability to pass NullAway check
if (mFragment != null) {
AudioSharingDialogFragment.show(
mFragment, mDeviceItemsForSharing, listener, eventData);
}
});
() -> AudioSharingDialogFragment.show(
mFragment, mDeviceItemsForSharing, listener, eventData));
}
private void showErrorDialog() {

View File

@@ -91,7 +91,8 @@ public class StreamSettingsCategoryController extends BasePreferenceController
@Override
public int getAvailabilityStatus() {
return BluetoothUtils.isAudioSharingEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return BluetoothUtils.isAudioSharingUIAvailable(mContext) ? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@Override

View File

@@ -214,15 +214,16 @@ public class AudioStreamConfirmDialog extends InstrumentedDialogFragment {
}
private int getDialogId(boolean hasMetadata, boolean hasConnectedDevice) {
if (!BluetoothUtils.isAudioSharingEnabled()) {
return SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_FEATURE_UNSUPPORTED;
}
if (BluetoothUtils.isAudioSharingUIAvailable(mContext)) {
if (!hasConnectedDevice) {
return SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_NO_LE_DEVICE;
}
return hasMetadata
? SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_LISTEN
: SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_DATA_ERROR;
} else {
return SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_FEATURE_UNSUPPORTED;
}
}
@Nullable

View File

@@ -50,7 +50,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity
@Override
protected void createUiFromIntent(@Nullable Bundle savedState, Intent intent) {
if (BluetoothUtils.isAudioSharingEnabled()
if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
Log.d(TAG, "createUiFromIntent() : supported but not ready, skip createUiFromIntent");
mSavedState = savedState;
@@ -67,7 +67,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity
@Override
public void onStart() {
if (BluetoothUtils.isAudioSharingEnabled()
if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& !AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
Log.d(TAG, "onStart() : supported but not ready, listen to service ready");
if (mProfileManager != null) {
@@ -87,7 +87,7 @@ public class AudioStreamConfirmDialogActivity extends SettingsActivity
@Override
public void onServiceConnected() {
if (BluetoothUtils.isAudioSharingEnabled()
if (BluetoothUtils.isAudioSharingUIAvailable(this)
&& AudioSharingUtils.isAudioSharingProfileReady(mProfileManager)) {
if (mProfileManager != null) {
mProfileManager.removeServiceListener(this);

View File

@@ -122,7 +122,7 @@ public class AudioStreamMediaService extends Service {
@Override
public void onCreate() {
if (!BluetoothUtils.isAudioSharingEnabled()) {
if (!BluetoothUtils.isAudioSharingUIAvailable(this)) {
return;
}
Log.d(TAG, "onCreate()");
@@ -181,9 +181,7 @@ public class AudioStreamMediaService extends Service {
public void onDestroy() {
Log.d(TAG, "onDestroy()");
super.onDestroy();
if (!BluetoothUtils.isAudioSharingEnabled()) {
return;
}
if (BluetoothUtils.isAudioSharingUIAvailable(this)) {
if (mDevices != null) {
mDevices.clear();
mDevices = null;
@@ -197,7 +195,8 @@ public class AudioStreamMediaService extends Service {
mExecutor.execute(
() -> {
if (mLocalBtManager != null) {
mLocalBtManager.getEventManager().unregisterCallback(mBluetoothCallback);
mLocalBtManager.getEventManager().unregisterCallback(
mBluetoothCallback);
}
if (mLeBroadcastAssistant != null && mBroadcastAssistantCallback != null) {
mLeBroadcastAssistant.unregisterServiceCallBack(
@@ -208,6 +207,7 @@ public class AudioStreamMediaService extends Service {
}
});
}
}
@Override
public int onStartCommand(@Nullable Intent intent, int flags, int startId) {