From: timhypeng Date: Tue, 24 Apr 2018 13:45:23 +0000 (+0800) Subject: Click left side of list in "previously connected devices" should connect to the device X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1ae09fe2bf8840f93766840a1106c7a543848b39;p=android-x86%2Fpackages-apps-Settings.git Click left side of list in "previously connected devices" should connect to the device * For fix the TreeHugger error in pi-dev, cherry pick the ag/3943978 in master and fix TreeHugger error. Change android.support.v7.* to androidx.* * In "previously connected devices", to connect device * In "Available media devices", to activate device Bug: 77607104 Test: make -j50 RunSettingsRoboTests Change-Id: If5005031bd3f5dc4950abf2c77575785cd6f67b1 --- diff --git a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java index 856410e884..9a287f1786 100644 --- a/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdater.java @@ -18,8 +18,9 @@ package com.android.settings.bluetooth; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.media.AudioManager; -import androidx.annotation.VisibleForTesting; import android.util.Log; +import androidx.annotation.VisibleForTesting; +import androidx.preference.Preference; import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.dashboard.DashboardFragment; @@ -29,7 +30,8 @@ import com.android.settingslib.bluetooth.CachedBluetoothDevice; /** * Controller to maintain available media Bluetooth devices */ -public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater { +public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater + implements Preference.OnPreferenceClickListener { private static final String TAG = "AvailableMediaBluetoothDeviceUpdater"; private static final boolean DBG = false; @@ -116,5 +118,12 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater } return isFilterMatched; } + + @Override + public boolean onPreferenceClick(Preference preference) { + final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference) + .getBluetoothDevice(); + return device.setActive(); + } } diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java index 4dc6a245ce..f7fadf2357 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceUpdater.java @@ -59,24 +59,12 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback, protected DashboardFragment mFragment; private final boolean mShowDeviceWithoutNames; - private Preference.OnPreferenceClickListener mDevicePreferenceClickListener = null; @VisibleForTesting final GearPreference.OnGearClickListener mDeviceProfilesListener = pref -> { launchDeviceDetails(pref); }; - private class PreferenceClickListener implements - Preference.OnPreferenceClickListener { - @Override - public boolean onPreferenceClick(Preference preference) { - final CachedBluetoothDevice device = - ((BluetoothDevicePreference) preference).getBluetoothDevice(); - Log.i(TAG, "OnPreferenceClickListener: device=" + device); - return device.setActive(); - } - } - public BluetoothDeviceUpdater(Context context, DashboardFragment fragment, DevicePreferenceCallback devicePreferenceCallback) { this(fragment, devicePreferenceCallback, Utils.getLocalBtManager(context)); @@ -91,7 +79,6 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback, BLUETOOTH_SHOW_DEVICES_WITHOUT_NAMES_PROPERTY, false); mPreferenceMap = new HashMap<>(); mLocalManager = localManager; - mDevicePreferenceClickListener = new PreferenceClickListener(); } /** @@ -212,7 +199,10 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback, new BluetoothDevicePreference(mPrefContext, cachedDevice, mShowDeviceWithoutNames); btPreference.setOnGearClickListener(mDeviceProfilesListener); - btPreference.setOnPreferenceClickListener(mDevicePreferenceClickListener); + if (this instanceof Preference.OnPreferenceClickListener) { + btPreference.setOnPreferenceClickListener( + (Preference.OnPreferenceClickListener)this); + } mPreferenceMap.put(device, btPreference); mDevicePreferenceCallback.onDeviceAdded(btPreference); } diff --git a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java index 1cefea107c..b5cdaa6426 100644 --- a/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java +++ b/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdater.java @@ -19,16 +19,20 @@ import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; import androidx.annotation.VisibleForTesting; +import androidx.preference.Preference; import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothManager; +import android.util.Log; /** * Maintain and update saved bluetooth devices(bonded but not connected) */ -public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater { +public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater + implements Preference.OnPreferenceClickListener { + private static final String TAG = "SavedBluetoothDeviceUpdater"; public SavedBluetoothDeviceUpdater(Context context, DashboardFragment fragment, DevicePreferenceCallback devicePreferenceCallback) { @@ -57,4 +61,12 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater { final BluetoothDevice device = cachedDevice.getDevice(); return device.getBondState() == BluetoothDevice.BOND_BONDED && !device.isConnected(); } + + @Override + public boolean onPreferenceClick(Preference preference) { + final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference) + .getBluetoothDevice(); + device.connect(true); + return true; + } } diff --git a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java index ed9501554e..ced8fc4a2e 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java @@ -73,6 +73,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { private AvailableMediaBluetoothDeviceUpdater mBluetoothDeviceUpdater; private Collection cachedDevices; private ShadowAudioManager mShadowAudioManager; + private BluetoothDevicePreference mPreference; @Before public void setUp() { @@ -93,6 +94,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { mBluetoothDeviceUpdater = spy(new AvailableMediaBluetoothDeviceUpdater(mDashboardFragment, mDevicePreferenceCallback, mLocalManager)); mBluetoothDeviceUpdater.setPrefContext(mContext); + mPreference = new BluetoothDevicePreference(mContext, mCachedBluetoothDevice, false); doNothing().when(mBluetoothDeviceUpdater).addPreference(any()); doNothing().when(mBluetoothDeviceUpdater).removePreference(any()); } @@ -208,5 +210,12 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { verify(mBluetoothDeviceUpdater).removePreference(mCachedBluetoothDevice); } + + @Test + public void onClick_Preference_setActive() { + mBluetoothDeviceUpdater.onPreferenceClick(mPreference); + + verify(mCachedBluetoothDevice).setActive(); + } } diff --git a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java index fae014f7b1..547727bece 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/SavedBluetoothDeviceUpdaterTest.java @@ -57,7 +57,8 @@ public class SavedBluetoothDeviceUpdaterTest { private LocalBluetoothProfileManager mLocalBluetoothProfileManager; private Context mContext; - private BluetoothDeviceUpdater mBluetoothDeviceUpdater; + private SavedBluetoothDeviceUpdater mBluetoothDeviceUpdater; + private BluetoothDevicePreference mPreference; @Before public void setUp() { @@ -71,6 +72,7 @@ public class SavedBluetoothDeviceUpdaterTest { mBluetoothDeviceUpdater = spy(new SavedBluetoothDeviceUpdater(mDashboardFragment, mDevicePreferenceCallback, mLocalManager)); mBluetoothDeviceUpdater.setPrefContext(mContext); + mPreference = new BluetoothDevicePreference(mContext, mCachedBluetoothDevice, false); doNothing().when(mBluetoothDeviceUpdater).addPreference(any()); doNothing().when(mBluetoothDeviceUpdater).removePreference(any()); } @@ -110,4 +112,11 @@ public class SavedBluetoothDeviceUpdaterTest { verify(mBluetoothDeviceUpdater).addPreference(mCachedBluetoothDevice); } + + @Test + public void onClick_Preference_setConnect() { + mBluetoothDeviceUpdater.onPreferenceClick(mPreference); + + verify(mCachedBluetoothDevice).connect(true); + } }