打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android audio设备的定义

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中音频设备定义如下:

  1. enum {  
  2.     AUDIO_DEVICE_NONE                          = 0x0,  
  3.     /* reserved bits */  
  4.     AUDIO_DEVICE_BIT_IN                        = 0x80000000,  
  5.     AUDIO_DEVICE_BIT_DEFAULT                   = 0x40000000,  
  6.     /* output devices */  
  7.     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>  
  8.     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>  
  9.     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>  
  10.     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>  
  11.     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>  
  12.     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>  
  13.     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>  
  14.     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>  
  15.     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>  
  16.     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>  
  17.     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>  
  18.     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>  
  19.     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>  
  20.     AUDIO_DEVICE_OUT_USB_ACCESSORY             = 0x2000,  
  21.     AUDIO_DEVICE_OUT_USB_DEVICE                = 0x4000,  
  22.     AUDIO_DEVICE_OUT_REMOTE_SUBMIX             = 0x8000,  
  23.     AUDIO_DEVICE_OUT_DEFAULT                   = AUDIO_DEVICE_BIT_DEFAULT,  
  24.     AUDIO_DEVICE_OUT_ALL      = (AUDIO_DEVICE_OUT_EARPIECE |  
  25.                                  AUDIO_DEVICE_OUT_SPEAKER |  
  26.                                  AUDIO_DEVICE_OUT_WIRED_HEADSET |  
  27.                                  AUDIO_DEVICE_OUT_WIRED_HEADPHONE |  
  28.                                  AUDIO_DEVICE_OUT_BLUETOOTH_SCO |  
  29.                                  AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET |  
  30.                                  AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT |  
  31.                                  AUDIO_DEVICE_OUT_BLUETOOTH_A2DP |  
  32.                                  AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES |  
  33.                                  AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER |  
  34.                                  AUDIO_DEVICE_OUT_AUX_DIGITAL |  
  35.                                  AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET |  
  36.                                  AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET |  
  37.                                  AUDIO_DEVICE_OUT_USB_ACCESSORY |  
  38.                                  AUDIO_DEVICE_OUT_USB_DEVICE |  
  39.                                  AUDIO_DEVICE_OUT_REMOTE_SUBMIX |  
  40.                                  AUDIO_DEVICE_OUT_DEFAULT),  
  41.     AUDIO_DEVICE_OUT_ALL_A2DP = (AUDIO_DEVICE_OUT_BLUETOOTH_A2DP |  
  42.                                  AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES |  
  43.                                  AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER),  
  44.     AUDIO_DEVICE_OUT_ALL_SCO  = (AUDIO_DEVICE_OUT_BLUETOOTH_SCO |  
  45.                                  AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET |  
  46.                                  AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),  
  47.     AUDIO_DEVICE_OUT_ALL_USB  = (AUDIO_DEVICE_OUT_USB_ACCESSORY |  
  48.                                  AUDIO_DEVICE_OUT_USB_DEVICE),  
  49.   
  50.     /* input devices */  
  51.     AUDIO_DEVICE_IN_COMMUNICATION         = AUDIO_DEVICE_BIT_IN | 0x1,  
  52.     AUDIO_DEVICE_IN_AMBIENT               = AUDIO_DEVICE_BIT_IN | 0x2,  
  53.     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>  
  54.     AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET = AUDIO_DEVICE_BIT_IN | 0x8,  
  55.     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>  
  56.     AUDIO_DEVICE_IN_AUX_DIGITAL           = AUDIO_DEVICE_BIT_IN | 0x20,  
  57.     AUDIO_DEVICE_IN_VOICE_CALL            = AUDIO_DEVICE_BIT_IN | 0x40,  
  58.     AUDIO_DEVICE_IN_BACK_MIC              = AUDIO_DEVICE_BIT_IN | 0x80,  
  59.     AUDIO_DEVICE_IN_REMOTE_SUBMIX         = AUDIO_DEVICE_BIT_IN | 0x100,  
  60.     AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET     = AUDIO_DEVICE_BIT_IN | 0x200,  
  61.     AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET     = AUDIO_DEVICE_BIT_IN | 0x400,  
  62.     AUDIO_DEVICE_IN_USB_ACCESSORY         = AUDIO_DEVICE_BIT_IN | 0x800,  
  63.     AUDIO_DEVICE_IN_USB_DEVICE            = AUDIO_DEVICE_BIT_IN | 0x1000,  
  64.     AUDIO_DEVICE_IN_DEFAULT               = AUDIO_DEVICE_BIT_IN | AUDIO_DEVICE_BIT_DEFAULT,  
  65.   
  66.     AUDIO_DEVICE_IN_ALL     = (AUDIO_DEVICE_IN_COMMUNICATION |  
  67.                                AUDIO_DEVICE_IN_AMBIENT |  
  68.                                AUDIO_DEVICE_IN_BUILTIN_MIC |  
  69.                                AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET |  
  70.                                AUDIO_DEVICE_IN_WIRED_HEADSET |  
  71.                                AUDIO_DEVICE_IN_AUX_DIGITAL |  
  72.                                AUDIO_DEVICE_IN_VOICE_CALL |  
  73.                                AUDIO_DEVICE_IN_BACK_MIC |  
  74.                                AUDIO_DEVICE_IN_REMOTE_SUBMIX |  
  75.                                AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET |  
  76.                                AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET |  
  77.                                AUDIO_DEVICE_IN_USB_ACCESSORY |  
  78.                                AUDIO_DEVICE_IN_USB_DEVICE |  
  79.                                AUDIO_DEVICE_IN_DEFAULT),  
  80.     AUDIO_DEVICE_IN_ALL_SCO = AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET,  
  81. };  

