Merge "Rename AudioDevice to AudioDeviceAttributes"

This commit is contained in:
Jean-Michel Trivi
2020-02-19 05:51:11 +00:00
committed by Android (Google) Code Review
17 changed files with 104 additions and 100 deletions

View File

@@ -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<android.media.AudioDevice> CREATOR;
field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioDeviceAttributes> 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<android.media.audiopolicy.AudioProductStrategy> getAudioProductStrategies();
method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups();
method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDevice> getDevicesForAttributes(@NonNull android.media.AudioAttributes);
method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDeviceAttributes> 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);
}
}

View File

@@ -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",

View File

@@ -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),

View File

@@ -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<jstring> 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, "<init>", "(ILjava/lang/String;)V");
return 0;

View File

@@ -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 <media/AudioDeviceTypeAddr.h>
#include <system/audio.h>
@@ -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

View File

@@ -34,7 +34,7 @@
#include <system/audio.h>
#include <system/audio_policy.h>
#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},

View File

@@ -15,4 +15,4 @@
package android.media;
parcelable AudioDevice;
parcelable AudioDeviceAttributes;

View File

@@ -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).
* <p>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<AudioDevice> CREATOR =
new Parcelable.Creator<AudioDevice>() {
public static final @NonNull Parcelable.Creator<AudioDeviceAttributes> CREATOR =
new Parcelable.Creator<AudioDeviceAttributes>() {
/**
* 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];
}
};
}

View File

@@ -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<PrefDevListenerInfo> prefDevListeners;
synchronized (mPrefDevListenerLock) {
@@ -4553,7 +4554,7 @@ public class AudioManager {
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
public @NonNull List<AudioDevice> getDevicesForAttributes(
public @NonNull List<AudioDeviceAttributes> getDevicesForAttributes(
@NonNull AudioAttributes attributes) {
Objects.requireNonNull(attributes);
final IAudioService service = getService();

View File

@@ -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<AudioDevice> getDevicesForAttributes(
public static @NonNull ArrayList<AudioDeviceAttributes> 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<AudioDevice> routeDevices = new ArrayList<>();
final ArrayList<AudioDeviceAttributes> 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

View File

@@ -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<AudioDevice> getDevicesForAttributes(in AudioAttributes attributes);
List<AudioDeviceAttributes> getDevicesForAttributes(in AudioAttributes attributes);
int setAllowedCapturePolicy(in int capturePolicy);

View File

@@ -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);
}

View File

@@ -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];

View File

@@ -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: {

View File

@@ -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<Integer, String> mApmConnectedDevices = new ArrayMap<>();
// List of preferred devices for strategies
private final ArrayMap<Integer, AudioDevice> mPreferredDevices = new ArrayMap<>();
private final ArrayMap<Integer, AudioDeviceAttributes> 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 {

View File

@@ -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<AudioDevice> getDevicesForAttributes(
public @NonNull ArrayList<AudioDeviceAttributes> getDevicesForAttributes(
@NonNull AudioAttributes attributes) {
Objects.requireNonNull(attributes);
enforceModifyAudioRoutingPermission();

View File

@@ -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;
}