Loading res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -12179,4 +12179,7 @@ <string name="media_controls_apps_title">Allowed apps</string> <!-- Keywords for the media controls setting [CHAR LIMIT=NONE]--> <string name="keywords_media_controls">media</string> <!-- Summary for see all preference when bluetooth is disable [CHAR LIMIT=none]--> <string name="connected_device_see_all_summary">Bluetooth will turn on</string> </resources> src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java +9 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; Loading @@ -42,13 +43,15 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater private static final String PREF_KEY = "saved_bt"; private final boolean mDisplayConnected; @VisibleForTesting BluetoothAdapter mBluetoothAdapter; public SavedBluetoothDeviceUpdater(Context context, DashboardFragment fragment, DevicePreferenceCallback devicePreferenceCallback) { super(context, fragment, devicePreferenceCallback); mDisplayConnected = (fragment instanceof PreviouslyConnectedDeviceDashboardFragment); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); } Loading Loading @@ -101,7 +104,8 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater ", is connected : " + device.isConnected() + ", is profile connected : " + cachedDevice.isConnected()); } return device.getBondState() == BluetoothDevice.BOND_BONDED && !device.isConnected(); return device.getBondState() == BluetoothDevice.BOND_BONDED && (mDisplayConnected || !device.isConnected()); } @Override Loading @@ -109,6 +113,9 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater mMetricsFeatureProvider.logClickedPreference(preference, mFragment.getMetricsCategory()); final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference) .getBluetoothDevice(); if (device.isConnected()) { return device.setActive(); } device.connect(); return true; } Loading src/com/android/settings/connecteddevice/PreviouslyConnectedDeviceDashboardFragment.java +27 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,11 @@ package com.android.settings.connecteddevice; import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.os.Bundle; import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; Loading @@ -32,6 +36,9 @@ public class PreviouslyConnectedDeviceDashboardFragment extends DashboardFragmen private static final String TAG = "PreConnectedDeviceFrag"; static final String KEY_PREVIOUSLY_CONNECTED_DEVICES = "saved_device_list"; @VisibleForTesting BluetoothAdapter mBluetoothAdapter; @Override public int getHelpResource() { return R.string.help_url_previously_connected_devices; Loading @@ -52,12 +59,32 @@ public class PreviouslyConnectedDeviceDashboardFragment extends DashboardFragmen return SettingsEnums.PREVIOUSLY_CONNECTED_DEVICES; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); } @Override public void onAttach(Context context) { super.onAttach(context); use(SavedDeviceGroupController.class).init(this); } @Override public void onStart() { super.onStart(); enableBluetoothIfNecessary(); } @VisibleForTesting void enableBluetoothIfNecessary() { if (mBluetoothAdapter != null && !mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.enable(); } } /** * For Search. */ Loading src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java +35 −5 Original line number Diff line number Diff line Loading @@ -15,7 +15,11 @@ */ package com.android.settings.connecteddevice; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import androidx.annotation.VisibleForTesting; Loading @@ -23,6 +27,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.SavedBluetoothDeviceUpdater; import com.android.settings.connecteddevice.dock.DockUpdater; Loading @@ -37,17 +42,34 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc implements LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback { private static final int MAX_DEVICE_NUM = 3; private static final String KEY_SEE_ALL = "previously_connected_devices_see_all"; private PreferenceGroup mPreferenceGroup; private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private DockUpdater mSavedDockUpdater; private int mPreferenceSize; private BluetoothAdapter mBluetoothAdapter; @VisibleForTesting Preference mSeeAllPreference; @VisibleForTesting IntentFilter mIntentFilter; @VisibleForTesting BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updatePreferenceVisibility(); } }; public PreviouslyConnectedDevicePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mSavedDockUpdater = FeatureFactory.getFactory( context).getDockUpdaterFeatureProvider().getSavedDockUpdater(context, this); mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); } @Override Loading @@ -62,7 +84,8 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreferenceGroup = screen.findPreference(getPreferenceKey()); mPreferenceGroup.setVisible(false); mSeeAllPreference = mPreferenceGroup.findPreference(KEY_SEE_ALL); updatePreferenceVisibility(); if (isAvailable()) { final Context context = screen.getContext(); Loading @@ -75,12 +98,14 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc public void onStart() { mBluetoothDeviceUpdater.registerCallback(); mSavedDockUpdater.registerCallback(); mContext.registerReceiver(mReceiver, mIntentFilter); } @Override public void onStop() { mBluetoothDeviceUpdater.unregisterCallback(); mSavedDockUpdater.unregisterCallback(); mContext.unregisterReceiver(mReceiver); } public void init(DashboardFragment fragment) { Loading @@ -94,14 +119,14 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc if (mPreferenceSize <= MAX_DEVICE_NUM) { mPreferenceGroup.addPreference(preference); } updatePreferenceVisiblity(); updatePreferenceVisibility(); } @Override public void onDeviceRemoved(Preference preference) { mPreferenceSize--; mPreferenceGroup.removePreference(preference); updatePreferenceVisiblity(); updatePreferenceVisibility(); } @VisibleForTesting Loading @@ -120,7 +145,12 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc } @VisibleForTesting void updatePreferenceVisiblity() { mPreferenceGroup.setVisible(mPreferenceSize > 0); void updatePreferenceVisibility() { if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) { mSeeAllPreference.setSummary(""); } else { mSeeAllPreference.setSummary( mContext.getString(R.string.connected_device_see_all_summary)); } } } src/com/android/settings/media/MediaOutputSlice.java +8 −3 Original line number Diff line number Diff line Loading @@ -106,10 +106,15 @@ public class MediaOutputSlice implements CustomSliceable { final MediaDevice connectedDevice = worker.getCurrentConnectedMediaDevice(); if (devices.size() == 1) { // Zero state for (MediaDevice device : devices) { final MediaDevice device = devices.iterator().next(); addRow(device, device, listBuilder); } // Add "pair new" only when local output device exists final int type = device.getDeviceType(); if (type == MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE || type == MediaDevice.MediaDeviceType.TYPE_3POINT5_MM_AUDIO_DEVICE || type == MediaDevice.MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE) { listBuilder.addRow(getPairNewRow()); } } else { final boolean isTouched = worker.getIsTouched(); // Fix the last top device when user press device to transfer. Loading Loading
res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -12179,4 +12179,7 @@ <string name="media_controls_apps_title">Allowed apps</string> <!-- Keywords for the media controls setting [CHAR LIMIT=NONE]--> <string name="keywords_media_controls">media</string> <!-- Summary for see all preference when bluetooth is disable [CHAR LIMIT=none]--> <string name="connected_device_see_all_summary">Bluetooth will turn on</string> </resources>
src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java +9 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.connecteddevice.PreviouslyConnectedDeviceDashboardFragment; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; Loading @@ -42,13 +43,15 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater private static final String PREF_KEY = "saved_bt"; private final boolean mDisplayConnected; @VisibleForTesting BluetoothAdapter mBluetoothAdapter; public SavedBluetoothDeviceUpdater(Context context, DashboardFragment fragment, DevicePreferenceCallback devicePreferenceCallback) { super(context, fragment, devicePreferenceCallback); mDisplayConnected = (fragment instanceof PreviouslyConnectedDeviceDashboardFragment); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); } Loading Loading @@ -101,7 +104,8 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater ", is connected : " + device.isConnected() + ", is profile connected : " + cachedDevice.isConnected()); } return device.getBondState() == BluetoothDevice.BOND_BONDED && !device.isConnected(); return device.getBondState() == BluetoothDevice.BOND_BONDED && (mDisplayConnected || !device.isConnected()); } @Override Loading @@ -109,6 +113,9 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater mMetricsFeatureProvider.logClickedPreference(preference, mFragment.getMetricsCategory()); final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference) .getBluetoothDevice(); if (device.isConnected()) { return device.setActive(); } device.connect(); return true; } Loading
src/com/android/settings/connecteddevice/PreviouslyConnectedDeviceDashboardFragment.java +27 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,11 @@ package com.android.settings.connecteddevice; import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.os.Bundle; import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; Loading @@ -32,6 +36,9 @@ public class PreviouslyConnectedDeviceDashboardFragment extends DashboardFragmen private static final String TAG = "PreConnectedDeviceFrag"; static final String KEY_PREVIOUSLY_CONNECTED_DEVICES = "saved_device_list"; @VisibleForTesting BluetoothAdapter mBluetoothAdapter; @Override public int getHelpResource() { return R.string.help_url_previously_connected_devices; Loading @@ -52,12 +59,32 @@ public class PreviouslyConnectedDeviceDashboardFragment extends DashboardFragmen return SettingsEnums.PREVIOUSLY_CONNECTED_DEVICES; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); } @Override public void onAttach(Context context) { super.onAttach(context); use(SavedDeviceGroupController.class).init(this); } @Override public void onStart() { super.onStart(); enableBluetoothIfNecessary(); } @VisibleForTesting void enableBluetoothIfNecessary() { if (mBluetoothAdapter != null && !mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.enable(); } } /** * For Search. */ Loading
src/com/android/settings/connecteddevice/PreviouslyConnectedDevicePreferenceController.java +35 −5 Original line number Diff line number Diff line Loading @@ -15,7 +15,11 @@ */ package com.android.settings.connecteddevice; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import androidx.annotation.VisibleForTesting; Loading @@ -23,6 +27,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.SavedBluetoothDeviceUpdater; import com.android.settings.connecteddevice.dock.DockUpdater; Loading @@ -37,17 +42,34 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc implements LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback { private static final int MAX_DEVICE_NUM = 3; private static final String KEY_SEE_ALL = "previously_connected_devices_see_all"; private PreferenceGroup mPreferenceGroup; private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private DockUpdater mSavedDockUpdater; private int mPreferenceSize; private BluetoothAdapter mBluetoothAdapter; @VisibleForTesting Preference mSeeAllPreference; @VisibleForTesting IntentFilter mIntentFilter; @VisibleForTesting BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updatePreferenceVisibility(); } }; public PreviouslyConnectedDevicePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mSavedDockUpdater = FeatureFactory.getFactory( context).getDockUpdaterFeatureProvider().getSavedDockUpdater(context, this); mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); } @Override Loading @@ -62,7 +84,8 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreferenceGroup = screen.findPreference(getPreferenceKey()); mPreferenceGroup.setVisible(false); mSeeAllPreference = mPreferenceGroup.findPreference(KEY_SEE_ALL); updatePreferenceVisibility(); if (isAvailable()) { final Context context = screen.getContext(); Loading @@ -75,12 +98,14 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc public void onStart() { mBluetoothDeviceUpdater.registerCallback(); mSavedDockUpdater.registerCallback(); mContext.registerReceiver(mReceiver, mIntentFilter); } @Override public void onStop() { mBluetoothDeviceUpdater.unregisterCallback(); mSavedDockUpdater.unregisterCallback(); mContext.unregisterReceiver(mReceiver); } public void init(DashboardFragment fragment) { Loading @@ -94,14 +119,14 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc if (mPreferenceSize <= MAX_DEVICE_NUM) { mPreferenceGroup.addPreference(preference); } updatePreferenceVisiblity(); updatePreferenceVisibility(); } @Override public void onDeviceRemoved(Preference preference) { mPreferenceSize--; mPreferenceGroup.removePreference(preference); updatePreferenceVisiblity(); updatePreferenceVisibility(); } @VisibleForTesting Loading @@ -120,7 +145,12 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc } @VisibleForTesting void updatePreferenceVisiblity() { mPreferenceGroup.setVisible(mPreferenceSize > 0); void updatePreferenceVisibility() { if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) { mSeeAllPreference.setSummary(""); } else { mSeeAllPreference.setSummary( mContext.getString(R.string.connected_device_see_all_summary)); } } }
src/com/android/settings/media/MediaOutputSlice.java +8 −3 Original line number Diff line number Diff line Loading @@ -106,10 +106,15 @@ public class MediaOutputSlice implements CustomSliceable { final MediaDevice connectedDevice = worker.getCurrentConnectedMediaDevice(); if (devices.size() == 1) { // Zero state for (MediaDevice device : devices) { final MediaDevice device = devices.iterator().next(); addRow(device, device, listBuilder); } // Add "pair new" only when local output device exists final int type = device.getDeviceType(); if (type == MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE || type == MediaDevice.MediaDeviceType.TYPE_3POINT5_MM_AUDIO_DEVICE || type == MediaDevice.MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE) { listBuilder.addRow(getPairNewRow()); } } else { final boolean isTouched = worker.getIsTouched(); // Fix the last top device when user press device to transfer. Loading