2.java中aduio设备的定义

java中对audio设备的定义位于AudioManager.java中,实际是在AudioSystem.java中定义的。

  1. // This section re-defines new output device constants from AudioSystem, because the AudioSystem  
  2. // class is not used by other parts of the framework, which instead use definitions and methods  
  3. // from AudioManager. AudioSystem is an internal class used by AudioManager and AudioService.  
  4.   
  5. /** {@hide} The audio output device code for the small speaker at the front of the device used 
  6.  *  when placing calls.  Does not refer to an in-ear headphone without attached microphone, 
  7.  *  such as earbuds, earphones, or in-ear monitors (IEM). Those would be handled as a 
  8.  *  {@link #DEVICE_OUT_WIRED_HEADPHONE}. 
  9.  */  
  10. public static final int DEVICE_OUT_EARPIECE = AudioSystem.DEVICE_OUT_EARPIECE;  
  11. /** {@hide} The audio output device code for the built-in speaker */  
  12. public static final int DEVICE_OUT_SPEAKER = AudioSystem.DEVICE_OUT_SPEAKER;  
  13. /** {@hide} The audio output device code for a wired headset with attached microphone */  
  14. public static final int DEVICE_OUT_WIRED_HEADSET = AudioSystem.DEVICE_OUT_WIRED_HEADSET;  
  15. /** {@hide} The audio output device code for a wired headphone without attached microphone */  
  16. public static final int DEVICE_OUT_WIRED_HEADPHONE = AudioSystem.DEVICE_OUT_WIRED_HEADPHONE;  
  17. /** {@hide} The audio output device code for generic Bluetooth SCO, for voice */  
  18. public static final int DEVICE_OUT_BLUETOOTH_SCO = AudioSystem.DEVICE_OUT_BLUETOOTH_SCO;  
  19. /** {@hide} The audio output device code for Bluetooth SCO Headset Profile (HSP) and 
  20.  *  Hands-Free Profile (HFP), for voice 
  21.  */  
  22. public static final int DEVICE_OUT_BLUETOOTH_SCO_HEADSET =  
  23.         AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_HEADSET;  
  24. /** {@hide} The audio output device code for Bluetooth SCO car audio, for voice */  
  25. public static final int DEVICE_OUT_BLUETOOTH_SCO_CARKIT =  
  26.         AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_CARKIT;  
  27. /** {@hide} The audio output device code for generic Bluetooth A2DP, for music */  
  28. public static final int DEVICE_OUT_BLUETOOTH_A2DP = AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP;  
  29. /** {@hide} The audio output device code for Bluetooth A2DP headphones, for music */  
  30. public static final int DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES =  
  31.         AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES;  
  32. /** {@hide} The audio output device code for Bluetooth A2DP external speaker, for music */  
  33. public static final int DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER =  
  34.         AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER;  
  35. /** {@hide} The audio output device code for S/PDIF or HDMI */  
  36. public static final int DEVICE_OUT_AUX_DIGITAL = AudioSystem.DEVICE_OUT_AUX_DIGITAL;  
  37. /** {@hide} The audio output device code for an analog wired headset attached via a 
  38.  *  docking station 
  39.  */  
  40. public static final int DEVICE_OUT_ANLG_DOCK_HEADSET = AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET;  
  41. /** {@hide} The audio output device code for a digital wired headset attached via a 
  42.  *  docking station 
  43.  */  
  44. public static final int DEVICE_OUT_DGTL_DOCK_HEADSET = AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET;  
  45. /** {@hide} The audio output device code for a USB audio accessory. The accessory is in USB host 
  46.  * mode and the Android device in USB device mode 
  47.  */  
  48. public static final int DEVICE_OUT_USB_ACCESSORY = AudioSystem.DEVICE_OUT_USB_ACCESSORY;  
  49. /** {@hide} The audio output device code for a USB audio device. The device is in USB device 
  50.  * mode and the Android device in USB host mode 
  51.  */  
  52. public static final int DEVICE_OUT_USB_DEVICE = AudioSystem.DEVICE_OUT_USB_DEVICE;  
  53. /** {@hide} This is not used as a returned value from {@link #getDevicesForStream}, but could be 
  54.  *  used in the future in a set method to select whatever default device is chosen by the 
  55.  *  platform-specific implementation. 
  56.  */  
  57. public static final int DEVICE_OUT_DEFAULT = AudioSystem.DEVICE_OUT_DEFAULT;  
由于以上定义对第三方不可见,使用时需要使用 setSpeakerphoneOn(), setBluetoothScoOn()来设置。





本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android 耳机系统综述
Android深入浅出之Audio第三部分Audio Policy[1]
Air: Acoustically Stunning Wireless Headphones | I...
21,平板电脑如何蓝牙和手机配对
android4.3之系统SetSpeakerphoneOn实现的Audio Output Path切换
Android音频系统之AudioTrack(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服