[Audiosharing] Add getGroupId to LeAudioProfile
Test: manual
Bug: 305620450
Bug: 319723439
Change-Id: I30c41fdbb731b549eec094a5349c3db79be1219e
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LeAudioProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LeAudioProfile.java
index 57012aa..931a6f1 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LeAudioProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LeAudioProfile.java
@@ -3,17 +3,17 @@
*/
/* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.android.settingslib.bluetooth;
@@ -23,6 +23,7 @@
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothCsipSetCoordinator;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeAudio;
import android.bluetooth.BluetoothProfile;
@@ -30,6 +31,7 @@
import android.os.Build;
import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
@@ -57,13 +59,12 @@
private static final int ORDINAL = 1;
// These callbacks run on the main thread.
- private final class LeAudioServiceListener
- implements BluetoothProfile.ServiceListener {
+ private final class LeAudioServiceListener implements BluetoothProfile.ServiceListener {
@RequiresApi(Build.VERSION_CODES.S)
public void onServiceConnected(int profile, BluetoothProfile proxy) {
if (DEBUG) {
- Log.d(TAG,"Bluetooth service connected");
+ Log.d(TAG, "Bluetooth service connected");
}
mService = (BluetoothLeAudio) proxy;
// We just bound to the service, so refresh the UI for any connected LeAudio devices.
@@ -78,8 +79,7 @@
}
device = mDeviceManager.addDevice(nextDevice);
}
- device.onProfileStateChanged(LeAudioProfile.this,
- BluetoothProfile.STATE_CONNECTED);
+ device.onProfileStateChanged(LeAudioProfile.this, BluetoothProfile.STATE_CONNECTED);
device.refresh();
}
@@ -89,7 +89,7 @@
public void onServiceDisconnected(int profile) {
if (DEBUG) {
- Log.d(TAG,"Bluetooth service disconnected");
+ Log.d(TAG, "Bluetooth service disconnected");
}
mProfileManager.callServiceDisconnectedListeners();
mIsProfileReady = false;
@@ -105,7 +105,9 @@
return BluetoothProfile.LE_AUDIO;
}
- LeAudioProfile(Context context, CachedBluetoothDeviceManager deviceManager,
+ LeAudioProfile(
+ Context context,
+ CachedBluetoothDeviceManager deviceManager,
LocalBluetoothProfileManager profileManager) {
mContext = context;
mDeviceManager = deviceManager;
@@ -113,8 +115,7 @@
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.getProfileProxy(
- context, new LeAudioServiceListener(),
- BluetoothProfile.LE_AUDIO);
+ context, new LeAudioServiceListener(), BluetoothProfile.LE_AUDIO);
}
public boolean accessProfileEnabled() {
@@ -126,18 +127,22 @@
}
public List<BluetoothDevice> getConnectedDevices() {
- return getDevicesByStates(new int[] {
- BluetoothProfile.STATE_CONNECTED,
- BluetoothProfile.STATE_CONNECTING,
- BluetoothProfile.STATE_DISCONNECTING});
+ return getDevicesByStates(
+ new int[] {
+ BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.STATE_CONNECTING,
+ BluetoothProfile.STATE_DISCONNECTING
+ });
}
public List<BluetoothDevice> getConnectableDevices() {
- return getDevicesByStates(new int[] {
- BluetoothProfile.STATE_DISCONNECTED,
- BluetoothProfile.STATE_CONNECTED,
- BluetoothProfile.STATE_CONNECTING,
- BluetoothProfile.STATE_DISCONNECTING});
+ return getDevicesByStates(
+ new int[] {
+ BluetoothProfile.STATE_DISCONNECTED,
+ BluetoothProfile.STATE_CONNECTED,
+ BluetoothProfile.STATE_CONNECTING,
+ BluetoothProfile.STATE_DISCONNECTING
+ });
}
private List<BluetoothDevice> getDevicesByStates(int[] states) {
@@ -148,8 +153,8 @@
}
/*
- * @hide
- */
+ * @hide
+ */
public boolean connect(BluetoothDevice device) {
if (mService == null) {
return false;
@@ -158,8 +163,8 @@
}
/*
- * @hide
- */
+ * @hide
+ */
public boolean disconnect(BluetoothDevice device) {
if (mService == null) {
return false;
@@ -174,6 +179,14 @@
return mService.getConnectionState(device);
}
+ /** Get group id for {@link BluetoothDevice}. */
+ public int getGroupId(@NonNull BluetoothDevice device) {
+ if (mService == null) {
+ return BluetoothCsipSetCoordinator.GROUP_ID_INVALID;
+ }
+ return mService.getGroupId(device);
+ }
+
public boolean setActiveDevice(BluetoothDevice device) {
if (mBluetoothAdapter == null) {
return false;
@@ -193,29 +206,28 @@
/**
* Get Lead device for the group.
*
- * Lead device is the device that can be used as an active device in the system.
- * Active devices points to the Audio Device for the Le Audio group.
- * This method returns the Lead devices for the connected LE Audio
- * group and this device should be used in the setActiveDevice() method by other parts
- * of the system, which wants to set to active a particular Le Audio group.
+ * <p>Lead device is the device that can be used as an active device in the system. Active
+ * devices points to the Audio Device for the Le Audio group. This method returns the Lead
+ * devices for the connected LE Audio group and this device should be used in the
+ * setActiveDevice() method by other parts of the system, which wants to set to active a
+ * particular Le Audio group.
*
- * Note: getActiveDevice() returns the Lead device for the currently active LE Audio group.
+ * <p>Note: getActiveDevice() returns the Lead device for the currently active LE Audio group.
* Note: When Lead device gets disconnected while Le Audio group is active and has more devices
- * in the group, then Lead device will not change. If Lead device gets disconnected, for the
- * Le Audio group which is not active, a new Lead device will be chosen
+ * in the group, then Lead device will not change. If Lead device gets disconnected, for the Le
+ * Audio group which is not active, a new Lead device will be chosen
*
* @param groupId The group id.
* @return group lead device.
- *
* @hide
*/
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
public @Nullable BluetoothDevice getConnectedGroupLeadDevice(int groupId) {
if (DEBUG) {
- Log.d(TAG,"getConnectedGroupLeadDevice");
+ Log.d(TAG, "getConnectedGroupLeadDevice");
}
if (mService == null) {
- Log.e(TAG,"No service.");
+ Log.e(TAG, "No service.");
return null;
}
return mService.getConnectedGroupLeadDevice(groupId);
@@ -310,10 +322,10 @@
}
if (mService != null) {
try {
- BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.LE_AUDIO,
- mService);
+ BluetoothAdapter.getDefaultAdapter()
+ .closeProfileProxy(BluetoothProfile.LE_AUDIO, mService);
mService = null;
- }catch (Throwable t) {
+ } catch (Throwable t) {
Log.w(TAG, "Error cleaning up LeAudio proxy", t);
}
}