Loading api/current.txt +46 −0 Original line number Diff line number Diff line Loading @@ -7661,6 +7661,7 @@ package android.content { field public static final java.lang.String ALARM_SERVICE = "alarm"; field public static final java.lang.String APPWIDGET_SERVICE = "appwidget"; field public static final java.lang.String APP_OPS_SERVICE = "appops"; field public static final java.lang.String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; field public static final java.lang.String AUDIO_SERVICE = "audio"; field public static final java.lang.String BATTERY_SERVICE = "batterymanager"; field public static final int BIND_ABOVE_CLIENT = 8; // 0x8 Loading Loading @@ -14567,6 +14568,47 @@ package android.media { method public android.media.AudioAttributes.Builder setUsage(int); } public class AudioDeviceInfo { method public java.lang.String getAddress(); method public int[] getChannelCounts(); method public int[] getChannelMasks(); method public int[] getFormats(); method public java.lang.String getName(); method public int[] getSampleRates(); method public int getType(); method public boolean isSink(); method public boolean isSource(); field public static final int TYPE_AUX_LINE = 19; // 0x13 field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8 field public static final int TYPE_BLUETOOTH_SCO = 7; // 0x7 field public static final int TYPE_BUILTIN_EARPIECE = 1; // 0x1 field public static final int TYPE_BUILTIN_MIC = 15; // 0xf field public static final int TYPE_BUILTIN_SPEAKER = 2; // 0x2 field public static final int TYPE_DOCK = 13; // 0xd field public static final int TYPE_FM = 14; // 0xe field public static final int TYPE_FM_TUNER = 16; // 0x10 field public static final int TYPE_HDMI = 9; // 0x9 field public static final int TYPE_HDMI_ARC = 10; // 0xa field public static final int TYPE_LINE_ANALOG = 5; // 0x5 field public static final int TYPE_LINE_DIGITAL = 6; // 0x6 field public static final int TYPE_TELEPHONY = 18; // 0x12 field public static final int TYPE_TV_TUNER = 17; // 0x11 field public static final int TYPE_UNKNOWN = 0; // 0x0 field public static final int TYPE_USB_ACCESSORY = 12; // 0xc field public static final int TYPE_USB_DEVICE = 11; // 0xb field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4 field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } public class AudioDevicesManager { method public void addOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener, android.os.Handler); method public android.media.AudioDeviceInfo[] listDevices(int); method public void removeOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener); field public static final int LIST_DEVICES_ALL = 3; // 0x3 field public static final int LIST_DEVICES_INPUTS = 1; // 0x1 field public static final int LIST_DEVICES_OUTPUTS = 2; // 0x2 } public class AudioFormat { method public int getChannelCount(); method public int getChannelIndexMask(); Loading Loading @@ -16209,6 +16251,10 @@ package android.media { ctor public NotProvisionedException(java.lang.String); } public abstract interface OnAudioDeviceConnectionListener { method public abstract void onAudioDeviceConnection(); } public final class Rating implements android.os.Parcelable { method public int describeContents(); method public float getPercentRating(); api/system-current.txt +46 −0 Original line number Diff line number Diff line Loading @@ -7876,6 +7876,7 @@ package android.content { field public static final java.lang.String ALARM_SERVICE = "alarm"; field public static final java.lang.String APPWIDGET_SERVICE = "appwidget"; field public static final java.lang.String APP_OPS_SERVICE = "appops"; field public static final java.lang.String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; field public static final java.lang.String AUDIO_SERVICE = "audio"; field public static final java.lang.String BACKUP_SERVICE = "backup"; field public static final java.lang.String BATTERY_SERVICE = "batterymanager"; Loading Loading @@ -15755,6 +15756,47 @@ package android.media { method public android.media.AudioAttributes.Builder setUsage(int); } public class AudioDeviceInfo { method public java.lang.String getAddress(); method public int[] getChannelCounts(); method public int[] getChannelMasks(); method public int[] getFormats(); method public java.lang.String getName(); method public int[] getSampleRates(); method public int getType(); method public boolean isSink(); method public boolean isSource(); field public static final int TYPE_AUX_LINE = 19; // 0x13 field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8 field public static final int TYPE_BLUETOOTH_SCO = 7; // 0x7 field public static final int TYPE_BUILTIN_EARPIECE = 1; // 0x1 field public static final int TYPE_BUILTIN_MIC = 15; // 0xf field public static final int TYPE_BUILTIN_SPEAKER = 2; // 0x2 field public static final int TYPE_DOCK = 13; // 0xd field public static final int TYPE_FM = 14; // 0xe field public static final int TYPE_FM_TUNER = 16; // 0x10 field public static final int TYPE_HDMI = 9; // 0x9 field public static final int TYPE_HDMI_ARC = 10; // 0xa field public static final int TYPE_LINE_ANALOG = 5; // 0x5 field public static final int TYPE_LINE_DIGITAL = 6; // 0x6 field public static final int TYPE_TELEPHONY = 18; // 0x12 field public static final int TYPE_TV_TUNER = 17; // 0x11 field public static final int TYPE_UNKNOWN = 0; // 0x0 field public static final int TYPE_USB_ACCESSORY = 12; // 0xc field public static final int TYPE_USB_DEVICE = 11; // 0xb field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4 field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } public class AudioDevicesManager { method public void addOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener, android.os.Handler); method public android.media.AudioDeviceInfo[] listDevices(int); method public void removeOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener); field public static final int LIST_DEVICES_ALL = 3; // 0x3 field public static final int LIST_DEVICES_INPUTS = 1; // 0x1 field public static final int LIST_DEVICES_OUTPUTS = 2; // 0x2 } public final class AudioFocusInfo implements android.os.Parcelable { method public int describeContents(); method public android.media.AudioAttributes getAttributes(); Loading Loading @@ -17424,6 +17466,10 @@ package android.media { ctor public NotProvisionedException(java.lang.String); } public abstract interface OnAudioDeviceConnectionListener { method public abstract void onAudioDeviceConnection(); } public final class Rating implements android.os.Parcelable { method public int describeContents(); method public float getPercentRating(); core/java/android/app/SystemServiceRegistry.java +8 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import android.location.CountryDetector; import android.location.ICountryDetector; import android.location.ILocationManager; import android.location.LocationManager; import android.media.AudioDevicesManager; import android.media.AudioManager; import android.media.MediaRouter; import android.media.midi.IMidiManager; Loading Loading @@ -693,6 +694,13 @@ final class SystemServiceRegistry { public RadioManager createService(ContextImpl ctx) { return new RadioManager(ctx); }}); registerService(Context.AUDIO_DEVICES_SERVICE, AudioDevicesManager.class, new CachedServiceFetcher<AudioDevicesManager>() { @Override public AudioDevicesManager createService(ContextImpl ctx) { return new AudioDevicesManager(ctx); }}); } /** Loading core/java/android/content/Context.java +9 −0 Original line number Diff line number Diff line Loading @@ -3077,6 +3077,15 @@ public abstract class Context { */ public static final String RADIO_SERVICE = "radio"; /** * Use with {@link #getSystemService} to retrieve a * {@link android.media.AudioDevicesManager} for handling device enumeration & notification. * * @see #getSystemService * @see android.media.AudioDevicesManager */ public static final String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; /** * Determine whether the given permission is allowed for a particular Loading media/java/android/media/AudioDevice.java→media/java/android/media/AudioDeviceInfo.java +71 −26 Original line number Diff line number Diff line Loading @@ -20,9 +20,8 @@ import android.util.SparseIntArray; /** * Class to provide information about the audio devices. * @hide */ public class AudioDevice { public class AudioDeviceInfo { /** * A device type associated with an unknown or uninitialized device. Loading Loading @@ -106,46 +105,92 @@ public class AudioDevice { */ public static final int TYPE_AUX_LINE = 19; AudioDevicePortConfig mConfig; private final AudioDevicePort mPort; AudioDevice(AudioDevicePortConfig config) { mConfig = new AudioDevicePortConfig(config); AudioDeviceInfo(AudioDevicePort port) { mPort = port; } /** * @hide * CANDIDATE FOR PUBLIC API * @return * @return The internal device ID. */ public boolean isInputDevice() { return (mConfig.port().role() == AudioPort.ROLE_SOURCE); public int getId() { return mPort.handle().id(); } /** * @hide * CANDIDATE FOR PUBLIC API * @return * @return The human-readable name of the audio device. */ public boolean isOutputDevice() { return (mConfig.port().role() == AudioPort.ROLE_SINK); public String getName() { return mPort.name(); } /** * @hide * CANDIDATE FOR PUBLIC API * @return * @return The "address" string of the device. This generally contains device-specific * parameters. */ public int getDeviceType() { return INT_TO_EXT_DEVICE_MAPPING.get(mConfig.port().type(), TYPE_UNKNOWN); // TODO Is there a compelling reason to expose this? public String getAddress() { return mPort.address(); } /** * @hide * CANDIDATE FOR PUBLIC API * @return * @return true if the audio device is a source for audio data (e.e an input). */ public String getAddress() { return mConfig.port().address(); public boolean isSource() { return mPort.role() == AudioPort.ROLE_SOURCE; } /** * @return true if the audio device is a sink for audio data (i.e. an output). */ public boolean isSink() { return mPort.role() == AudioPort.ROLE_SINK; } /** * @return An array of sample rates supported by the audio device. */ public int[] getSampleRates() { return mPort.samplingRates(); } /** * @return An array of channel masks supported by the audio device (defined in * AudioFormat.java). */ public int[] getChannelMasks() { return mPort.channelMasks(); } /** * @return An array of channel counts supported by the audio device. */ public int[] getChannelCounts() { int[] masks = getChannelMasks(); int[] counts = new int[masks.length]; for (int mask_index = 0; mask_index < masks.length; mask_index++) { counts[mask_index] = isSink() ? AudioFormat.channelCountFromOutChannelMask(masks[mask_index]) : AudioFormat.channelCountFromInChannelMask(masks[mask_index]); } return counts; } /** * @return An array of audio format IDs supported by the audio device (defined in * AudioFormat.java) */ public int[] getFormats() { return mPort.formats(); } /** * @return The device type identifier of the audio device (i.e. TYPE_BUILTIN_SPEAKER). */ public int getType() { return INT_TO_EXT_DEVICE_MAPPING.get(mPort.type(), TYPE_UNKNOWN); } /** @hide */ Loading Loading
api/current.txt +46 −0 Original line number Diff line number Diff line Loading @@ -7661,6 +7661,7 @@ package android.content { field public static final java.lang.String ALARM_SERVICE = "alarm"; field public static final java.lang.String APPWIDGET_SERVICE = "appwidget"; field public static final java.lang.String APP_OPS_SERVICE = "appops"; field public static final java.lang.String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; field public static final java.lang.String AUDIO_SERVICE = "audio"; field public static final java.lang.String BATTERY_SERVICE = "batterymanager"; field public static final int BIND_ABOVE_CLIENT = 8; // 0x8 Loading Loading @@ -14567,6 +14568,47 @@ package android.media { method public android.media.AudioAttributes.Builder setUsage(int); } public class AudioDeviceInfo { method public java.lang.String getAddress(); method public int[] getChannelCounts(); method public int[] getChannelMasks(); method public int[] getFormats(); method public java.lang.String getName(); method public int[] getSampleRates(); method public int getType(); method public boolean isSink(); method public boolean isSource(); field public static final int TYPE_AUX_LINE = 19; // 0x13 field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8 field public static final int TYPE_BLUETOOTH_SCO = 7; // 0x7 field public static final int TYPE_BUILTIN_EARPIECE = 1; // 0x1 field public static final int TYPE_BUILTIN_MIC = 15; // 0xf field public static final int TYPE_BUILTIN_SPEAKER = 2; // 0x2 field public static final int TYPE_DOCK = 13; // 0xd field public static final int TYPE_FM = 14; // 0xe field public static final int TYPE_FM_TUNER = 16; // 0x10 field public static final int TYPE_HDMI = 9; // 0x9 field public static final int TYPE_HDMI_ARC = 10; // 0xa field public static final int TYPE_LINE_ANALOG = 5; // 0x5 field public static final int TYPE_LINE_DIGITAL = 6; // 0x6 field public static final int TYPE_TELEPHONY = 18; // 0x12 field public static final int TYPE_TV_TUNER = 17; // 0x11 field public static final int TYPE_UNKNOWN = 0; // 0x0 field public static final int TYPE_USB_ACCESSORY = 12; // 0xc field public static final int TYPE_USB_DEVICE = 11; // 0xb field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4 field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } public class AudioDevicesManager { method public void addOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener, android.os.Handler); method public android.media.AudioDeviceInfo[] listDevices(int); method public void removeOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener); field public static final int LIST_DEVICES_ALL = 3; // 0x3 field public static final int LIST_DEVICES_INPUTS = 1; // 0x1 field public static final int LIST_DEVICES_OUTPUTS = 2; // 0x2 } public class AudioFormat { method public int getChannelCount(); method public int getChannelIndexMask(); Loading Loading @@ -16209,6 +16251,10 @@ package android.media { ctor public NotProvisionedException(java.lang.String); } public abstract interface OnAudioDeviceConnectionListener { method public abstract void onAudioDeviceConnection(); } public final class Rating implements android.os.Parcelable { method public int describeContents(); method public float getPercentRating();
api/system-current.txt +46 −0 Original line number Diff line number Diff line Loading @@ -7876,6 +7876,7 @@ package android.content { field public static final java.lang.String ALARM_SERVICE = "alarm"; field public static final java.lang.String APPWIDGET_SERVICE = "appwidget"; field public static final java.lang.String APP_OPS_SERVICE = "appops"; field public static final java.lang.String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; field public static final java.lang.String AUDIO_SERVICE = "audio"; field public static final java.lang.String BACKUP_SERVICE = "backup"; field public static final java.lang.String BATTERY_SERVICE = "batterymanager"; Loading Loading @@ -15755,6 +15756,47 @@ package android.media { method public android.media.AudioAttributes.Builder setUsage(int); } public class AudioDeviceInfo { method public java.lang.String getAddress(); method public int[] getChannelCounts(); method public int[] getChannelMasks(); method public int[] getFormats(); method public java.lang.String getName(); method public int[] getSampleRates(); method public int getType(); method public boolean isSink(); method public boolean isSource(); field public static final int TYPE_AUX_LINE = 19; // 0x13 field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8 field public static final int TYPE_BLUETOOTH_SCO = 7; // 0x7 field public static final int TYPE_BUILTIN_EARPIECE = 1; // 0x1 field public static final int TYPE_BUILTIN_MIC = 15; // 0xf field public static final int TYPE_BUILTIN_SPEAKER = 2; // 0x2 field public static final int TYPE_DOCK = 13; // 0xd field public static final int TYPE_FM = 14; // 0xe field public static final int TYPE_FM_TUNER = 16; // 0x10 field public static final int TYPE_HDMI = 9; // 0x9 field public static final int TYPE_HDMI_ARC = 10; // 0xa field public static final int TYPE_LINE_ANALOG = 5; // 0x5 field public static final int TYPE_LINE_DIGITAL = 6; // 0x6 field public static final int TYPE_TELEPHONY = 18; // 0x12 field public static final int TYPE_TV_TUNER = 17; // 0x11 field public static final int TYPE_UNKNOWN = 0; // 0x0 field public static final int TYPE_USB_ACCESSORY = 12; // 0xc field public static final int TYPE_USB_DEVICE = 11; // 0xb field public static final int TYPE_WIRED_HEADPHONES = 4; // 0x4 field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } public class AudioDevicesManager { method public void addOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener, android.os.Handler); method public android.media.AudioDeviceInfo[] listDevices(int); method public void removeOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener); field public static final int LIST_DEVICES_ALL = 3; // 0x3 field public static final int LIST_DEVICES_INPUTS = 1; // 0x1 field public static final int LIST_DEVICES_OUTPUTS = 2; // 0x2 } public final class AudioFocusInfo implements android.os.Parcelable { method public int describeContents(); method public android.media.AudioAttributes getAttributes(); Loading Loading @@ -17424,6 +17466,10 @@ package android.media { ctor public NotProvisionedException(java.lang.String); } public abstract interface OnAudioDeviceConnectionListener { method public abstract void onAudioDeviceConnection(); } public final class Rating implements android.os.Parcelable { method public int describeContents(); method public float getPercentRating();
core/java/android/app/SystemServiceRegistry.java +8 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import android.location.CountryDetector; import android.location.ICountryDetector; import android.location.ILocationManager; import android.location.LocationManager; import android.media.AudioDevicesManager; import android.media.AudioManager; import android.media.MediaRouter; import android.media.midi.IMidiManager; Loading Loading @@ -693,6 +694,13 @@ final class SystemServiceRegistry { public RadioManager createService(ContextImpl ctx) { return new RadioManager(ctx); }}); registerService(Context.AUDIO_DEVICES_SERVICE, AudioDevicesManager.class, new CachedServiceFetcher<AudioDevicesManager>() { @Override public AudioDevicesManager createService(ContextImpl ctx) { return new AudioDevicesManager(ctx); }}); } /** Loading
core/java/android/content/Context.java +9 −0 Original line number Diff line number Diff line Loading @@ -3077,6 +3077,15 @@ public abstract class Context { */ public static final String RADIO_SERVICE = "radio"; /** * Use with {@link #getSystemService} to retrieve a * {@link android.media.AudioDevicesManager} for handling device enumeration & notification. * * @see #getSystemService * @see android.media.AudioDevicesManager */ public static final String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; /** * Determine whether the given permission is allowed for a particular Loading
media/java/android/media/AudioDevice.java→media/java/android/media/AudioDeviceInfo.java +71 −26 Original line number Diff line number Diff line Loading @@ -20,9 +20,8 @@ import android.util.SparseIntArray; /** * Class to provide information about the audio devices. * @hide */ public class AudioDevice { public class AudioDeviceInfo { /** * A device type associated with an unknown or uninitialized device. Loading Loading @@ -106,46 +105,92 @@ public class AudioDevice { */ public static final int TYPE_AUX_LINE = 19; AudioDevicePortConfig mConfig; private final AudioDevicePort mPort; AudioDevice(AudioDevicePortConfig config) { mConfig = new AudioDevicePortConfig(config); AudioDeviceInfo(AudioDevicePort port) { mPort = port; } /** * @hide * CANDIDATE FOR PUBLIC API * @return * @return The internal device ID. */ public boolean isInputDevice() { return (mConfig.port().role() == AudioPort.ROLE_SOURCE); public int getId() { return mPort.handle().id(); } /** * @hide * CANDIDATE FOR PUBLIC API * @return * @return The human-readable name of the audio device. */ public boolean isOutputDevice() { return (mConfig.port().role() == AudioPort.ROLE_SINK); public String getName() { return mPort.name(); } /** * @hide * CANDIDATE FOR PUBLIC API * @return * @return The "address" string of the device. This generally contains device-specific * parameters. */ public int getDeviceType() { return INT_TO_EXT_DEVICE_MAPPING.get(mConfig.port().type(), TYPE_UNKNOWN); // TODO Is there a compelling reason to expose this? public String getAddress() { return mPort.address(); } /** * @hide * CANDIDATE FOR PUBLIC API * @return * @return true if the audio device is a source for audio data (e.e an input). */ public String getAddress() { return mConfig.port().address(); public boolean isSource() { return mPort.role() == AudioPort.ROLE_SOURCE; } /** * @return true if the audio device is a sink for audio data (i.e. an output). */ public boolean isSink() { return mPort.role() == AudioPort.ROLE_SINK; } /** * @return An array of sample rates supported by the audio device. */ public int[] getSampleRates() { return mPort.samplingRates(); } /** * @return An array of channel masks supported by the audio device (defined in * AudioFormat.java). */ public int[] getChannelMasks() { return mPort.channelMasks(); } /** * @return An array of channel counts supported by the audio device. */ public int[] getChannelCounts() { int[] masks = getChannelMasks(); int[] counts = new int[masks.length]; for (int mask_index = 0; mask_index < masks.length; mask_index++) { counts[mask_index] = isSink() ? AudioFormat.channelCountFromOutChannelMask(masks[mask_index]) : AudioFormat.channelCountFromInChannelMask(masks[mask_index]); } return counts; } /** * @return An array of audio format IDs supported by the audio device (defined in * AudioFormat.java) */ public int[] getFormats() { return mPort.formats(); } /** * @return The device type identifier of the audio device (i.e. TYPE_BUILTIN_SPEAKER). */ public int getType() { return INT_TO_EXT_DEVICE_MAPPING.get(mPort.type(), TYPE_UNKNOWN); } /** @hide */ Loading