Loading res/xml/connected_devices.xml +1 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ <PreferenceCategory android:key="available_device_list" android:title="@string/connected_device_media_device_title" settings:controller="com.android.settings.connecteddevice.AvailableMediaDeviceGroupController" /> android:title="@string/connected_device_media_device_title"/> <PreferenceCategory android:key="connected_device_list" Loading src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java +53 −116 Original line number Diff line number Diff line Loading @@ -17,18 +17,17 @@ package com.android.settings.connecteddevice; import static com.android.settingslib.Utils.isAudioModeOngoingCall; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothLeBroadcastAssistant; import android.bluetooth.BluetoothLeBroadcastMetadata; import android.bluetooth.BluetoothLeBroadcastReceiveState; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.content.pm.PackageManager; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; Loading @@ -38,138 +37,66 @@ import com.android.settings.accessibility.HearingAidUtils; import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater; import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.Utils; import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils; import com.android.settings.core.BasePreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import com.android.settingslib.core.lifecycle.Lifecycle; /** * Controller to maintain the {@link androidx.preference.PreferenceGroup} for all available media * devices. It uses {@link DevicePreferenceCallback} to add/remove {@link Preference} */ public class AvailableMediaDeviceGroupController extends BasePreferenceController implements LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback, BluetoothCallback { implements DefaultLifecycleObserver, DevicePreferenceCallback, BluetoothCallback { private static final boolean DEBUG = BluetoothUtils.D; private static final String TAG = "AvailableMediaDeviceGroupController"; private static final String KEY = "available_device_list"; @VisibleForTesting PreferenceGroup mPreferenceGroup; @VisibleForTesting @Nullable PreferenceGroup mPreferenceGroup; @VisibleForTesting LocalBluetoothManager mLocalBluetoothManager; private final Executor mExecutor; private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private FragmentManager mFragmentManager; private BluetoothLeBroadcastAssistant.Callback mAssistantCallback = new BluetoothLeBroadcastAssistant.Callback() { @Override public void onSearchStarted(int reason) {} @Override public void onSearchStartFailed(int reason) {} @Override public void onSearchStopped(int reason) {} @Nullable private BluetoothDeviceUpdater mBluetoothDeviceUpdater; @Nullable private FragmentManager mFragmentManager; @Override public void onSearchStopFailed(int reason) {} @Override public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {} @Override public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) { mBluetoothDeviceUpdater.forceUpdate(); public AvailableMediaDeviceGroupController( Context context, @Nullable DashboardFragment fragment, @Nullable Lifecycle lifecycle) { super(context, KEY); if (fragment != null) { init(fragment); } @Override public void onSourceAddFailed( @NonNull BluetoothDevice sink, @NonNull BluetoothLeBroadcastMetadata source, int reason) {} @Override public void onSourceModified( @NonNull BluetoothDevice sink, int sourceId, int reason) {} @Override public void onSourceModifyFailed( @NonNull BluetoothDevice sink, int sourceId, int reason) {} @Override public void onSourceRemoved( @NonNull BluetoothDevice sink, int sourceId, int reason) { mBluetoothDeviceUpdater.forceUpdate(); if (lifecycle != null) { lifecycle.addObserver(this); } @Override public void onSourceRemoveFailed( @NonNull BluetoothDevice sink, int sourceId, int reason) {} @Override public void onReceiveStateChanged( BluetoothDevice sink, int sourceId, BluetoothLeBroadcastReceiveState state) {} }; public AvailableMediaDeviceGroupController(Context context) { super(context, KEY); mLocalBluetoothManager = Utils.getLocalBtManager(mContext); mExecutor = Executors.newSingleThreadExecutor(); } @Override public void onStart() { public void onStart(@NonNull LifecycleOwner owner) { if (mLocalBluetoothManager == null) { Log.e(TAG, "onStart() Bluetooth is not supported on this device"); return; } if (AudioSharingUtils.isFeatureEnabled()) { LocalBluetoothLeBroadcastAssistant assistant = mLocalBluetoothManager .getProfileManager() .getLeAudioBroadcastAssistantProfile(); if (assistant != null) { if (DEBUG) { Log.d(TAG, "onStart() Register callbacks for assistant."); } assistant.registerServiceCallBack(mExecutor, mAssistantCallback); } } mBluetoothDeviceUpdater.registerCallback(); mLocalBluetoothManager.getEventManager().registerCallback(this); if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.registerCallback(); mBluetoothDeviceUpdater.refreshPreference(); } } @Override public void onStop() { public void onStop(@NonNull LifecycleOwner owner) { if (mLocalBluetoothManager == null) { Log.e(TAG, "onStop() Bluetooth is not supported on this device"); return; } if (AudioSharingUtils.isFeatureEnabled()) { LocalBluetoothLeBroadcastAssistant assistant = mLocalBluetoothManager .getProfileManager() .getLeAudioBroadcastAssistantProfile(); if (assistant != null) { if (DEBUG) { Log.d(TAG, "onStop() Register callbacks for assistant."); } assistant.unregisterServiceCallBack(mAssistantCallback); } } if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.unregisterCallback(); } mLocalBluetoothManager.getEventManager().unregisterCallback(this); } Loading @@ -178,14 +105,18 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle super.displayPreference(screen); mPreferenceGroup = screen.findPreference(KEY); if (mPreferenceGroup != null) { mPreferenceGroup.setVisible(false); } if (isAvailable()) { updateTitle(); if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); mBluetoothDeviceUpdater.forceUpdate(); } } } @Override public int getAvailabilityStatus() { Loading @@ -201,19 +132,23 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle @Override public void onDeviceAdded(Preference preference) { if (mPreferenceGroup != null) { if (mPreferenceGroup.getPreferenceCount() == 0) { mPreferenceGroup.setVisible(true); } mPreferenceGroup.addPreference(preference); } } @Override public void onDeviceRemoved(Preference preference) { if (mPreferenceGroup != null) { mPreferenceGroup.removePreference(preference); if (mPreferenceGroup.getPreferenceCount() == 0) { mPreferenceGroup.setVisible(false); } } } public void init(DashboardFragment fragment) { mFragmentManager = fragment.getParentFragmentManager(); Loading Loading @@ -253,6 +188,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle } private void updateTitle() { if (mPreferenceGroup != null) { if (isAudioModeOngoingCall(mContext)) { // in phone call mPreferenceGroup.setTitle( Loading @@ -264,3 +200,4 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle } } } } src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java +12 −12 Original line number Diff line number Diff line Loading @@ -24,12 +24,10 @@ import android.util.Log; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils; import com.android.settings.core.SettingsUIDeviceConfig; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.overlay.FeatureFactory; Loading @@ -38,6 +36,7 @@ import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.slices.SlicePreferenceController; import com.android.settingslib.bluetooth.HearingAidStatsLogUtils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; Loading Loading @@ -92,7 +91,6 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment { + ", action : " + action); } use(AvailableMediaDeviceGroupController.class).init(this); use(ConnectedDeviceGroupController.class).init(this); use(PreviouslyConnectedDevicePreferenceController.class).init(this); use(SlicePreferenceController.class) Loading Loading @@ -124,16 +122,18 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment { @Nullable ConnectedDeviceDashboardFragment fragment, @Nullable Lifecycle lifecycle) { final List<AbstractPreferenceController> controllers = new ArrayList<>(); if (AudioSharingUtils.isFeatureEnabled()) { AbstractPreferenceController availableMediaController = FeatureFactory.getFeatureFactory() .getAudioSharingFeatureProvider() .createAvailableMediaDeviceGroupController(context, fragment, lifecycle); controllers.add(availableMediaController); AbstractPreferenceController audioSharingController = FeatureFactory.getFeatureFactory() .getAudioSharingFeatureProvider() .createAudioSharingDevicePreferenceController( context, fragment, lifecycle); .createAudioSharingDevicePreferenceController(context, fragment, lifecycle); if (audioSharingController != null) { controllers.add(audioSharingController); } } return controllers; } Loading src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java +7 −1 Original line number Diff line number Diff line Loading @@ -20,12 +20,12 @@ import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Lifecycle; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; /** Feature provider for the audio sharing related features, */ public interface AudioSharingFeatureProvider { Loading @@ -37,6 +37,12 @@ public interface AudioSharingFeatureProvider { @Nullable DashboardFragment fragment, @Nullable Lifecycle lifecycle); /** Create available media device preference controller. */ AbstractPreferenceController createAvailableMediaDeviceGroupController( @NonNull Context context, @Nullable DashboardFragment fragment, @Nullable Lifecycle lifecycle); /** * Check if the device match the audio sharing filter. * Loading src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java +10 −1 Original line number Diff line number Diff line Loading @@ -20,12 +20,13 @@ import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Lifecycle; import com.android.settings.connecteddevice.AvailableMediaDeviceGroupController; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; public class AudioSharingFeatureProviderImpl implements AudioSharingFeatureProvider { Loading @@ -38,6 +39,14 @@ public class AudioSharingFeatureProviderImpl implements AudioSharingFeatureProvi return null; } @Override public AbstractPreferenceController createAvailableMediaDeviceGroupController( @NonNull Context context, @Nullable DashboardFragment fragment, @Nullable Lifecycle lifecycle) { return new AvailableMediaDeviceGroupController(context, fragment, lifecycle); } @Override public boolean isAudioSharingFilterMatched( @NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager) { Loading Loading
res/xml/connected_devices.xml +1 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ <PreferenceCategory android:key="available_device_list" android:title="@string/connected_device_media_device_title" settings:controller="com.android.settings.connecteddevice.AvailableMediaDeviceGroupController" /> android:title="@string/connected_device_media_device_title"/> <PreferenceCategory android:key="connected_device_list" Loading
src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupController.java +53 −116 Original line number Diff line number Diff line Loading @@ -17,18 +17,17 @@ package com.android.settings.connecteddevice; import static com.android.settingslib.Utils.isAudioModeOngoingCall; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothLeBroadcastAssistant; import android.bluetooth.BluetoothLeBroadcastMetadata; import android.bluetooth.BluetoothLeBroadcastReceiveState; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.content.pm.PackageManager; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; Loading @@ -38,138 +37,66 @@ import com.android.settings.accessibility.HearingAidUtils; import com.android.settings.bluetooth.AvailableMediaBluetoothDeviceUpdater; import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.Utils; import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils; import com.android.settings.core.BasePreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import com.android.settingslib.core.lifecycle.Lifecycle; /** * Controller to maintain the {@link androidx.preference.PreferenceGroup} for all available media * devices. It uses {@link DevicePreferenceCallback} to add/remove {@link Preference} */ public class AvailableMediaDeviceGroupController extends BasePreferenceController implements LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback, BluetoothCallback { implements DefaultLifecycleObserver, DevicePreferenceCallback, BluetoothCallback { private static final boolean DEBUG = BluetoothUtils.D; private static final String TAG = "AvailableMediaDeviceGroupController"; private static final String KEY = "available_device_list"; @VisibleForTesting PreferenceGroup mPreferenceGroup; @VisibleForTesting @Nullable PreferenceGroup mPreferenceGroup; @VisibleForTesting LocalBluetoothManager mLocalBluetoothManager; private final Executor mExecutor; private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private FragmentManager mFragmentManager; private BluetoothLeBroadcastAssistant.Callback mAssistantCallback = new BluetoothLeBroadcastAssistant.Callback() { @Override public void onSearchStarted(int reason) {} @Override public void onSearchStartFailed(int reason) {} @Override public void onSearchStopped(int reason) {} @Nullable private BluetoothDeviceUpdater mBluetoothDeviceUpdater; @Nullable private FragmentManager mFragmentManager; @Override public void onSearchStopFailed(int reason) {} @Override public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {} @Override public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) { mBluetoothDeviceUpdater.forceUpdate(); public AvailableMediaDeviceGroupController( Context context, @Nullable DashboardFragment fragment, @Nullable Lifecycle lifecycle) { super(context, KEY); if (fragment != null) { init(fragment); } @Override public void onSourceAddFailed( @NonNull BluetoothDevice sink, @NonNull BluetoothLeBroadcastMetadata source, int reason) {} @Override public void onSourceModified( @NonNull BluetoothDevice sink, int sourceId, int reason) {} @Override public void onSourceModifyFailed( @NonNull BluetoothDevice sink, int sourceId, int reason) {} @Override public void onSourceRemoved( @NonNull BluetoothDevice sink, int sourceId, int reason) { mBluetoothDeviceUpdater.forceUpdate(); if (lifecycle != null) { lifecycle.addObserver(this); } @Override public void onSourceRemoveFailed( @NonNull BluetoothDevice sink, int sourceId, int reason) {} @Override public void onReceiveStateChanged( BluetoothDevice sink, int sourceId, BluetoothLeBroadcastReceiveState state) {} }; public AvailableMediaDeviceGroupController(Context context) { super(context, KEY); mLocalBluetoothManager = Utils.getLocalBtManager(mContext); mExecutor = Executors.newSingleThreadExecutor(); } @Override public void onStart() { public void onStart(@NonNull LifecycleOwner owner) { if (mLocalBluetoothManager == null) { Log.e(TAG, "onStart() Bluetooth is not supported on this device"); return; } if (AudioSharingUtils.isFeatureEnabled()) { LocalBluetoothLeBroadcastAssistant assistant = mLocalBluetoothManager .getProfileManager() .getLeAudioBroadcastAssistantProfile(); if (assistant != null) { if (DEBUG) { Log.d(TAG, "onStart() Register callbacks for assistant."); } assistant.registerServiceCallBack(mExecutor, mAssistantCallback); } } mBluetoothDeviceUpdater.registerCallback(); mLocalBluetoothManager.getEventManager().registerCallback(this); if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.registerCallback(); mBluetoothDeviceUpdater.refreshPreference(); } } @Override public void onStop() { public void onStop(@NonNull LifecycleOwner owner) { if (mLocalBluetoothManager == null) { Log.e(TAG, "onStop() Bluetooth is not supported on this device"); return; } if (AudioSharingUtils.isFeatureEnabled()) { LocalBluetoothLeBroadcastAssistant assistant = mLocalBluetoothManager .getProfileManager() .getLeAudioBroadcastAssistantProfile(); if (assistant != null) { if (DEBUG) { Log.d(TAG, "onStop() Register callbacks for assistant."); } assistant.unregisterServiceCallBack(mAssistantCallback); } } if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.unregisterCallback(); } mLocalBluetoothManager.getEventManager().unregisterCallback(this); } Loading @@ -178,14 +105,18 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle super.displayPreference(screen); mPreferenceGroup = screen.findPreference(KEY); if (mPreferenceGroup != null) { mPreferenceGroup.setVisible(false); } if (isAvailable()) { updateTitle(); if (mBluetoothDeviceUpdater != null) { mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); mBluetoothDeviceUpdater.forceUpdate(); } } } @Override public int getAvailabilityStatus() { Loading @@ -201,19 +132,23 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle @Override public void onDeviceAdded(Preference preference) { if (mPreferenceGroup != null) { if (mPreferenceGroup.getPreferenceCount() == 0) { mPreferenceGroup.setVisible(true); } mPreferenceGroup.addPreference(preference); } } @Override public void onDeviceRemoved(Preference preference) { if (mPreferenceGroup != null) { mPreferenceGroup.removePreference(preference); if (mPreferenceGroup.getPreferenceCount() == 0) { mPreferenceGroup.setVisible(false); } } } public void init(DashboardFragment fragment) { mFragmentManager = fragment.getParentFragmentManager(); Loading Loading @@ -253,6 +188,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle } private void updateTitle() { if (mPreferenceGroup != null) { if (isAudioModeOngoingCall(mContext)) { // in phone call mPreferenceGroup.setTitle( Loading @@ -264,3 +200,4 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle } } } }
src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java +12 −12 Original line number Diff line number Diff line Loading @@ -24,12 +24,10 @@ import android.util.Log; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.connecteddevice.audiosharing.AudioSharingUtils; import com.android.settings.core.SettingsUIDeviceConfig; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.overlay.FeatureFactory; Loading @@ -38,6 +36,7 @@ import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.slices.SlicePreferenceController; import com.android.settingslib.bluetooth.HearingAidStatsLogUtils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; Loading Loading @@ -92,7 +91,6 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment { + ", action : " + action); } use(AvailableMediaDeviceGroupController.class).init(this); use(ConnectedDeviceGroupController.class).init(this); use(PreviouslyConnectedDevicePreferenceController.class).init(this); use(SlicePreferenceController.class) Loading Loading @@ -124,16 +122,18 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment { @Nullable ConnectedDeviceDashboardFragment fragment, @Nullable Lifecycle lifecycle) { final List<AbstractPreferenceController> controllers = new ArrayList<>(); if (AudioSharingUtils.isFeatureEnabled()) { AbstractPreferenceController availableMediaController = FeatureFactory.getFeatureFactory() .getAudioSharingFeatureProvider() .createAvailableMediaDeviceGroupController(context, fragment, lifecycle); controllers.add(availableMediaController); AbstractPreferenceController audioSharingController = FeatureFactory.getFeatureFactory() .getAudioSharingFeatureProvider() .createAudioSharingDevicePreferenceController( context, fragment, lifecycle); .createAudioSharingDevicePreferenceController(context, fragment, lifecycle); if (audioSharingController != null) { controllers.add(audioSharingController); } } return controllers; } Loading
src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProvider.java +7 −1 Original line number Diff line number Diff line Loading @@ -20,12 +20,12 @@ import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Lifecycle; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; /** Feature provider for the audio sharing related features, */ public interface AudioSharingFeatureProvider { Loading @@ -37,6 +37,12 @@ public interface AudioSharingFeatureProvider { @Nullable DashboardFragment fragment, @Nullable Lifecycle lifecycle); /** Create available media device preference controller. */ AbstractPreferenceController createAvailableMediaDeviceGroupController( @NonNull Context context, @Nullable DashboardFragment fragment, @Nullable Lifecycle lifecycle); /** * Check if the device match the audio sharing filter. * Loading
src/com/android/settings/connecteddevice/audiosharing/AudioSharingFeatureProviderImpl.java +10 −1 Original line number Diff line number Diff line Loading @@ -20,12 +20,13 @@ import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Lifecycle; import com.android.settings.connecteddevice.AvailableMediaDeviceGroupController; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; public class AudioSharingFeatureProviderImpl implements AudioSharingFeatureProvider { Loading @@ -38,6 +39,14 @@ public class AudioSharingFeatureProviderImpl implements AudioSharingFeatureProvi return null; } @Override public AbstractPreferenceController createAvailableMediaDeviceGroupController( @NonNull Context context, @Nullable DashboardFragment fragment, @Nullable Lifecycle lifecycle) { return new AvailableMediaDeviceGroupController(context, fragment, lifecycle); } @Override public boolean isAudioSharingFilterMatched( @NonNull CachedBluetoothDevice cachedDevice, LocalBluetoothManager localBtManager) { Loading