diff options
author | Jaikumar Ganesh <jaikumar@google.com> | 2009-09-23 10:32:41 -0700 |
---|---|---|
committer | Jaikumar Ganesh <jaikumar@google.com> | 2009-09-23 10:35:36 -0700 |
commit | 1bfe73d0b1d338f3c16a8177eb8de509e44a5c01 (patch) | |
tree | a2a575f6e68fc77346dc1e8c5d460847727bec5e | |
parent | 9045631186a4f7fcf49a3f4700276ad8fbcab90c (diff) | |
download | packages_apps_settings-1bfe73d0b1d338f3c16a8177eb8de509e44a5c01.zip packages_apps_settings-1bfe73d0b1d338f3c16a8177eb8de509e44a5c01.tar.gz packages_apps_settings-1bfe73d0b1d338f3c16a8177eb8de509e44a5c01.tar.bz2 |
Filter devices by UUID and then class.
The settings app has been updated to use UUIDs.
When there is a filter type set for device picket UI, use the
UUIDs first and then the class bits.
Change-Id: Ifde5dbc3a1cf25babce4c686002315aa3933de59
-rw-r--r-- | src/com/android/settings/bluetooth/BluetoothSettings.java | 61 | ||||
-rw-r--r-- | src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java | 6 |
2 files changed, 46 insertions, 21 deletions
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java index 9999e1c..1203a42 100644 --- a/src/com/android/settings/bluetooth/BluetoothSettings.java +++ b/src/com/android/settings/bluetooth/BluetoothSettings.java @@ -16,16 +16,12 @@ package com.android.settings.bluetooth; -import com.android.settings.ProgressCategory; -import com.android.settings.R; -import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile; - -import java.util.List; -import java.util.WeakHashMap; - import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevicePicker; +import android.bluetooth.BluetoothUuid; +import android.bluetooth.ParcelUuid; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -41,7 +37,13 @@ import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AdapterView.AdapterContextMenuInfo; -import android.util.Log; + +import com.android.settings.ProgressCategory; +import com.android.settings.R; +import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile; + +import java.util.List; +import java.util.WeakHashMap; /** * BluetoothSettings is the Settings screen for Bluetooth configuration and @@ -304,20 +306,43 @@ public class BluetoothSettings extends PreferenceActivity throw new IllegalStateException("Got onDeviceAdded, but cachedDevice already exists"); } - List<Profile> profiles = cachedDevice.getProfiles(); - if (mFilterType == BluetoothDevicePicker.FILTER_TYPE_TRANSFER){ - if(profiles.contains(Profile.OPP)){ - createDevicePreference(cachedDevice); - } - } else if (mFilterType == BluetoothDevicePicker.FILTER_TYPE_AUDIO) { - if((profiles.contains(Profile.A2DP)) || (profiles.contains(Profile.HEADSET))){ - createDevicePreference(cachedDevice); - } - } else { + if (addDevicePreference(cachedDevice)) { createDevicePreference(cachedDevice); } } + private boolean addDevicePreference(CachedBluetoothDevice cachedDevice) { + ParcelUuid[] uuids = cachedDevice.getDevice().getUuids(); + BluetoothClass bluetoothClass = cachedDevice.getDevice().getBluetoothClass(); + + switch(mFilterType) { + case BluetoothDevicePicker.FILTER_TYPE_TRANSFER: + if (uuids != null) { + if (BluetoothUuid.containsAnyUuid(uuids, + LocalBluetoothProfileManager.OPP_PROFILE_UUIDS)) return true; + } else { + if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_OPP)) return true; + } + break; + case BluetoothDevicePicker.FILTER_TYPE_AUDIO: + if (uuids != null) { + if (BluetoothUuid.containsAnyUuid(uuids, + LocalBluetoothProfileManager.A2DP_PROFILE_UUIDS)) return true; + + if (BluetoothUuid.containsAnyUuid(uuids, + LocalBluetoothProfileManager.HEADSET_PROFILE_UUIDS)) return true; + } else { + if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) return true; + + if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) return true; + } + break; + default: + return true; + } + return false; + } + private void createDevicePreference(CachedBluetoothDevice cachedDevice) { BluetoothDevicePreference preference = new BluetoothDevicePreference(this, cachedDevice); mDeviceList.addPreference(preference); diff --git a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java index 2ea1fe7..2f8fbe3 100644 --- a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java +++ b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java @@ -37,17 +37,17 @@ import java.util.Set; public abstract class LocalBluetoothProfileManager { private static final String TAG = "LocalBluetoothProfileManager"; - private static final ParcelUuid[] HEADSET_PROFILE_UUIDS = new ParcelUuid[] { + /* package */ static final ParcelUuid[] HEADSET_PROFILE_UUIDS = new ParcelUuid[] { BluetoothUuid.HSP, BluetoothUuid.Handsfree, }; - private static final ParcelUuid[] A2DP_PROFILE_UUIDS = new ParcelUuid[] { + /* package */ static final ParcelUuid[] A2DP_PROFILE_UUIDS = new ParcelUuid[] { BluetoothUuid.AudioSink, BluetoothUuid.AdvAudioDist, }; - private static final ParcelUuid[] OPP_PROFILE_UUIDS = new ParcelUuid[] { + /* package */ static final ParcelUuid[] OPP_PROFILE_UUIDS = new ParcelUuid[] { BluetoothUuid.ObexObjectPush }; |