Audio设备的定义位于framework中,分为C++层和Java层的定义。Java层的定义对第三方应用不可见,即通过标准API无法使用。
1.C++中audio设备的定义
audio设备的定义在2.3.7及之前是位于frameworks/base/include/media目录下的AudioSystem.h文件中。
在ics4.0及以后是移到了hardware/libhardware_legacy/include/hardware_legacy目录下的AudioSystemLegacy.h文件中,
但此定义在4.2中已经废弃,需要使用/system/core/include/system/audio.h中的定义。audio.h中音频设备定义如下:
- enum {
- AUDIO_DEVICE_NONE = 0x0,
- /* reserved bits */
- AUDIO_DEVICE_BIT_IN = 0x80000000,
- AUDIO_DEVICE_BIT_DEFAULT = 0x40000000,
- /* output devices */
- AUDIO_DEVICE_OUT_EARPIECE = 0x1, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 听筒</span>
- AUDIO_DEVICE_OUT_SPEAKER = 0x2, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 扬声器</span>
- AUDIO_DEVICE_OUT_WIRED_HEADSET = 0x4, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 线控耳机,可以通过耳机控制远端播放、暂停、音量调节等功能的耳机</span>
- AUDIO_DEVICE_OUT_WIRED_HEADPHONE = 0x8, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 普通耳机,只能听,不能操控播放</span>
- AUDIO_DEVICE_OUT_BLUETOOTH_SCO = 0x10, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 单声道蓝牙耳机,十进制32</span>
- AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET = 0x20, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 车载免提蓝牙设备,十进制64</span>
- AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT = 0x40, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 立体声蓝牙耳机</span>
- AUDIO_DEVICE_OUT_BLUETOOTH_A2DP = 0x80, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 十进制128</span>
- AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES = 0x100, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 十进制256</span>
- AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER = 0x200, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 十进制512</span>
- AUDIO_DEVICE_OUT_AUX_DIGITAL = 0x400, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 十进制1024</span>
- AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET = 0x800, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 十进制2048</span>
- AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET = 0x1000, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">// 十进制4096</span>
- AUDIO_DEVICE_OUT_USB_ACCESSORY = 0x2000,
- AUDIO_DEVICE_OUT_USB_DEVICE = 0x4000,
- AUDIO_DEVICE_OUT_REMOTE_SUBMIX = 0x8000,
- AUDIO_DEVICE_OUT_DEFAULT = AUDIO_DEVICE_BIT_DEFAULT,
- AUDIO_DEVICE_OUT_ALL = (AUDIO_DEVICE_OUT_EARPIECE |
- AUDIO_DEVICE_OUT_SPEAKER |
- AUDIO_DEVICE_OUT_WIRED_HEADSET |
- AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
- AUDIO_DEVICE_OUT_BLUETOOTH_SCO |
- AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET |
- AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT |
- AUDIO_DEVICE_OUT_BLUETOOTH_A2DP |
- AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES |
- AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER |
- AUDIO_DEVICE_OUT_AUX_DIGITAL |
- AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET |
- AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET |
- AUDIO_DEVICE_OUT_USB_ACCESSORY |
- AUDIO_DEVICE_OUT_USB_DEVICE |
- AUDIO_DEVICE_OUT_REMOTE_SUBMIX |
- AUDIO_DEVICE_OUT_DEFAULT),
- AUDIO_DEVICE_OUT_ALL_A2DP = (AUDIO_DEVICE_OUT_BLUETOOTH_A2DP |
- AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES |
- AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),
- AUDIO_DEVICE_OUT_ALL_SCO = (AUDIO_DEVICE_OUT_BLUETOOTH_SCO |
- AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET |
- AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
- AUDIO_DEVICE_OUT_ALL_USB = (AUDIO_DEVICE_OUT_USB_ACCESSORY |
- AUDIO_DEVICE_OUT_USB_DEVICE),
-
- /* input devices */
- AUDIO_DEVICE_IN_COMMUNICATION = AUDIO_DEVICE_BIT_IN | 0x1,
- AUDIO_DEVICE_IN_AMBIENT = AUDIO_DEVICE_BIT_IN | 0x2,
- AUDIO_DEVICE_IN_BUILTIN_MIC = AUDIO_DEVICE_BIT_IN | 0x4, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">//手机自带MIC</span>
- AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET = AUDIO_DEVICE_BIT_IN | 0x8,
- AUDIO_DEVICE_IN_WIRED_HEADSET = AUDIO_DEVICE_BIT_IN | 0x10, <span style="color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 11.818181991577148px; line-height: 18px;">//耳机</span>
- AUDIO_DEVICE_IN_AUX_DIGITAL = AUDIO_DEVICE_BIT_IN | 0x20,
- AUDIO_DEVICE_IN_VOICE_CALL = AUDIO_DEVICE_BIT_IN | 0x40,
- AUDIO_DEVICE_IN_BACK_MIC = AUDIO_DEVICE_BIT_IN | 0x80,
- AUDIO_DEVICE_IN_REMOTE_SUBMIX = AUDIO_DEVICE_BIT_IN | 0x100,
- AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET = AUDIO_DEVICE_BIT_IN | 0x200,
- AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET = AUDIO_DEVICE_BIT_IN | 0x400,
- AUDIO_DEVICE_IN_USB_ACCESSORY = AUDIO_DEVICE_BIT_IN | 0x800,
- AUDIO_DEVICE_IN_USB_DEVICE = AUDIO_DEVICE_BIT_IN | 0x1000,
- AUDIO_DEVICE_IN_DEFAULT = AUDIO_DEVICE_BIT_IN | AUDIO_DEVICE_BIT_DEFAULT,
-
- AUDIO_DEVICE_IN_ALL = (AUDIO_DEVICE_IN_COMMUNICATION |
- AUDIO_DEVICE_IN_AMBIENT |
- AUDIO_DEVICE_IN_BUILTIN_MIC |
- AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET |
- AUDIO_DEVICE_IN_WIRED_HEADSET |
- AUDIO_DEVICE_IN_AUX_DIGITAL |
- AUDIO_DEVICE_IN_VOICE_CALL |
- AUDIO_DEVICE_IN_BACK_MIC |
- AUDIO_DEVICE_IN_REMOTE_SUBMIX |
- AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET |
- AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET |
- AUDIO_DEVICE_IN_USB_ACCESSORY |
- AUDIO_DEVICE_IN_USB_DEVICE |
- AUDIO_DEVICE_IN_DEFAULT),
- AUDIO_DEVICE_IN_ALL_SCO = AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET,
- };
2.java中aduio设备的定义
java中对audio设备的定义位于AudioManager.java中,实际是在AudioSystem.java中定义的。
- // This section re-defines new output device constants from AudioSystem, because the AudioSystem
- // class is not used by other parts of the framework, which instead use definitions and methods
- // from AudioManager. AudioSystem is an internal class used by AudioManager and AudioService.
-
- /** {@hide} The audio output device code for the small speaker at the front of the device used
- * when placing calls. Does not refer to an in-ear headphone without attached microphone,
- * such as earbuds, earphones, or in-ear monitors (IEM). Those would be handled as a
- * {@link #DEVICE_OUT_WIRED_HEADPHONE}.
- */
- public static final int DEVICE_OUT_EARPIECE = AudioSystem.DEVICE_OUT_EARPIECE;
- /** {@hide} The audio output device code for the built-in speaker */
- public static final int DEVICE_OUT_SPEAKER = AudioSystem.DEVICE_OUT_SPEAKER;
- /** {@hide} The audio output device code for a wired headset with attached microphone */
- public static final int DEVICE_OUT_WIRED_HEADSET = AudioSystem.DEVICE_OUT_WIRED_HEADSET;
- /** {@hide} The audio output device code for a wired headphone without attached microphone */
- public static final int DEVICE_OUT_WIRED_HEADPHONE = AudioSystem.DEVICE_OUT_WIRED_HEADPHONE;
- /** {@hide} The audio output device code for generic Bluetooth SCO, for voice */
- public static final int DEVICE_OUT_BLUETOOTH_SCO = AudioSystem.DEVICE_OUT_BLUETOOTH_SCO;
- /** {@hide} The audio output device code for Bluetooth SCO Headset Profile (HSP) and
- * Hands-Free Profile (HFP), for voice
- */
- public static final int DEVICE_OUT_BLUETOOTH_SCO_HEADSET =
- AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_HEADSET;
- /** {@hide} The audio output device code for Bluetooth SCO car audio, for voice */
- public static final int DEVICE_OUT_BLUETOOTH_SCO_CARKIT =
- AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_CARKIT;
- /** {@hide} The audio output device code for generic Bluetooth A2DP, for music */
- public static final int DEVICE_OUT_BLUETOOTH_A2DP = AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP;
- /** {@hide} The audio output device code for Bluetooth A2DP headphones, for music */
- public static final int DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES =
- AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES;
- /** {@hide} The audio output device code for Bluetooth A2DP external speaker, for music */
- public static final int DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER =
- AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER;
- /** {@hide} The audio output device code for S/PDIF or HDMI */
- public static final int DEVICE_OUT_AUX_DIGITAL = AudioSystem.DEVICE_OUT_AUX_DIGITAL;
- /** {@hide} The audio output device code for an analog wired headset attached via a
- * docking station
- */
- public static final int DEVICE_OUT_ANLG_DOCK_HEADSET = AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET;
- /** {@hide} The audio output device code for a digital wired headset attached via a
- * docking station
- */
- public static final int DEVICE_OUT_DGTL_DOCK_HEADSET = AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET;
- /** {@hide} The audio output device code for a USB audio accessory. The accessory is in USB host
- * mode and the Android device in USB device mode
- */
- public static final int DEVICE_OUT_USB_ACCESSORY = AudioSystem.DEVICE_OUT_USB_ACCESSORY;
- /** {@hide} The audio output device code for a USB audio device. The device is in USB device
- * mode and the Android device in USB host mode
- */
- public static final int DEVICE_OUT_USB_DEVICE = AudioSystem.DEVICE_OUT_USB_DEVICE;
- /** {@hide} This is not used as a returned value from {@link #getDevicesForStream}, but could be
- * used in the future in a set method to select whatever default device is chosen by the
- * platform-specific implementation.
- */
- public static final int DEVICE_OUT_DEFAULT = AudioSystem.DEVICE_OUT_DEFAULT;
由于以上定义对第三方不可见,使用时需要使用
setSpeakerphoneOn(), setBluetoothScoOn()来设置。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。