diff --git a/api/system-current.txt b/api/system-current.txt index 3d14961dc5cb8..f974380f72c35 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4247,15 +4247,15 @@ package android.media { method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioAttributes.Builder setSystemUsage(int); } - public final class AudioDevice implements android.os.Parcelable { - ctor public AudioDevice(@NonNull android.media.AudioDeviceInfo); - ctor public AudioDevice(int, int, @NonNull String); + public final class AudioDeviceAttributes implements android.os.Parcelable { + ctor public AudioDeviceAttributes(@NonNull android.media.AudioDeviceInfo); + ctor public AudioDeviceAttributes(int, int, @NonNull String); method public int describeContents(); method @NonNull public String getAddress(); method public int getRole(); method public int getType(); method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; + field @NonNull public static final android.os.Parcelable.Creator CREATOR; field public static final int ROLE_INPUT = 1; // 0x1 field public static final int ROLE_OUTPUT = 2; // 0x2 } @@ -4293,11 +4293,11 @@ package android.media { method @IntRange(from=0) public int getAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List getAudioProductStrategies(); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List getAudioVolumeGroups(); - method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List getDevicesForAttributes(@NonNull android.media.AudioAttributes); + method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List getDevicesForAttributes(@NonNull android.media.AudioAttributes); method @IntRange(from=0) public int getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo); method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMaxVolumeIndexForAttributes(@NonNull android.media.AudioAttributes); method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMinVolumeIndexForAttributes(@NonNull android.media.AudioAttributes); - method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioDevice getPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy); + method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioDeviceAttributes getPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy); method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int[] getSupportedSystemUsages(); method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getVolumeIndexForAttributes(@NonNull android.media.AudioAttributes); method public boolean isAudioServerRunning(); @@ -4312,7 +4312,7 @@ package android.media { method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo, @IntRange(from=0) int); method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy); - method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDevice); + method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDeviceAttributes); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setSupportedSystemUsages(@NonNull int[]); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setVolumeIndexForAttributes(@NonNull android.media.AudioAttributes, int, int); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy); @@ -4332,7 +4332,7 @@ package android.media { } public static interface AudioManager.OnPreferredDeviceForStrategyChangedListener { - method public void onPreferredDeviceForStrategyChanged(@NonNull android.media.audiopolicy.AudioProductStrategy, @Nullable android.media.AudioDevice); + method public void onPreferredDeviceForStrategyChanged(@NonNull android.media.audiopolicy.AudioProductStrategy, @Nullable android.media.AudioDeviceAttributes); } public abstract static class AudioManager.VolumeGroupCallback { @@ -4412,7 +4412,7 @@ package android.media { package android.media.audiofx { public class AudioEffect { - ctor @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public AudioEffect(@NonNull java.util.UUID, @NonNull android.media.AudioDevice); + ctor @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public AudioEffect(@NonNull java.util.UUID, @NonNull android.media.AudioDeviceAttributes); } } diff --git a/core/jni/Android.bp b/core/jni/Android.bp index 253ecdcbf78cf..5912f4059548a 100644 --- a/core/jni/Android.bp +++ b/core/jni/Android.bp @@ -153,7 +153,7 @@ cc_library_shared { "android_util_Binder.cpp", "android_util_MemoryIntArray.cpp", "android_util_Process.cpp", - "android_media_AudioDevice.cpp", + "android_media_AudioDeviceAttributes.cpp", "android_media_AudioEffectDescriptor.cpp", "android_media_AudioRecord.cpp", "android_media_AudioSystem.cpp", diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index b711186674bea..4879478733e68 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -86,7 +86,7 @@ extern int register_android_hardware_UsbDeviceConnection(JNIEnv *env); extern int register_android_hardware_UsbRequest(JNIEnv *env); extern int register_android_hardware_location_ActivityRecognitionHardware(JNIEnv* env); -extern int register_android_media_AudioDevice(JNIEnv* env); +extern int register_android_media_AudioDeviceAttributes(JNIEnv* env); extern int register_android_media_AudioEffectDescriptor(JNIEnv *env); extern int register_android_media_AudioRecord(JNIEnv *env); extern int register_android_media_AudioSystem(JNIEnv *env); @@ -1517,7 +1517,7 @@ static const RegJNIRec gRegJNI[] = { REG_JNI(register_android_hardware_UsbDeviceConnection), REG_JNI(register_android_hardware_UsbRequest), REG_JNI(register_android_hardware_location_ActivityRecognitionHardware), - REG_JNI(register_android_media_AudioDevice), + REG_JNI(register_android_media_AudioDeviceAttributes), REG_JNI(register_android_media_AudioEffectDescriptor), REG_JNI(register_android_media_AudioSystem), REG_JNI(register_android_media_AudioRecord), diff --git a/core/jni/android_media_AudioDevice.cpp b/core/jni/android_media_AudioDeviceAttributes.cpp similarity index 64% rename from core/jni/android_media_AudioDevice.cpp rename to core/jni/android_media_AudioDeviceAttributes.cpp index f6a0e4be1066b..e79c95edbeb53 100644 --- a/core/jni/android_media_AudioDevice.cpp +++ b/core/jni/android_media_AudioDeviceAttributes.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "android_media_AudioDevice.h" +#include "android_media_AudioDeviceAttributes.h" #include "android_media_AudioErrors.h" #include "core_jni_helpers.h" @@ -22,29 +22,30 @@ using namespace android; -static jclass gAudioDeviceClass; -static jmethodID gAudioDeviceCstor; +static jclass gAudioDeviceAttributesClass; +static jmethodID gAudioDeviceAttributesCstor; namespace android { -jint createAudioDeviceFromNative(JNIEnv *env, jobject *jAudioDevice, +jint createAudioDeviceAttributesFromNative(JNIEnv *env, jobject *jAudioDeviceAttributes, const AudioDeviceTypeAddr *devTypeAddr) { jint jStatus = (jint)AUDIO_JAVA_SUCCESS; jint jNativeType = (jint)devTypeAddr->mType; ScopedLocalRef jAddress(env, env->NewStringUTF(devTypeAddr->mAddress.data())); - *jAudioDevice = - env->NewObject(gAudioDeviceClass, gAudioDeviceCstor, jNativeType, jAddress.get()); + *jAudioDeviceAttributes = env->NewObject(gAudioDeviceAttributesClass, gAudioDeviceAttributesCstor, + jNativeType, jAddress.get()); return jStatus; } } // namespace android -int register_android_media_AudioDevice(JNIEnv *env) { - jclass audioDeviceTypeAddressClass = FindClassOrDie(env, "android/media/AudioDevice"); - gAudioDeviceClass = MakeGlobalRefOrDie(env, audioDeviceTypeAddressClass); - gAudioDeviceCstor = +int register_android_media_AudioDeviceAttributes(JNIEnv *env) { + jclass audioDeviceTypeAddressClass = + FindClassOrDie(env, "android/media/AudioDeviceAttributes"); + gAudioDeviceAttributesClass = MakeGlobalRefOrDie(env, audioDeviceTypeAddressClass); + gAudioDeviceAttributesCstor = GetMethodIDOrDie(env, audioDeviceTypeAddressClass, "", "(ILjava/lang/String;)V"); return 0; diff --git a/core/jni/android_media_AudioDevice.h b/core/jni/android_media_AudioDeviceAttributes.h similarity index 75% rename from core/jni/android_media_AudioDevice.h rename to core/jni/android_media_AudioDeviceAttributes.h index fc92334db1945..b49d9ba515b84 100644 --- a/core/jni/android_media_AudioDevice.h +++ b/core/jni/android_media_AudioDeviceAttributes.h @@ -14,8 +14,8 @@ * limitations under the License. */ -#ifndef ANDROID_MEDIA_AUDIODEVICE_H -#define ANDROID_MEDIA_AUDIODEVICE_H +#ifndef ANDROID_MEDIA_AUDIODEVICEATTRIBUTES_H +#define ANDROID_MEDIA_AUDIODEVICEATTRIBUTES_H #include #include @@ -24,9 +24,9 @@ namespace android { -// Create a Java AudioDevice instance from a C++ AudioDeviceTypeAddress +// Create a Java AudioDeviceAttributes instance from a C++ AudioDeviceTypeAddress -extern jint createAudioDeviceFromNative(JNIEnv *env, jobject *jAudioDevice, +extern jint createAudioDeviceAttributesFromNative(JNIEnv *env, jobject *jAudioDeviceAttributes, const AudioDeviceTypeAddr *devTypeAddr); } // namespace android diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index d8f30e94d6674..ab3cf30578e91 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -34,7 +34,7 @@ #include #include #include "android_media_AudioAttributes.h" -#include "android_media_AudioDevice.h" +#include "android_media_AudioDeviceAttributes.h" #include "android_media_AudioEffectDescriptor.h" #include "android_media_AudioErrors.h" #include "android_media_AudioFormat.h" @@ -2352,7 +2352,7 @@ android_media_AudioSystem_getPreferredDeviceForStrategy(JNIEnv *env, jobject thi jint strategy, jobjectArray jDeviceArray) { if (jDeviceArray == nullptr || env->GetArrayLength(jDeviceArray) != 1) { - ALOGE("%s invalid array to store AudioDevice", __FUNCTION__); + ALOGE("%s invalid array to store AudioDeviceAttributes", __FUNCTION__); return (jint)AUDIO_JAVA_BAD_VALUE; } @@ -2362,10 +2362,10 @@ android_media_AudioSystem_getPreferredDeviceForStrategy(JNIEnv *env, jobject thi if (status != NO_ERROR) { return (jint) status; } - jobject jAudioDevice = NULL; - jint jStatus = createAudioDeviceFromNative(env, &jAudioDevice, &elDevice); + jobject jAudioDeviceAttributes = NULL; + jint jStatus = createAudioDeviceAttributesFromNative(env, &jAudioDeviceAttributes, &elDevice); if (jStatus == AUDIO_JAVA_SUCCESS) { - env->SetObjectArrayElement(jDeviceArray, 0, jAudioDevice); + env->SetObjectArrayElement(jDeviceArray, 0, jAudioDeviceAttributes); } return jStatus; } @@ -2380,7 +2380,7 @@ android_media_AudioSystem_getDevicesForAttributes(JNIEnv *env, jobject thiz, // with reverse JNI to make the array grow as need as this would be less efficient, and some // components call this method often if (jDeviceArray == nullptr || maxResultSize == 0) { - ALOGE("%s invalid array to store AudioDevice", __FUNCTION__); + ALOGE("%s invalid array to store AudioDeviceAttributes", __FUNCTION__); return (jint)AUDIO_JAVA_BAD_VALUE; } @@ -2401,13 +2401,13 @@ android_media_AudioSystem_getDevicesForAttributes(JNIEnv *env, jobject thiz, return AUDIO_JAVA_INVALID_OPERATION; } size_t index = 0; - jobject jAudioDevice = NULL; + jobject jAudioDeviceAttributes = NULL; for (const auto& device : devices) { - jStatus = createAudioDeviceFromNative(env, &jAudioDevice, &device); + jStatus = createAudioDeviceAttributesFromNative(env, &jAudioDeviceAttributes, &device); if (jStatus != AUDIO_JAVA_SUCCESS) { return jStatus; } - env->SetObjectArrayElement(jDeviceArray, index++, jAudioDevice); + env->SetObjectArrayElement(jDeviceArray, index++, jAudioDeviceAttributes); } return jStatus; } @@ -2519,10 +2519,10 @@ static const JNINativeMethod gMethods[] = (void *)android_media_AudioSystem_setPreferredDeviceForStrategy}, {"removePreferredDeviceForStrategy", "(I)I", (void *)android_media_AudioSystem_removePreferredDeviceForStrategy}, - {"getPreferredDeviceForStrategy", "(I[Landroid/media/AudioDevice;)I", + {"getPreferredDeviceForStrategy", "(I[Landroid/media/AudioDeviceAttributes;)I", (void *)android_media_AudioSystem_getPreferredDeviceForStrategy}, {"getDevicesForAttributes", - "(Landroid/media/AudioAttributes;[Landroid/media/AudioDevice;)I", + "(Landroid/media/AudioAttributes;[Landroid/media/AudioDeviceAttributes;)I", (void *)android_media_AudioSystem_getDevicesForAttributes}, {"setUserIdDeviceAffinities", "(I[I[Ljava/lang/String;)I", (void *)android_media_AudioSystem_setUserIdDeviceAffinities}, diff --git a/media/java/android/media/AudioDevice.aidl b/media/java/android/media/AudioDeviceAttributes.aidl similarity index 94% rename from media/java/android/media/AudioDevice.aidl rename to media/java/android/media/AudioDeviceAttributes.aidl index 02071e5f0c131..82d422622eaf7 100644 --- a/media/java/android/media/AudioDevice.aidl +++ b/media/java/android/media/AudioDeviceAttributes.aidl @@ -15,4 +15,4 @@ package android.media; -parcelable AudioDevice; +parcelable AudioDeviceAttributes; diff --git a/media/java/android/media/AudioDevice.java b/media/java/android/media/AudioDeviceAttributes.java similarity index 82% rename from media/java/android/media/AudioDevice.java rename to media/java/android/media/AudioDeviceAttributes.java index 31ecc7b4ead44..f5b08061f35d5 100644 --- a/media/java/android/media/AudioDevice.java +++ b/media/java/android/media/AudioDeviceAttributes.java @@ -28,8 +28,8 @@ import java.util.Objects; /** * @hide - * Class to represent device type (speaker, headset...), address (if known) and role (input, output) - * of an audio device. + * Class to represent the attributes of an audio device: its type (speaker, headset...), address + * (if known) and role (input, output). *

Unlike {@link AudioDeviceInfo}, the device * doesn't need to be connected to be uniquely identified, it can * for instance represent a specific A2DP headset even after a @@ -39,7 +39,7 @@ import java.util.Objects; * permission, APIs using one rely on MODIFY_AUDIO_ROUTING. */ @SystemApi -public final class AudioDevice implements Parcelable { +public final class AudioDeviceAttributes implements Parcelable { /** * A role identifying input devices, such as microphones. @@ -78,7 +78,7 @@ public final class AudioDevice implements Parcelable { * type and address. */ @SystemApi - public AudioDevice(@NonNull AudioDeviceInfo deviceInfo) { + public AudioDeviceAttributes(@NonNull AudioDeviceInfo deviceInfo) { Objects.requireNonNull(deviceInfo); mRole = deviceInfo.isSink() ? ROLE_OUTPUT : ROLE_INPUT; mType = deviceInfo.getType(); @@ -93,7 +93,7 @@ public final class AudioDevice implements Parcelable { * @param address the address of the device, or an empty string for devices without one */ @SystemApi - public AudioDevice(@Role int role, @AudioDeviceInfo.AudioDeviceType int type, + public AudioDeviceAttributes(@Role int role, @AudioDeviceInfo.AudioDeviceType int type, @NonNull String address) { Objects.requireNonNull(address); if (role != ROLE_OUTPUT && role != ROLE_INPUT) { @@ -111,7 +111,7 @@ public final class AudioDevice implements Parcelable { mAddress = address; } - /*package*/ AudioDevice(int nativeType, @NonNull String address) { + /*package*/ AudioDeviceAttributes(int nativeType, @NonNull String address) { mRole = (nativeType & AudioSystem.DEVICE_BIT_IN) != 0 ? ROLE_INPUT : ROLE_OUTPUT; mType = AudioDeviceInfo.convertInternalDeviceToDeviceType(nativeType); mAddress = address; @@ -157,7 +157,7 @@ public final class AudioDevice implements Parcelable { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - AudioDevice that = (AudioDevice) o; + AudioDeviceAttributes that = (AudioDeviceAttributes) o; return ((mRole == that.mRole) && (mType == that.mType) && mAddress.equals(that.mAddress)); @@ -170,7 +170,7 @@ public final class AudioDevice implements Parcelable { @Override public String toString() { - return new String("AudioDevice:" + return new String("AudioDeviceAttributes:" + " role:" + roleToString(mRole) + " type:" + (mRole == ROLE_OUTPUT ? AudioSystem.getOutputDeviceName( AudioDeviceInfo.convertDeviceTypeToInternalDevice(mType)) @@ -191,25 +191,25 @@ public final class AudioDevice implements Parcelable { dest.writeString(mAddress); } - private AudioDevice(@NonNull Parcel in) { + private AudioDeviceAttributes(@NonNull Parcel in) { mRole = in.readInt(); mType = in.readInt(); mAddress = in.readString(); } - public static final @NonNull Parcelable.Creator CREATOR = - new Parcelable.Creator() { + public static final @NonNull Parcelable.Creator CREATOR = + new Parcelable.Creator() { /** - * Rebuilds an AudioDevice previously stored with writeToParcel(). - * @param p Parcel object to read the AudioDevice from - * @return a new AudioDevice created from the data in the parcel + * Rebuilds an AudioDeviceAttributes previously stored with writeToParcel(). + * @param p Parcel object to read the AudioDeviceAttributes from + * @return a new AudioDeviceAttributes created from the data in the parcel */ - public AudioDevice createFromParcel(Parcel p) { - return new AudioDevice(p); + public AudioDeviceAttributes createFromParcel(Parcel p) { + return new AudioDeviceAttributes(p); } - public AudioDevice[] newArray(int size) { - return new AudioDevice[size]; + public AudioDeviceAttributes[] newArray(int size) { + return new AudioDeviceAttributes[size]; } }; } diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 112bb9c312764..0b825f6dba54c 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -1597,7 +1597,7 @@ public class AudioManager { @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull AudioProductStrategy strategy, - @NonNull AudioDevice device) { + @NonNull AudioDeviceAttributes device) { Objects.requireNonNull(strategy); Objects.requireNonNull(device); try { @@ -1612,7 +1612,7 @@ public class AudioManager { /** * @hide * Removes the preferred audio device previously set with - * {@link #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDevice)}. + * {@link #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDeviceAttributes)}. * @param strategy the audio strategy whose routing will be affected * @return true if the operation was successful, false otherwise (invalid strategy, or no * device set for example) @@ -1633,14 +1633,14 @@ public class AudioManager { /** * @hide * Return the preferred device for an audio strategy, previously set with - * {@link #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDevice)} + * {@link #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDeviceAttributes)} * @param strategy the strategy to query * @return the preferred device for that strategy, or null if none was ever set or if the * strategy is invalid */ @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) - public @Nullable AudioDevice getPreferredDeviceForStrategy( + public @Nullable AudioDeviceAttributes getPreferredDeviceForStrategy( @NonNull AudioProductStrategy strategy) { Objects.requireNonNull(strategy); try { @@ -1654,7 +1654,7 @@ public class AudioManager { * @hide * Interface to be notified of changes in the preferred audio device set for a given audio * strategy. - * @see #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDevice) + * @see #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDeviceAttributes) * @see #removePreferredDeviceForStrategy(AudioProductStrategy) * @see #getPreferredDeviceForStrategy(AudioProductStrategy) */ @@ -1668,7 +1668,7 @@ public class AudioManager { * preferred audio device */ void onPreferredDeviceForStrategyChanged(@NonNull AudioProductStrategy strategy, - @Nullable AudioDevice device); + @Nullable AudioDeviceAttributes device); } /** @@ -1768,7 +1768,8 @@ public class AudioManager { extends IStrategyPreferredDeviceDispatcher.Stub { @Override - public void dispatchPrefDeviceChanged(int strategyId, @Nullable AudioDevice device) { + public void dispatchPrefDeviceChanged(int strategyId, + @Nullable AudioDeviceAttributes device) { // make a shallow copy of listeners so callback is not executed under lock final ArrayList prefDevListeners; synchronized (mPrefDevListenerLock) { @@ -4553,7 +4554,7 @@ public class AudioManager { */ @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) - public @NonNull List getDevicesForAttributes( + public @NonNull List getDevicesForAttributes( @NonNull AudioAttributes attributes) { Objects.requireNonNull(attributes); final IAudioService service = getService(); diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index 53379b8761c42..8b973a177f903 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -1096,18 +1096,18 @@ public class AudioSystem * @return an empty list if there was an issue with the request, a list of audio devices * otherwise (typically one device, except for duplicated paths). */ - public static @NonNull ArrayList getDevicesForAttributes( + public static @NonNull ArrayList getDevicesForAttributes( @NonNull AudioAttributes attributes) { Objects.requireNonNull(attributes); - final AudioDevice[] devices = new AudioDevice[MAX_DEVICE_ROUTING]; + final AudioDeviceAttributes[] devices = new AudioDeviceAttributes[MAX_DEVICE_ROUTING]; final int res = getDevicesForAttributes(attributes, devices); - final ArrayList routeDevices = new ArrayList<>(); + final ArrayList routeDevices = new ArrayList<>(); if (res != SUCCESS) { Log.e(TAG, "error " + res + " in getDevicesForAttributes for " + attributes); return routeDevices; } - for (AudioDevice device : devices) { + for (AudioDeviceAttributes device : devices) { if (device != null) { routeDevices.add(device); } @@ -1117,12 +1117,12 @@ public class AudioSystem /** * Maximum number of audio devices a track is ever routed to, determines the size of the - * array passed to {@link #getDevicesForAttributes(AudioAttributes, AudioDevice[])} + * array passed to {@link #getDevicesForAttributes(AudioAttributes, AudioDeviceAttributes[])} */ private static final int MAX_DEVICE_ROUTING = 4; private static native int getDevicesForAttributes(@NonNull AudioAttributes aa, - @NonNull AudioDevice[] devices); + @NonNull AudioDeviceAttributes[] devices); /** @hide returns true if master mono is enabled. */ public static native boolean getMasterMono(); @@ -1257,7 +1257,7 @@ public class AudioSystem * @return {@link #SUCCESS} if successfully set */ public static int setPreferredDeviceForStrategy( - int strategy, @NonNull AudioDevice device) { + int strategy, @NonNull AudioDeviceAttributes device) { return setPreferredDeviceForStrategy(strategy, AudioDeviceInfo.convertDeviceTypeToInternalDevice(device.getType()), device.getAddress()); @@ -1288,7 +1288,7 @@ public class AudioSystem * and written to the array */ public static native int getPreferredDeviceForStrategy(int strategy, - AudioDevice[] device); + AudioDeviceAttributes[] device); // Items shared with audio service diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index 27bf3fe6f0239..5f320cd052c9f 100644 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -18,7 +18,7 @@ package android.media; import android.bluetooth.BluetoothDevice; import android.media.AudioAttributes; -import android.media.AudioDevice; +import android.media.AudioDeviceAttributes; import android.media.AudioFocusInfo; import android.media.AudioPlaybackConfiguration; import android.media.AudioRecordingConfiguration; @@ -275,13 +275,13 @@ interface IAudioService { boolean isCallScreeningModeSupported(); - int setPreferredDeviceForStrategy(in int strategy, in AudioDevice device); + int setPreferredDeviceForStrategy(in int strategy, in AudioDeviceAttributes device); int removePreferredDeviceForStrategy(in int strategy); - AudioDevice getPreferredDeviceForStrategy(in int strategy); + AudioDeviceAttributes getPreferredDeviceForStrategy(in int strategy); - List getDevicesForAttributes(in AudioAttributes attributes); + List getDevicesForAttributes(in AudioAttributes attributes); int setAllowedCapturePolicy(in int capturePolicy); diff --git a/media/java/android/media/IStrategyPreferredDeviceDispatcher.aidl b/media/java/android/media/IStrategyPreferredDeviceDispatcher.aidl index 6db9e52c9d470..b1f99e6b729e0 100644 --- a/media/java/android/media/IStrategyPreferredDeviceDispatcher.aidl +++ b/media/java/android/media/IStrategyPreferredDeviceDispatcher.aidl @@ -16,7 +16,7 @@ package android.media; -import android.media.AudioDevice; +import android.media.AudioDeviceAttributes; /** * AIDL for AudioService to signal audio strategy-preferred device updates. @@ -25,6 +25,6 @@ import android.media.AudioDevice; */ oneway interface IStrategyPreferredDeviceDispatcher { - void dispatchPrefDeviceChanged(int strategyId, in AudioDevice device); + void dispatchPrefDeviceChanged(int strategyId, in AudioDeviceAttributes device); } diff --git a/media/java/android/media/audiofx/AudioEffect.java b/media/java/android/media/audiofx/AudioEffect.java index 6157ef4657ed7..2587350b68304 100644 --- a/media/java/android/media/audiofx/AudioEffect.java +++ b/media/java/android/media/audiofx/AudioEffect.java @@ -25,7 +25,7 @@ import android.annotation.SystemApi; import android.annotation.TestApi; import android.app.ActivityThread; import android.compat.annotation.UnsupportedAppUsage; -import android.media.AudioDevice; +import android.media.AudioDeviceAttributes; import android.media.AudioDeviceInfo; import android.media.AudioSystem; import android.os.Build; @@ -476,12 +476,12 @@ public class AudioEffect { */ @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS) - public AudioEffect(@NonNull UUID uuid, @NonNull AudioDevice device) { + public AudioEffect(@NonNull UUID uuid, @NonNull AudioDeviceAttributes device) { this(EFFECT_TYPE_NULL, Objects.requireNonNull(uuid), 0, -2, Objects.requireNonNull(device)); } private AudioEffect(UUID type, UUID uuid, int priority, - int audioSession, @Nullable AudioDevice device) + int audioSession, @Nullable AudioDeviceAttributes device) throws IllegalArgumentException, UnsupportedOperationException, RuntimeException { int[] id = new int[1]; diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java index 566b72d728e67..b546120e2b954 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java +++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java @@ -24,7 +24,7 @@ import android.bluetooth.BluetoothProfile; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.media.AudioDevice; +import android.media.AudioDeviceAttributes; import android.media.AudioManager; import android.media.AudioRoutesInfo; import android.media.AudioSystem; @@ -403,7 +403,7 @@ import java.io.PrintWriter; } /*package*/ int setPreferredDeviceForStrategySync(int strategy, - @NonNull AudioDevice device) { + @NonNull AudioDeviceAttributes device) { return mDeviceInventory.setPreferredDeviceForStrategySync(strategy, device); } @@ -554,7 +554,8 @@ import java.io.PrintWriter; sendLMsgNoDelay(MSG_L_SCOCLIENT_DIED, SENDMSG_QUEUE, obj); } - /*package*/ void postSaveSetPreferredDeviceForStrategy(int strategy, AudioDevice device) + /*package*/ void postSaveSetPreferredDeviceForStrategy(int strategy, + AudioDeviceAttributes device) { sendILMsgNoDelay(MSG_IL_SAVE_PREF_DEVICE_FOR_STRATEGY, SENDMSG_QUEUE, strategy, device); } @@ -915,7 +916,7 @@ import java.io.PrintWriter; } break; case MSG_IL_SAVE_PREF_DEVICE_FOR_STRATEGY: { final int strategy = msg.arg1; - final AudioDevice device = (AudioDevice) msg.obj; + final AudioDeviceAttributes device = (AudioDeviceAttributes) msg.obj; mDeviceInventory.onSaveSetPreferredDevice(strategy, device); } break; case MSG_I_SAVE_REMOVE_PREF_DEVICE_FOR_STRATEGY: { diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java index e170db07b398e..c17ed3e292ef1 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java +++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java @@ -24,7 +24,7 @@ import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHearingAid; import android.bluetooth.BluetoothProfile; import android.content.Intent; -import android.media.AudioDevice; +import android.media.AudioDeviceAttributes; import android.media.AudioDevicePort; import android.media.AudioFormat; import android.media.AudioManager; @@ -77,7 +77,7 @@ public class AudioDeviceInventory { private final ArrayMap mApmConnectedDevices = new ArrayMap<>(); // List of preferred devices for strategies - private final ArrayMap mPreferredDevices = new ArrayMap<>(); + private final ArrayMap mPreferredDevices = new ArrayMap<>(); // the wrapper for AudioSystem static methods, allows us to spy AudioSystem private final @NonNull AudioSystemAdapter mAudioSystem; @@ -474,7 +474,7 @@ public class AudioDeviceInventory { } } - /*package*/ void onSaveSetPreferredDevice(int strategy, @NonNull AudioDevice device) { + /*package*/ void onSaveSetPreferredDevice(int strategy, @NonNull AudioDeviceAttributes device) { mPreferredDevices.put(strategy, device); dispatchPreferredDevice(strategy, device); } @@ -488,7 +488,7 @@ public class AudioDeviceInventory { // /*package*/ int setPreferredDeviceForStrategySync(int strategy, - @NonNull AudioDevice device) { + @NonNull AudioDeviceAttributes device) { final long identity = Binder.clearCallingIdentity(); final int status = mAudioSystem.setPreferredDeviceForStrategy(strategy, device); Binder.restoreCallingIdentity(identity); @@ -1112,7 +1112,7 @@ public class AudioDeviceInventory { } } - private void dispatchPreferredDevice(int strategy, @Nullable AudioDevice device) { + private void dispatchPreferredDevice(int strategy, @Nullable AudioDeviceAttributes device) { final int nbDispatchers = mPrefDevDispatchers.beginBroadcast(); for (int i = 0; i < nbDispatchers; i++) { try { diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 4be74b5108792..f3d42ad1c7931 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -65,7 +65,7 @@ import android.hardware.usb.UsbManager; import android.hidl.manager.V1_0.IServiceManager; import android.media.AudioAttributes; import android.media.AudioAttributes.AttributeSystemUsage; -import android.media.AudioDevice; +import android.media.AudioDeviceAttributes; import android.media.AudioDeviceInfo; import android.media.AudioFocusInfo; import android.media.AudioFocusRequest; @@ -1734,7 +1734,7 @@ public class AudioService extends IAudioService.Stub // IPC methods /////////////////////////////////////////////////////////////////////////// /** @see AudioManager#setPreferredDeviceForStrategy(AudioProductStrategy, AudioDeviceInfo) */ - public int setPreferredDeviceForStrategy(int strategy, AudioDevice device) { + public int setPreferredDeviceForStrategy(int strategy, AudioDeviceAttributes device) { if (device == null) { return AudioSystem.ERROR; } @@ -1743,7 +1743,7 @@ public class AudioService extends IAudioService.Stub "setPreferredDeviceForStrategy u/pid:%d/%d strat:%d dev:%s", Binder.getCallingUid(), Binder.getCallingPid(), strategy, device.toString()); sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG)); - if (device.getRole() == AudioDevice.ROLE_INPUT) { + if (device.getRole() == AudioDeviceAttributes.ROLE_INPUT) { Log.e(TAG, "Unsupported input routing in " + logString); return AudioSystem.ERROR; } @@ -1771,9 +1771,9 @@ public class AudioService extends IAudioService.Stub } /** @see AudioManager#getPreferredDeviceForStrategy(AudioProductStrategy) */ - public AudioDevice getPreferredDeviceForStrategy(int strategy) { + public AudioDeviceAttributes getPreferredDeviceForStrategy(int strategy) { enforceModifyAudioRoutingPermission(); - AudioDevice[] devices = new AudioDevice[1]; + AudioDeviceAttributes[] devices = new AudioDeviceAttributes[1]; final long identity = Binder.clearCallingIdentity(); final int status = AudioSystem.getPreferredDeviceForStrategy(strategy, devices); Binder.restoreCallingIdentity(identity); @@ -1807,7 +1807,7 @@ public class AudioService extends IAudioService.Stub } /** @see AudioManager#getDevicesForAttributes(AudioAttributes) */ - public @NonNull ArrayList getDevicesForAttributes( + public @NonNull ArrayList getDevicesForAttributes( @NonNull AudioAttributes attributes) { Objects.requireNonNull(attributes); enforceModifyAudioRoutingPermission(); diff --git a/services/core/java/com/android/server/audio/AudioSystemAdapter.java b/services/core/java/com/android/server/audio/AudioSystemAdapter.java index a3086c050af1a..9f8f9f8fddde4 100644 --- a/services/core/java/com/android/server/audio/AudioSystemAdapter.java +++ b/services/core/java/com/android/server/audio/AudioSystemAdapter.java @@ -17,7 +17,7 @@ package com.android.server.audio; import android.annotation.NonNull; -import android.media.AudioDevice; +import android.media.AudioDeviceAttributes; import android.media.AudioSystem; import android.util.Log; @@ -86,12 +86,12 @@ public class AudioSystemAdapter { } /** - * Same as {@link AudioSystem#setPreferredDeviceForStrategy(int, AudioDevice)} + * Same as {@link AudioSystem#setPreferredDeviceForStrategy(int, AudioDeviceAttributes)} * @param strategy * @param device * @return */ - public int setPreferredDeviceForStrategy(int strategy, @NonNull AudioDevice device) { + public int setPreferredDeviceForStrategy(int strategy, @NonNull AudioDeviceAttributes device) { return AudioSystem.setPreferredDeviceForStrategy(strategy, device); } @@ -138,7 +138,8 @@ public class AudioSystemAdapter { } @Override - public int setPreferredDeviceForStrategy(int strategy, @NonNull AudioDevice device) { + public int setPreferredDeviceForStrategy(int strategy, + @NonNull AudioDeviceAttributes device) { return AudioSystem.AUDIO_STATUS_OK; }