[Audiosharing] Add feature gates as utils.
Flagged with enable_le_audio_sharing Bug: 305620450 Test: manual Change-Id: I022174b5b40300b46b7b8dd78c7cddf541ed2aec
This commit is contained in:
@@ -28,9 +28,9 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.connecteddevice.audiosharing.AudioSharingDevicePreferenceController;
|
import com.android.settings.connecteddevice.audiosharing.AudioSharingDevicePreferenceController;
|
||||||
|
import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils;
|
||||||
import com.android.settings.core.SettingsUIDeviceConfig;
|
import com.android.settings.core.SettingsUIDeviceConfig;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.overlay.SurveyFeatureProvider;
|
import com.android.settings.overlay.SurveyFeatureProvider;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
@@ -87,7 +87,7 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
|
|||||||
+ ", action : "
|
+ ", action : "
|
||||||
+ action);
|
+ action);
|
||||||
}
|
}
|
||||||
if (Flags.enableLeAudioSharing()) {
|
if (AudioSharingUtils.isFeatureEnabled()) {
|
||||||
use(AudioSharingDevicePreferenceController.class).init(this);
|
use(AudioSharingDevicePreferenceController.class).init(this);
|
||||||
}
|
}
|
||||||
use(AvailableMediaDeviceGroupController.class).init(this);
|
use(AvailableMediaDeviceGroupController.class).init(this);
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import androidx.preference.PreferenceScreen;
|
|||||||
|
|
||||||
import com.android.settings.bluetooth.Utils;
|
import com.android.settings.bluetooth.Utils;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
|
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||||
import com.android.settingslib.utils.ThreadUtils;
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
@@ -51,7 +50,7 @@ public abstract class AudioSharingBasePreferenceController extends BasePreferenc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return Flags.enableLeAudioSharing() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import android.bluetooth.BluetoothLeBroadcastMetadata;
|
|||||||
import android.bluetooth.BluetoothLeBroadcastReceiveState;
|
import android.bluetooth.BluetoothLeBroadcastReceiveState;
|
||||||
import android.bluetooth.BluetoothProfile;
|
import android.bluetooth.BluetoothProfile;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -39,7 +38,6 @@ import com.android.settings.bluetooth.Utils;
|
|||||||
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
import com.android.settings.connecteddevice.DevicePreferenceCallback;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
import com.android.settingslib.bluetooth.BluetoothCallback;
|
import com.android.settingslib.bluetooth.BluetoothCallback;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
import com.android.settingslib.bluetooth.LeAudioProfile;
|
import com.android.settingslib.bluetooth.LeAudioProfile;
|
||||||
@@ -309,9 +307,7 @@ public class AudioSharingDevicePreferenceController extends BasePreferenceContro
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)
|
return AudioSharingUtils.isFeatureEnabled() && mBluetoothDeviceUpdater != null
|
||||||
&& Flags.enableLeAudioSharing()
|
|
||||||
&& mBluetoothDeviceUpdater != null
|
|
||||||
? AVAILABLE_UNSEARCHABLE
|
? AVAILABLE_UNSEARCHABLE
|
||||||
: UNSUPPORTED_ON_DEVICE;
|
: UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import com.android.internal.widget.LinearLayoutManager;
|
|||||||
import com.android.internal.widget.RecyclerView;
|
import com.android.internal.widget.RecyclerView;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
@@ -73,7 +72,7 @@ public class AudioSharingDialogFragment extends InstrumentedDialogFragment {
|
|||||||
Fragment host,
|
Fragment host,
|
||||||
ArrayList<AudioSharingDeviceItem> deviceItems,
|
ArrayList<AudioSharingDeviceItem> deviceItems,
|
||||||
DialogEventListener listener) {
|
DialogEventListener listener) {
|
||||||
if (!Flags.enableLeAudioSharing()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager = host.getChildFragmentManager();
|
||||||
sListener = listener;
|
sListener = listener;
|
||||||
if (manager.findFragmentByTag(TAG) == null) {
|
if (manager.findFragmentByTag(TAG) == null) {
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import com.android.internal.widget.LinearLayoutManager;
|
|||||||
import com.android.internal.widget.RecyclerView;
|
import com.android.internal.widget.RecyclerView;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@@ -66,13 +65,16 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag
|
|||||||
* Display the {@link AudioSharingDisconnectDialogFragment} dialog.
|
* Display the {@link AudioSharingDisconnectDialogFragment} dialog.
|
||||||
*
|
*
|
||||||
* @param host The Fragment this dialog will be hosted.
|
* @param host The Fragment this dialog will be hosted.
|
||||||
|
* @param deviceItems The existing connected device items in audio sharing session.
|
||||||
|
* @param newDeviceName The name of the latest connected device triggered this dialog.
|
||||||
|
* @param listener The callback to handle the user action on this dialog.
|
||||||
*/
|
*/
|
||||||
public static void show(
|
public static void show(
|
||||||
Fragment host,
|
Fragment host,
|
||||||
ArrayList<AudioSharingDeviceItem> deviceItems,
|
ArrayList<AudioSharingDeviceItem> deviceItems,
|
||||||
String newDeviceName,
|
String newDeviceName,
|
||||||
DialogEventListener listener) {
|
DialogEventListener listener) {
|
||||||
if (!Flags.enableLeAudioSharing()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager = host.getChildFragmentManager();
|
||||||
sListener = listener;
|
sListener = listener;
|
||||||
if (manager.findFragmentByTag(TAG) == null) {
|
if (manager.findFragmentByTag(TAG) == null) {
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import androidx.fragment.app.FragmentManager;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
@@ -69,7 +68,7 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment {
|
|||||||
ArrayList<AudioSharingDeviceItem> deviceItems,
|
ArrayList<AudioSharingDeviceItem> deviceItems,
|
||||||
String newDeviceName,
|
String newDeviceName,
|
||||||
DialogEventListener listener) {
|
DialogEventListener listener) {
|
||||||
if (!Flags.enableLeAudioSharing()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager = host.getChildFragmentManager();
|
||||||
sListener = listener;
|
sListener = listener;
|
||||||
if (manager.findFragmentByTag(TAG) == null) {
|
if (manager.findFragmentByTag(TAG) == null) {
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ package com.android.settings.connecteddevice.audiosharing;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
|
|
||||||
public class AudioSharingPreferenceController extends BasePreferenceController {
|
public class AudioSharingPreferenceController extends BasePreferenceController {
|
||||||
private static final String TAG = "AudioSharingPreferenceController";
|
private static final String TAG = "AudioSharingPreferenceController";
|
||||||
@@ -33,6 +32,6 @@ public class AudioSharingPreferenceController extends BasePreferenceController {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return Flags.enableLeAudioSharing() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import androidx.fragment.app.Fragment;
|
|||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
|
|
||||||
public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
|
public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
|
||||||
private static final String TAG = "AudioSharingStopDialog";
|
private static final String TAG = "AudioSharingStopDialog";
|
||||||
@@ -50,9 +49,11 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment {
|
|||||||
* Display the {@link AudioSharingStopDialogFragment} dialog.
|
* Display the {@link AudioSharingStopDialogFragment} dialog.
|
||||||
*
|
*
|
||||||
* @param host The Fragment this dialog will be hosted.
|
* @param host The Fragment this dialog will be hosted.
|
||||||
|
* @param newDeviceName The name of the latest connected device triggered this dialog.
|
||||||
|
* @param listener The callback to handle the user action on this dialog.
|
||||||
*/
|
*/
|
||||||
public static void show(Fragment host, String newDeviceName, DialogEventListener listener) {
|
public static void show(Fragment host, String newDeviceName, DialogEventListener listener) {
|
||||||
if (!Flags.enableLeAudioSharing()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager = host.getChildFragmentManager();
|
||||||
sListener = listener;
|
sListener = listener;
|
||||||
if (manager.findFragmentByTag(TAG) == null) {
|
if (manager.findFragmentByTag(TAG) == null) {
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ import androidx.lifecycle.LifecycleOwner;
|
|||||||
import com.android.settings.bluetooth.Utils;
|
import com.android.settings.bluetooth.Utils;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
import com.android.settings.widget.SettingsMainSwitchBar;
|
import com.android.settings.widget.SettingsMainSwitchBar;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
|
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
|
||||||
@@ -315,7 +314,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return Flags.enableLeAudioSharing() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -20,10 +20,12 @@ import android.bluetooth.BluetoothAdapter;
|
|||||||
import android.bluetooth.BluetoothCsipSetCoordinator;
|
import android.bluetooth.BluetoothCsipSetCoordinator;
|
||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
import android.bluetooth.BluetoothLeBroadcastReceiveState;
|
import android.bluetooth.BluetoothLeBroadcastReceiveState;
|
||||||
|
import android.bluetooth.BluetoothStatusCodes;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.android.settings.flags.Flags;
|
||||||
import com.android.settingslib.bluetooth.BluetoothUtils;
|
import com.android.settingslib.bluetooth.BluetoothUtils;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||||
@@ -244,9 +246,8 @@ public class AudioSharingUtils {
|
|||||||
Log.w(TAG, "getActiveSinksOnAssistant(): LocalBluetoothManager is null!");
|
Log.w(TAG, "getActiveSinksOnAssistant(): LocalBluetoothManager is null!");
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
var groupedDevices = AudioSharingUtils.fetchConnectedDevicesByGroupId(manager);
|
var groupedDevices = fetchConnectedDevicesByGroupId(manager);
|
||||||
var leadDevices =
|
var leadDevices = buildOrderedConnectedLeadDevices(manager, groupedDevices, false);
|
||||||
AudioSharingUtils.buildOrderedConnectedLeadDevices(manager, groupedDevices, false);
|
|
||||||
|
|
||||||
if (!leadDevices.isEmpty() && AudioSharingUtils.isActiveLeAudioDevice(leadDevices.get(0))) {
|
if (!leadDevices.isEmpty() && AudioSharingUtils.isActiveLeAudioDevice(leadDevices.get(0))) {
|
||||||
return Optional.of(leadDevices.get(0));
|
return Optional.of(leadDevices.get(0));
|
||||||
@@ -262,6 +263,16 @@ public class AudioSharingUtils {
|
|||||||
() -> Toast.makeText(context, message, Toast.LENGTH_LONG).show());
|
() -> Toast.makeText(context, message, Toast.LENGTH_LONG).show());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns if the le audio sharing is enabled. */
|
||||||
|
public static boolean isFeatureEnabled() {
|
||||||
|
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
|
||||||
|
return Flags.enableLeAudioSharing()
|
||||||
|
&& adapter.isLeAudioBroadcastSourceSupported()
|
||||||
|
== BluetoothStatusCodes.FEATURE_SUPPORTED
|
||||||
|
&& adapter.isLeAudioBroadcastAssistantSupported()
|
||||||
|
== BluetoothStatusCodes.FEATURE_SUPPORTED;
|
||||||
|
}
|
||||||
|
|
||||||
/** Automatically update active device if needed. */
|
/** Automatically update active device if needed. */
|
||||||
public static void updateActiveDeviceIfNeeded(LocalBluetoothManager localBtManager) {
|
public static void updateActiveDeviceIfNeeded(LocalBluetoothManager localBtManager) {
|
||||||
if (localBtManager == null) return;
|
if (localBtManager == null) return;
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import androidx.fragment.app.FragmentManager;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@@ -64,7 +63,7 @@ public class CallsAndAlarmsDialogFragment extends InstrumentedDialogFragment {
|
|||||||
Fragment host,
|
Fragment host,
|
||||||
ArrayList<AudioSharingDeviceItem> deviceItems,
|
ArrayList<AudioSharingDeviceItem> deviceItems,
|
||||||
DialogEventListener listener) {
|
DialogEventListener listener) {
|
||||||
if (!Flags.enableLeAudioSharing()) return;
|
if (!AudioSharingUtils.isFeatureEnabled()) return;
|
||||||
final FragmentManager manager = host.getChildFragmentManager();
|
final FragmentManager manager = host.getChildFragmentManager();
|
||||||
sListener = listener;
|
sListener = listener;
|
||||||
if (manager.findFragmentByTag(TAG) == null) {
|
if (manager.findFragmentByTag(TAG) == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user