Loading src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java +32 −12 Original line number Diff line number Diff line Loading @@ -16,8 +16,12 @@ package com.android.settings.connecteddevice.audiosharing; import android.bluetooth.BluetoothAdapter; import android.content.Context; import androidx.annotation.NonNull; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading @@ -26,14 +30,18 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.flags.Flags; import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.utils.ThreadUtils; public abstract class AudioSharingBasePreferenceController extends BasePreferenceController { public abstract class AudioSharingBasePreferenceController extends BasePreferenceController implements DefaultLifecycleObserver { private final BluetoothAdapter mBluetoothAdapter; private final LocalBluetoothManager mBtManager; protected final LocalBluetoothLeBroadcast mBroadcast; protected Preference mPreference; public AudioSharingBasePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); mBtManager = Utils.getLocalBtManager(context); mBroadcast = mBtManager == null Loading @@ -43,28 +51,40 @@ public abstract class AudioSharingBasePreferenceController extends BasePreferenc @Override public int getAvailabilityStatus() { return mBtManager != null && Flags.enableLeAudioSharing() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; return Flags.enableLeAudioSharing() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); updateVisibility(isBroadcasting()); } /** * Update the visibility of the preference. * * @param isVisible the latest visibility state for the preference. */ public void updateVisibility(boolean isVisible) { mPreference.setVisible(isVisible); @Override public void onStart(@NonNull LifecycleOwner owner) { if (isAvailable()) { updateVisibility(); } } /** Update the visibility of the preference. */ protected void updateVisibility() { if (mPreference != null) { var unused = ThreadUtils.postOnBackgroundThread( () -> { boolean isVisible = isBroadcasting() && isBluetoothStateOn(); ThreadUtils.postOnMainThread( () -> mPreference.setVisible(isVisible)); }); } } protected boolean isBroadcasting() { return mBroadcast != null && mBroadcast.isEnabled(null); } protected boolean isBluetoothStateOn() { return mBluetoothAdapter != null && mBluetoothAdapter.isEnabled(); } } src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java +7 −7 Original line number Diff line number Diff line Loading @@ -93,14 +93,14 @@ public class AudioSharingDashboardFragment extends DashboardFragment } @Override public void onSwitchBarChanged(boolean newState) { updateVisibilityForAttachedPreferences(newState); public void onSwitchBarChanged() { updateVisibilityForAttachedPreferences(); } private void updateVisibilityForAttachedPreferences(boolean isVisible) { mAudioSharingDeviceVolumeGroupController.updateVisibility(isVisible); mCallsAndAlarmsPreferenceController.updateVisibility(isVisible); mAudioSharingNamePreferenceController.updateVisibility(isVisible); mAudioStreamsCategoryController.updateVisibility(isVisible); private void updateVisibilityForAttachedPreferences() { mAudioSharingDeviceVolumeGroupController.updateVisibility(); mCallsAndAlarmsPreferenceController.updateVisibility(); mAudioSharingNamePreferenceController.updateVisibility(); mAudioStreamsCategoryController.updateVisibility(); } } src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java +8 −5 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceGroup; Loading @@ -48,7 +47,7 @@ import java.util.concurrent.Executor; import java.util.concurrent.Executors; public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePreferenceController implements DefaultLifecycleObserver, DevicePreferenceCallback { implements DevicePreferenceCallback { private static final String TAG = "AudioSharingDeviceVolumeGroupController"; private static final String KEY = "audio_sharing_device_volume_group"; Loading Loading @@ -162,6 +161,7 @@ public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePre @Override public void onStart(@NonNull LifecycleOwner owner) { super.onStart(owner); if (mAssistant == null) { Log.d(TAG, "onStart() Broadcast or assistant is not supported on this device"); return; Loading @@ -176,6 +176,7 @@ public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePre @Override public void onStop(@NonNull LifecycleOwner owner) { super.onStop(owner); if (mAssistant == null) { Log.d(TAG, "onStop() Broadcast or assistant is not supported on this device"); return; Loading Loading @@ -233,10 +234,12 @@ public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePre } @Override public void updateVisibility(boolean isVisible) { super.updateVisibility(isVisible); public void updateVisibility() { if (mPreferenceGroup != null) { mPreferenceGroup.setVisible(mPreferenceGroup.getPreferenceCount() > 0); mPreferenceGroup.setVisible(false); if (mPreferenceGroup.getPreferenceCount() > 0) { super.updateVisibility(); } } } Loading src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java +3 −4 Original line number Diff line number Diff line Loading @@ -19,16 +19,13 @@ package com.android.settings.connecteddevice.audiosharing; import android.content.Context; import androidx.annotation.NonNull; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import com.android.settings.widget.ValidatedEditTextPreference; public class AudioSharingNamePreferenceController extends AudioSharingBasePreferenceController implements ValidatedEditTextPreference.Validator, Preference.OnPreferenceChangeListener, DefaultLifecycleObserver { implements ValidatedEditTextPreference.Validator, Preference.OnPreferenceChangeListener { private static final String TAG = "AudioSharingNamePreferenceController"; Loading Loading @@ -59,11 +56,13 @@ public class AudioSharingNamePreferenceController extends AudioSharingBasePrefer @Override public void onStart(@NonNull LifecycleOwner owner) { super.onStart(owner); // TODO } @Override public void onStop(@NonNull LifecycleOwner owner) { super.onStop(owner); // TODO } } src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java +19 −12 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; Loading Loading @@ -58,19 +59,20 @@ public class AudioSharingSwitchBarController extends BasePreferenceController private static final String PREF_KEY = "audio_sharing_main_switch"; interface OnSwitchBarChangedListener { void onSwitchBarChanged(boolean newState); void onSwitchBarChanged(); } private final SettingsMainSwitchBar mSwitchBar; private final BluetoothAdapter mBluetoothAdapter; private final IntentFilter mIntentFilter; private final LocalBluetoothManager mBtManager; private final LocalBluetoothLeBroadcast mBroadcast; private final LocalBluetoothLeBroadcastAssistant mAssistant; private final Executor mExecutor; private final OnSwitchBarChangedListener mListener; private DashboardFragment mFragment; @VisibleForTesting IntentFilter mIntentFilter; @VisibleForTesting BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override Loading @@ -80,6 +82,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothDevice.ERROR); mSwitchBar.setChecked(isBroadcasting()); mSwitchBar.setEnabled(adapterState == BluetoothAdapter.STATE_ON); mListener.onSwitchBarChanged(); } }; Loading Loading @@ -346,14 +349,18 @@ public class AudioSharingSwitchBarController extends BasePreferenceController } private void updateSwitch() { ThreadUtils.postOnMainThread( var unused = ThreadUtils.postOnBackgroundThread( () -> { boolean isBroadcasting = isBroadcasting(); ThreadUtils.postOnMainThread( () -> { if (mSwitchBar.isChecked() != isBroadcasting) { mSwitchBar.setChecked(isBroadcasting); } mSwitchBar.setEnabled(true); mListener.onSwitchBarChanged(isBroadcasting); mListener.onSwitchBarChanged(); }); }); } Loading Loading
src/com/android/settings/connecteddevice/audiosharing/AudioSharingBasePreferenceController.java +32 −12 Original line number Diff line number Diff line Loading @@ -16,8 +16,12 @@ package com.android.settings.connecteddevice.audiosharing; import android.bluetooth.BluetoothAdapter; import android.content.Context; import androidx.annotation.NonNull; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading @@ -26,14 +30,18 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.flags.Flags; import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.utils.ThreadUtils; public abstract class AudioSharingBasePreferenceController extends BasePreferenceController { public abstract class AudioSharingBasePreferenceController extends BasePreferenceController implements DefaultLifecycleObserver { private final BluetoothAdapter mBluetoothAdapter; private final LocalBluetoothManager mBtManager; protected final LocalBluetoothLeBroadcast mBroadcast; protected Preference mPreference; public AudioSharingBasePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); mBtManager = Utils.getLocalBtManager(context); mBroadcast = mBtManager == null Loading @@ -43,28 +51,40 @@ public abstract class AudioSharingBasePreferenceController extends BasePreferenc @Override public int getAvailabilityStatus() { return mBtManager != null && Flags.enableLeAudioSharing() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; return Flags.enableLeAudioSharing() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); updateVisibility(isBroadcasting()); } /** * Update the visibility of the preference. * * @param isVisible the latest visibility state for the preference. */ public void updateVisibility(boolean isVisible) { mPreference.setVisible(isVisible); @Override public void onStart(@NonNull LifecycleOwner owner) { if (isAvailable()) { updateVisibility(); } } /** Update the visibility of the preference. */ protected void updateVisibility() { if (mPreference != null) { var unused = ThreadUtils.postOnBackgroundThread( () -> { boolean isVisible = isBroadcasting() && isBluetoothStateOn(); ThreadUtils.postOnMainThread( () -> mPreference.setVisible(isVisible)); }); } } protected boolean isBroadcasting() { return mBroadcast != null && mBroadcast.isEnabled(null); } protected boolean isBluetoothStateOn() { return mBluetoothAdapter != null && mBluetoothAdapter.isEnabled(); } }
src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragment.java +7 −7 Original line number Diff line number Diff line Loading @@ -93,14 +93,14 @@ public class AudioSharingDashboardFragment extends DashboardFragment } @Override public void onSwitchBarChanged(boolean newState) { updateVisibilityForAttachedPreferences(newState); public void onSwitchBarChanged() { updateVisibilityForAttachedPreferences(); } private void updateVisibilityForAttachedPreferences(boolean isVisible) { mAudioSharingDeviceVolumeGroupController.updateVisibility(isVisible); mCallsAndAlarmsPreferenceController.updateVisibility(isVisible); mAudioSharingNamePreferenceController.updateVisibility(isVisible); mAudioStreamsCategoryController.updateVisibility(isVisible); private void updateVisibilityForAttachedPreferences() { mAudioSharingDeviceVolumeGroupController.updateVisibility(); mCallsAndAlarmsPreferenceController.updateVisibility(); mAudioSharingNamePreferenceController.updateVisibility(); mAudioStreamsCategoryController.updateVisibility(); } }
src/com/android/settings/connecteddevice/audiosharing/AudioSharingDeviceVolumeGroupController.java +8 −5 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceGroup; Loading @@ -48,7 +47,7 @@ import java.util.concurrent.Executor; import java.util.concurrent.Executors; public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePreferenceController implements DefaultLifecycleObserver, DevicePreferenceCallback { implements DevicePreferenceCallback { private static final String TAG = "AudioSharingDeviceVolumeGroupController"; private static final String KEY = "audio_sharing_device_volume_group"; Loading Loading @@ -162,6 +161,7 @@ public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePre @Override public void onStart(@NonNull LifecycleOwner owner) { super.onStart(owner); if (mAssistant == null) { Log.d(TAG, "onStart() Broadcast or assistant is not supported on this device"); return; Loading @@ -176,6 +176,7 @@ public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePre @Override public void onStop(@NonNull LifecycleOwner owner) { super.onStop(owner); if (mAssistant == null) { Log.d(TAG, "onStop() Broadcast or assistant is not supported on this device"); return; Loading Loading @@ -233,10 +234,12 @@ public class AudioSharingDeviceVolumeGroupController extends AudioSharingBasePre } @Override public void updateVisibility(boolean isVisible) { super.updateVisibility(isVisible); public void updateVisibility() { if (mPreferenceGroup != null) { mPreferenceGroup.setVisible(mPreferenceGroup.getPreferenceCount() > 0); mPreferenceGroup.setVisible(false); if (mPreferenceGroup.getPreferenceCount() > 0) { super.updateVisibility(); } } } Loading
src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java +3 −4 Original line number Diff line number Diff line Loading @@ -19,16 +19,13 @@ package com.android.settings.connecteddevice.audiosharing; import android.content.Context; import androidx.annotation.NonNull; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import com.android.settings.widget.ValidatedEditTextPreference; public class AudioSharingNamePreferenceController extends AudioSharingBasePreferenceController implements ValidatedEditTextPreference.Validator, Preference.OnPreferenceChangeListener, DefaultLifecycleObserver { implements ValidatedEditTextPreference.Validator, Preference.OnPreferenceChangeListener { private static final String TAG = "AudioSharingNamePreferenceController"; Loading Loading @@ -59,11 +56,13 @@ public class AudioSharingNamePreferenceController extends AudioSharingBasePrefer @Override public void onStart(@NonNull LifecycleOwner owner) { super.onStart(owner); // TODO } @Override public void onStop(@NonNull LifecycleOwner owner) { super.onStop(owner); // TODO } }
src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java +19 −12 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.lifecycle.LifecycleOwner; Loading Loading @@ -58,19 +59,20 @@ public class AudioSharingSwitchBarController extends BasePreferenceController private static final String PREF_KEY = "audio_sharing_main_switch"; interface OnSwitchBarChangedListener { void onSwitchBarChanged(boolean newState); void onSwitchBarChanged(); } private final SettingsMainSwitchBar mSwitchBar; private final BluetoothAdapter mBluetoothAdapter; private final IntentFilter mIntentFilter; private final LocalBluetoothManager mBtManager; private final LocalBluetoothLeBroadcast mBroadcast; private final LocalBluetoothLeBroadcastAssistant mAssistant; private final Executor mExecutor; private final OnSwitchBarChangedListener mListener; private DashboardFragment mFragment; @VisibleForTesting IntentFilter mIntentFilter; @VisibleForTesting BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override Loading @@ -80,6 +82,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothDevice.ERROR); mSwitchBar.setChecked(isBroadcasting()); mSwitchBar.setEnabled(adapterState == BluetoothAdapter.STATE_ON); mListener.onSwitchBarChanged(); } }; Loading Loading @@ -346,14 +349,18 @@ public class AudioSharingSwitchBarController extends BasePreferenceController } private void updateSwitch() { ThreadUtils.postOnMainThread( var unused = ThreadUtils.postOnBackgroundThread( () -> { boolean isBroadcasting = isBroadcasting(); ThreadUtils.postOnMainThread( () -> { if (mSwitchBar.isChecked() != isBroadcasting) { mSwitchBar.setChecked(isBroadcasting); } mSwitchBar.setEnabled(true); mListener.onSwitchBarChanged(isBroadcasting); mListener.onSwitchBarChanged(); }); }); } Loading