summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2024-03-15 15:53:10 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-03-15 21:28:00 +0000
commitdc0ca0658731d0b2e59e5667ae4d0d6cb69c4230 (patch)
tree91ef6dd7ccb8aa878fd5cf21f70e95ebe3b5ac85
parent6bb2a930d76b55a2d3ca26a88724f6d30c016396 (diff)
downloadbase-dc0ca0658731d0b2e59e5667ae4d0d6cb69c4230.tar.gz
Revert "AudioService: anonymize Bluetooth MAC addresses"
Revert submission 25286114-anon_bt_address_sc_dev Reason for revert: b/329515274 Reverted changes: /q/submissionid:25286114-anon_bt_address_sc_dev (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:9915df580bb82aab22529905fdfa29ebf075bf1f) Merged-In: Icd29d064dda03923637b362bb62eeaf2eeebcec2 Change-Id: Icd29d064dda03923637b362bb62eeaf2eeebcec2
-rw-r--r--media/java/android/media/AudioDeviceAttributes.java24
-rw-r--r--services/core/java/com/android/server/audio/AdiDeviceState.java11
-rw-r--r--services/core/java/com/android/server/audio/AudioDeviceBroker.java13
-rw-r--r--services/core/java/com/android/server/audio/AudioDeviceInventory.java80
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java153
5 files changed, 37 insertions, 244 deletions
diff --git a/media/java/android/media/AudioDeviceAttributes.java b/media/java/android/media/AudioDeviceAttributes.java
index 5341e7e5adc0..7caac899a603 100644
--- a/media/java/android/media/AudioDeviceAttributes.java
+++ b/media/java/android/media/AudioDeviceAttributes.java
@@ -64,7 +64,8 @@ public final class AudioDeviceAttributes implements Parcelable {
/**
* The unique address of the device. Some devices don't have addresses, only an empty string.
*/
- private @NonNull String mAddress;
+ private final @NonNull String mAddress;
+
/**
* Is input or output device
*/
@@ -134,18 +135,6 @@ public final class AudioDeviceAttributes implements Parcelable {
/**
* @hide
- * Copy Constructor.
- * @param ada the copied AudioDeviceAttributes
- */
- public AudioDeviceAttributes(AudioDeviceAttributes ada) {
- mRole = ada.getRole();
- mType = ada.getType();
- mAddress = ada.getAddress();
- mNativeType = ada.getInternalType();
- }
-
- /**
- * @hide
* Returns the role of a device
* @return the role
*/
@@ -176,15 +165,6 @@ public final class AudioDeviceAttributes implements Parcelable {
/**
* @hide
- * Sets the device address. Only used by audio service.
- */
- public void setAddress(@NonNull String address) {
- Objects.requireNonNull(address);
- mAddress = address;
- }
-
- /**
- * @hide
* Returns the internal device type of a device
* @return the internal device type
*/
diff --git a/services/core/java/com/android/server/audio/AdiDeviceState.java b/services/core/java/com/android/server/audio/AdiDeviceState.java
index eab1eca90f6c..a27daf65b9f9 100644
--- a/services/core/java/com/android/server/audio/AdiDeviceState.java
+++ b/services/core/java/com/android/server/audio/AdiDeviceState.java
@@ -25,7 +25,6 @@ import android.media.AudioDeviceAttributes;
import android.media.AudioDeviceInfo;
import android.text.TextUtils;
import android.util.Log;
-import android.util.Pair;
import java.util.Objects;
@@ -44,8 +43,6 @@ import java.util.Objects;
private final int mInternalDeviceType;
@NonNull
private final String mDeviceAddress;
- /** Unique device id from internal device type and address. */
- private final Pair<Integer, String> mDeviceId;
private boolean mSAEnabled;
private boolean mHasHeadTracker = false;
private boolean mHeadTrackerEnabled;
@@ -71,11 +68,6 @@ import java.util.Objects;
}
mDeviceAddress = isBluetoothDevice(mInternalDeviceType) ? Objects.requireNonNull(
address) : "";
- mDeviceId = new Pair<>(mInternalDeviceType, mDeviceAddress);
- }
-
- public Pair<Integer, String> getDeviceId() {
- return mDeviceId;
}
@@ -148,8 +140,7 @@ import java.util.Objects;
@Override
public String toString() {
- return "type: " + mDeviceType
- + " internal type: 0x" + Integer.toHexString(mInternalDeviceType)
+ return "type: " + mDeviceType + "internal type: " + mInternalDeviceType
+ " addr: " + mDeviceAddress + " enabled: " + mSAEnabled
+ " HT: " + mHasHeadTracker + " HTenabled: " + mHeadTrackerEnabled;
}
diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
index 12b4914a3a13..ec439a85b186 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
@@ -746,8 +746,8 @@ public class AudioDeviceBroker {
}
/*package*/ void registerStrategyPreferredDevicesDispatcher(
- @NonNull IStrategyPreferredDevicesDispatcher dispatcher, boolean isPrivileged) {
- mDeviceInventory.registerStrategyPreferredDevicesDispatcher(dispatcher, isPrivileged);
+ @NonNull IStrategyPreferredDevicesDispatcher dispatcher) {
+ mDeviceInventory.registerStrategyPreferredDevicesDispatcher(dispatcher);
}
/*package*/ void unregisterStrategyPreferredDevicesDispatcher(
@@ -765,8 +765,8 @@ public class AudioDeviceBroker {
}
/*package*/ void registerCapturePresetDevicesRoleDispatcher(
- @NonNull ICapturePresetDevicesRoleDispatcher dispatcher, boolean isPrivileged) {
- mDeviceInventory.registerCapturePresetDevicesRoleDispatcher(dispatcher, isPrivileged);
+ @NonNull ICapturePresetDevicesRoleDispatcher dispatcher) {
+ mDeviceInventory.registerCapturePresetDevicesRoleDispatcher(dispatcher);
}
/*package*/ void unregisterCapturePresetDevicesRoleDispatcher(
@@ -774,11 +774,6 @@ public class AudioDeviceBroker {
mDeviceInventory.unregisterCapturePresetDevicesRoleDispatcher(dispatcher);
}
- /* package */ List<AudioDeviceAttributes> anonymizeAudioDeviceAttributesListUnchecked(
- List<AudioDeviceAttributes> devices) {
- return mAudioService.anonymizeAudioDeviceAttributesListUnchecked(devices);
- }
-
/*package*/ void registerCommunicationDeviceDispatcher(
@NonNull ICommunicationDeviceDispatcher dispatcher) {
mCommDevDispatchers.register(dispatcher);
diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
index 1c20b5d91b32..0e4c4c6ccb6f 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
@@ -42,7 +42,6 @@ import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
-import android.util.Pair;
import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
@@ -50,9 +49,7 @@ import com.android.internal.annotations.VisibleForTesting;
import java.io.PrintWriter;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
@@ -77,49 +74,31 @@ public class AudioDeviceInventory {
private final Object mDeviceInventoryLock = new Object();
@GuardedBy("mDeviceInventoryLock")
- private final HashMap<Pair<Integer, String>, AdiDeviceState> mDeviceInventory = new HashMap<>();
+ private final ArrayList<AdiDeviceState> mDeviceInventory = new ArrayList<>(0);
+
List<AdiDeviceState> getImmutableDeviceInventory() {
synchronized (mDeviceInventoryLock) {
- return new ArrayList<AdiDeviceState>(mDeviceInventory.values());
+ return List.copyOf(mDeviceInventory);
}
}
void addDeviceStateToInventory(AdiDeviceState deviceState) {
synchronized (mDeviceInventoryLock) {
- mDeviceInventory.put(deviceState.getDeviceId(), deviceState);
- }
- }
-
- /**
- * Adds a new entry in mDeviceInventory if the AudioDeviceAttributes passed is an sink
- * Bluetooth device and no corresponding entry already exists.
- * @param ada the device to add if needed
- */
- void addAudioDeviceInInventoryIfNeeded(AudioDeviceAttributes ada) {
- if (!AudioSystem.isBluetoothOutDevice(ada.getInternalType())) {
- return;
- }
- synchronized (mDeviceInventoryLock) {
- if (findDeviceStateForAudioDeviceAttributes(ada, ada.getType()) != null) {
- return;
- }
- AdiDeviceState ads = new AdiDeviceState(
- ada.getType(), ada.getInternalType(), ada.getAddress());
- mDeviceInventory.put(ads.getDeviceId(), ads);
+ mDeviceInventory.add(deviceState);
}
- mDeviceBroker.persistAudioDeviceSettings();
}
AdiDeviceState findDeviceStateForAudioDeviceAttributes(AudioDeviceAttributes ada,
int canonicalDeviceType) {
final boolean isWireless = isBluetoothDevice(ada.getInternalType());
+
synchronized (mDeviceInventoryLock) {
- for (AdiDeviceState deviceState : mDeviceInventory.values()) {
- if (deviceState.getDeviceType() == canonicalDeviceType
+ for (AdiDeviceState deviceSetting : mDeviceInventory) {
+ if (deviceSetting.getDeviceType() == canonicalDeviceType
&& (!isWireless || ada.getAddress().equals(
- deviceState.getDeviceAddress()))) {
- return deviceState;
+ deviceSetting.getDeviceAddress()))) {
+ return deviceSetting;
}
}
}
@@ -320,7 +299,7 @@ public class AudioDeviceInventory {
+ " devices:" + devices); });
pw.println("\ndevices:\n");
synchronized (mDeviceInventoryLock) {
- for (AdiDeviceState device : mDeviceInventory.values()) {
+ for (AdiDeviceState device : mDeviceInventory) {
pw.println("\t" + device + "\n");
}
}
@@ -749,8 +728,8 @@ public class AudioDeviceInventory {
}
/*package*/ void registerStrategyPreferredDevicesDispatcher(
- @NonNull IStrategyPreferredDevicesDispatcher dispatcher, boolean isPrivileged) {
- mPrefDevDispatchers.register(dispatcher, isPrivileged);
+ @NonNull IStrategyPreferredDevicesDispatcher dispatcher) {
+ mPrefDevDispatchers.register(dispatcher);
}
/*package*/ void unregisterStrategyPreferredDevicesDispatcher(
@@ -784,8 +763,8 @@ public class AudioDeviceInventory {
}
/*package*/ void registerCapturePresetDevicesRoleDispatcher(
- @NonNull ICapturePresetDevicesRoleDispatcher dispatcher, boolean isPrivileged) {
- mDevRoleCapturePresetDispatchers.register(dispatcher, isPrivileged);
+ @NonNull ICapturePresetDevicesRoleDispatcher dispatcher) {
+ mDevRoleCapturePresetDispatchers.register(dispatcher);
}
/*package*/ void unregisterCapturePresetDevicesRoleDispatcher(
@@ -840,7 +819,6 @@ public class AudioDeviceInventory {
mConnectedDevices.put(deviceKey, new DeviceInfo(
device, deviceName, address, AudioSystem.AUDIO_FORMAT_DEFAULT));
mDeviceBroker.postAccessoryPlugMediaUnmute(device);
- addAudioDeviceInInventoryIfNeeded(new AudioDeviceAttributes(device, address));
mmi.set(MediaMetrics.Property.STATE, MediaMetrics.Value.CONNECTED).record();
return true;
} else if (!connect && isConnected) {
@@ -1059,11 +1037,8 @@ public class AudioDeviceInventory {
mDeviceBroker.postAccessoryPlugMediaUnmute(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP);
setCurrentAudioRouteNameIfPossible(name, true /*fromA2dp*/);
- addAudioDeviceInInventoryIfNeeded(new AudioDeviceAttributes(
- AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address));
}
-
@GuardedBy("mDevicesLock")
private void makeA2dpDeviceUnavailableNow(String address, int a2dpCodec) {
MediaMetrics.Item mmi = new MediaMetrics.Item(mMetricsId + "a2dp." + address)
@@ -1166,8 +1141,6 @@ public class AudioDeviceInventory {
mDeviceBroker.postApplyVolumeOnDevice(streamType,
AudioSystem.DEVICE_OUT_HEARING_AID, "makeHearingAidDeviceAvailable");
setCurrentAudioRouteNameIfPossible(name, false /*fromA2dp*/);
- addAudioDeviceInInventoryIfNeeded(new AudioDeviceAttributes(
- AudioSystem.DEVICE_OUT_HEARING_AID, address));
new MediaMetrics.Item(mMetricsId + "makeHearingAidDeviceAvailable")
.set(MediaMetrics.Property.ADDRESS, address != null ? address : "")
.set(MediaMetrics.Property.DEVICE,
@@ -1449,9 +1422,6 @@ public class AudioDeviceInventory {
final int nbDispatchers = mPrefDevDispatchers.beginBroadcast();
for (int i = 0; i < nbDispatchers; i++) {
try {
- if (!((Boolean) mPrefDevDispatchers.getBroadcastCookie(i))) {
- devices = mDeviceBroker.anonymizeAudioDeviceAttributesListUnchecked(devices);
- }
mPrefDevDispatchers.getBroadcastItem(i).dispatchPrefDevicesChanged(
strategy, devices);
} catch (RemoteException e) {
@@ -1465,9 +1435,6 @@ public class AudioDeviceInventory {
final int nbDispatchers = mDevRoleCapturePresetDispatchers.beginBroadcast();
for (int i = 0; i < nbDispatchers; ++i) {
try {
- if (!((Boolean) mDevRoleCapturePresetDispatchers.getBroadcastCookie(i))) {
- devices = mDeviceBroker.anonymizeAudioDeviceAttributesListUnchecked(devices);
- }
mDevRoleCapturePresetDispatchers.getBroadcastItem(i).dispatchDevicesRoleChanged(
capturePreset, role, devices);
} catch (RemoteException e) {
@@ -1480,20 +1447,19 @@ public class AudioDeviceInventory {
int deviceCatalogSize = 0;
synchronized (mDeviceInventoryLock) {
deviceCatalogSize = mDeviceInventory.size();
-
- final StringBuilder settingsBuilder = new StringBuilder(
+ }
+ final StringBuilder settingsBuilder = new StringBuilder(
deviceCatalogSize * AdiDeviceState.getPeristedMaxSize());
- Iterator<AdiDeviceState> iterator = mDeviceInventory.values().iterator();
- if (iterator.hasNext()) {
- settingsBuilder.append(iterator.next().toPersistableString());
- }
- while (iterator.hasNext()) {
- settingsBuilder.append(SETTING_DEVICE_SEPARATOR_CHAR);
- settingsBuilder.append(iterator.next().toPersistableString());
+ synchronized (mDeviceInventoryLock) {
+ for (int i = 0; i < mDeviceInventory.size(); i++) {
+ settingsBuilder.append(mDeviceInventory.get(i).toPersistableString());
+ if (i != mDeviceInventory.size() - 1) {
+ settingsBuilder.append(SETTING_DEVICE_SEPARATOR_CHAR);
+ }
}
- return settingsBuilder.toString();
}
+ return settingsBuilder.toString();
}
/*package*/ void setDeviceSettings(String settings) {
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index f737a572051d..34e2578f7855 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -2368,11 +2368,8 @@ public class AudioService extends IAudioService.Stub
return AudioSystem.ERROR;
}
enforceModifyAudioRoutingPermission();
-
- devices = retrieveBluetoothAddresses(devices);
-
final String logString = String.format(
- "setPreferredDevicesForStrategy u/pid:%d/%d strat:%d dev:%s",
+ "setPreferredDeviceForStrategy u/pid:%d/%d strat:%d dev:%s",
Binder.getCallingUid(), Binder.getCallingPid(), strategy,
devices.stream().map(e -> e.toString()).collect(Collectors.joining(",")));
sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG));
@@ -2420,7 +2417,7 @@ public class AudioService extends IAudioService.Stub
status, strategy));
return new ArrayList<AudioDeviceAttributes>();
} else {
- return anonymizeAudioDeviceAttributesList(devices);
+ return devices;
}
}
@@ -2433,8 +2430,7 @@ public class AudioService extends IAudioService.Stub
return;
}
enforceModifyAudioRoutingPermission();
- mDeviceBroker.registerStrategyPreferredDevicesDispatcher(
- dispatcher, isBluetoothPrividged());
+ mDeviceBroker.registerStrategyPreferredDevicesDispatcher(dispatcher);
}
/** @see AudioManager#removeOnPreferredDevicesForStrategyChangedListener(
@@ -2450,7 +2446,7 @@ public class AudioService extends IAudioService.Stub
}
/**
- * @see AudioManager#setPreferredDevicesForCapturePreset(int, AudioDeviceAttributes)
+ * @see AudioManager#setPreferredDeviceForCapturePreset(int, AudioDeviceAttributes)
*/
public int setPreferredDevicesForCapturePreset(
int capturePreset, List<AudioDeviceAttributes> devices) {
@@ -2469,8 +2465,6 @@ public class AudioService extends IAudioService.Stub
return AudioSystem.ERROR;
}
- devices = retrieveBluetoothAddresses(devices);
-
final int status = mDeviceBroker.setPreferredDevicesForCapturePresetSync(
capturePreset, devices);
if (status != AudioSystem.SUCCESS) {
@@ -2509,7 +2503,7 @@ public class AudioService extends IAudioService.Stub
status, capturePreset));
return new ArrayList<AudioDeviceAttributes>();
} else {
- return anonymizeAudioDeviceAttributesList(devices);
+ return devices;
}
}
@@ -2523,8 +2517,7 @@ public class AudioService extends IAudioService.Stub
return;
}
enforceModifyAudioRoutingPermission();
- mDeviceBroker.registerCapturePresetDevicesRoleDispatcher(
- dispatcher, isBluetoothPrividged());
+ mDeviceBroker.registerCapturePresetDevicesRoleDispatcher(dispatcher);
}
/**
@@ -2544,8 +2537,7 @@ public class AudioService extends IAudioService.Stub
public @NonNull ArrayList<AudioDeviceAttributes> getDevicesForAttributes(
@NonNull AudioAttributes attributes) {
enforceQueryStateOrModifyRoutingPermission();
- return new ArrayList<AudioDeviceAttributes>(anonymizeAudioDeviceAttributesList(
- getDevicesForAttributesInt(attributes)));
+ return getDevicesForAttributesInt(attributes);
}
/**
@@ -6117,9 +6109,6 @@ public class AudioService extends IAudioService.Stub
// verify arguments
Objects.requireNonNull(device);
AudioManager.enforceValidVolumeBehavior(deviceVolumeBehavior);
-
- device = retrieveBluetoothAddress(device);
-
if (pkgName == null) {
pkgName = "";
}
@@ -6172,8 +6161,6 @@ public class AudioService extends IAudioService.Stub
// verify permissions
enforceQueryStateOrModifyRoutingPermission();
- device = retrieveBluetoothAddress(device);
-
// translate Java device type to native device type (for the devices masks for full / fixed)
final int audioSystemDeviceOut = AudioDeviceInfo.convertDeviceTypeToInternalDevice(
device.getType());
@@ -6222,9 +6209,6 @@ public class AudioService extends IAudioService.Stub
@ConnectionState int state, String address, String name,
String caller) {
enforceModifyAudioRoutingPermission();
-
- address = retrieveBluetoothAddress(type, address);
-
if (state != CONNECTION_STATE_CONNECTED
&& state != CONNECTION_STATE_DISCONNECTED) {
throw new IllegalArgumentException("Invalid state " + state);
@@ -8244,120 +8228,6 @@ public class AudioService extends IAudioService.Stub
}
//==========================================================================================
-
- private boolean isBluetoothPrividged() {
- return PackageManager.PERMISSION_GRANTED == mContext.checkCallingOrSelfPermission(
- android.Manifest.permission.BLUETOOTH_CONNECT)
- || Binder.getCallingUid() == Process.SYSTEM_UID;
- }
-
- List<AudioDeviceAttributes> retrieveBluetoothAddresses(List<AudioDeviceAttributes> devices) {
- if (isBluetoothPrividged()) {
- return devices;
- }
-
- List<AudioDeviceAttributes> checkedDevices = new ArrayList<AudioDeviceAttributes>();
- for (AudioDeviceAttributes ada : devices) {
- if (ada == null) {
- continue;
- }
- checkedDevices.add(retrieveBluetoothAddressUncheked(ada));
- }
- return checkedDevices;
- }
-
- AudioDeviceAttributes retrieveBluetoothAddress(@NonNull AudioDeviceAttributes ada) {
- if (isBluetoothPrividged()) {
- return ada;
- }
- return retrieveBluetoothAddressUncheked(ada);
- }
-
- AudioDeviceAttributes retrieveBluetoothAddressUncheked(@NonNull AudioDeviceAttributes ada) {
- Objects.requireNonNull(ada);
- if (AudioSystem.isBluetoothDevice(ada.getInternalType())) {
- String anonymizedAddress = anonymizeBluetoothAddress(ada.getAddress());
- for (AdiDeviceState ads : mDeviceBroker.getImmutableDeviceInventory()) {
- if (!(AudioSystem.isBluetoothDevice(ads.getInternalDeviceType())
- && (ada.getInternalType() == ads.getInternalDeviceType())
- && anonymizedAddress.equals(anonymizeBluetoothAddress(
- ads.getDeviceAddress())))) {
- continue;
- }
- ada.setAddress(ads.getDeviceAddress());
- break;
- }
- }
- return ada;
- }
-
- private String retrieveBluetoothAddress(int type, String address) {
- if (isBluetoothPrividged() || !AudioSystem.isBluetoothDevice(type)
- || address == null) {
- return address;
- }
- String anonymizedAddress = anonymizeBluetoothAddress(address);
- for (AdiDeviceState ads : mDeviceBroker.getImmutableDeviceInventory()) {
- if (!(AudioSystem.isBluetoothDevice(ads.getInternalDeviceType())
- && anonymizedAddress.equals(anonymizeBluetoothAddress(
- ads.getDeviceAddress())))) {
- continue;
- }
- return ads.getDeviceAddress();
- }
- return address;
- }
-
- /**
- * Convert a Bluetooth MAC address to an anonymized one when exposed to a non privileged app
- * Must match the implementation of BluetoothUtils.toAnonymizedAddress()
- * @param address Mac address to be anonymized
- * @return anonymized mac address
- */
- static String anonymizeBluetoothAddress(String address) {
- if (address == null || address.length() != "AA:BB:CC:DD:EE:FF".length()) {
- return null;
- }
- return "XX:XX:XX:XX" + address.substring("XX:XX:XX:XX".length());
- }
-
- private List<AudioDeviceAttributes> anonymizeAudioDeviceAttributesList(
- List<AudioDeviceAttributes> devices) {
- if (isBluetoothPrividged()) {
- return devices;
- }
- return anonymizeAudioDeviceAttributesListUnchecked(devices);
- }
-
- /* package */ List<AudioDeviceAttributes> anonymizeAudioDeviceAttributesListUnchecked(
- List<AudioDeviceAttributes> devices) {
- List<AudioDeviceAttributes> anonymizedDevices = new ArrayList<AudioDeviceAttributes>();
- for (AudioDeviceAttributes ada : devices) {
- anonymizedDevices.add(anonymizeAudioDeviceAttributesUnchecked(ada));
- }
- return anonymizedDevices;
- }
-
- private AudioDeviceAttributes anonymizeAudioDeviceAttributesUnchecked(
- AudioDeviceAttributes ada) {
- if (!AudioSystem.isBluetoothDevice(ada.getInternalType())) {
- return ada;
- }
- AudioDeviceAttributes res = new AudioDeviceAttributes(ada);
- res.setAddress(anonymizeBluetoothAddress(ada.getAddress()));
- return res;
- }
-
- private AudioDeviceAttributes anonymizeAudioDeviceAttributes(AudioDeviceAttributes ada) {
- if (isBluetoothPrividged()) {
- return ada;
- }
-
- return anonymizeAudioDeviceAttributesUnchecked(ada);
- }
-
- //==========================================================================================
-
private boolean readCameraSoundForced() {
return SystemProperties.getBoolean("audio.camerasound.force", false) ||
mContext.getResources().getBoolean(
@@ -10475,9 +10345,6 @@ public class AudioService extends IAudioService.Stub
@NonNull AudioDeviceAttributes device, @IntRange(from = 0) long delayMillis) {
Objects.requireNonNull(device, "device must not be null");
enforceModifyAudioRoutingPermission();
-
- device = retrieveBluetoothAddress(device);
-
final String getterKey = "additional_output_device_delay="
+ device.getInternalType() + "," + device.getAddress(); // "getter" key as an id.
final String setterKey = getterKey + "," + delayMillis; // append the delay for setter
@@ -10498,9 +10365,6 @@ public class AudioService extends IAudioService.Stub
@IntRange(from = 0)
public long getAdditionalOutputDeviceDelay(@NonNull AudioDeviceAttributes device) {
Objects.requireNonNull(device, "device must not be null");
-
- device = retrieveBluetoothAddress(device);
-
final String key = "additional_output_device_delay";
final String reply = AudioSystem.getParameters(
key + "=" + device.getInternalType() + "," + device.getAddress());
@@ -10528,9 +10392,6 @@ public class AudioService extends IAudioService.Stub
@IntRange(from = 0)
public long getMaxAdditionalOutputDeviceDelay(@NonNull AudioDeviceAttributes device) {
Objects.requireNonNull(device, "device must not be null");
-
- device = retrieveBluetoothAddress(device);
-
final String key = "max_additional_output_device_delay";
final String reply = AudioSystem.getParameters(
key + "=" + device.getInternalType() + "," + device.getAddress());