Android 7.1 Compatibility Definition

  • A+
所属分类:音频杂谈

1. Introduction

This document enumerates the requirements that must be met in order for devices to be compatible with Android 7.1.

The use of “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” is per the IETF standard defined in RFC2119 .

As used in this document, a “device implementer” or “implementer” is a person or organization developing a hardware/software solution running Android 7.1. A “device implementation” or “implementation is the hardware/software solution so developed.

To be considered compatible with Android 7.1, device implementations MUST meet the requirements presented in this Compatibility Definition, including any documents incorporated via reference.

Where this definition or the software tests described in section 10 is silent, ambiguous, or incomplete, it is the responsibility of the device implementer to ensure compatibility with existing implementations.

For this reason, the Android Open Source Project is both the reference and preferred implementation of Android. Device implementers are STRONGLY RECOMMENDED to base their implementations to the greatest extent possible on the “upstream” source code available from the Android Open Source Project. While some components can hypothetically be replaced with alternate implementations, it is STRONGLY RECOMMENDED to not follow this practice, as passing the software tests will become substantially more difficult. It is the implementer’s responsibility to ensure full behavioral compatibility with the standard Android implementation, including and beyond the Compatibility Test Suite. Finally, note that certain component substitutions and modifications are explicitly forbidden by this document.

Many of the resources linked to in this document are derived directly or indirectly from the Android SDK and will be functionally identical to the information in that SDK’s documentation. In any cases where this Compatibility Definition or the Compatibility Test Suite disagrees with the SDK documentation, the SDK documentation is considered authoritative. Any technical details provided in the linked resources throughout this document are considered by inclusion to be part of this Compatibility Definition.

5. Multimedia Compatibility

5.1. Media Codecs

Device implementations—

  • MUST support the core media formats specified in the Android SDK documentation, except where explicitly permitted in this document.

  • MUST support the media formats, encoders, decoders, file types, and container formats defined in the tables below and reported via MediaCodecList .

  • MUST also be able to decode all profiles reported in its CamcorderProfile

  • MUST be able to decode all formats it can encode. This includes all bitstreams that its encoders generate.

Codecs SHOULD aim for minimum codec latency, in other words, codecs—

  • SHOULD NOT consume and store input buffers and return input buffers only once processed
  • SHOULD NOT hold onto decoded buffers for longer than as specified by the standard (e.g. SPS).
  • SHOULD NOT hold onto encoded buffers longer than required by the GOP structure.

All of the codecs listed in the table below are provided as software implementations in the preferred Android implementation from the Android Open Source Project.

Please note that neither Google nor the Open Handset Alliance make any representation that these codecs are free from third-party patents. Those intending to use this source code in hardware or software products are advised that implementations of this code, including in open source software or shareware, may require patent licenses from the relevant patent holders.

5.1.1. Audio Codecs

Format/Codec Encoder Decoder Details Supported File Types/Container Formats
MPEG-4 AAC Profile 
(AAC LC)
REQUIRED1 REQUIRED Support for mono/stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz.
  • 3GPP (.3gp)
  • MPEG-4 (.mp4, .m4a)
  • ADTS raw AAC (.aac, decode in Android 3.1+, encode in Android 4.0+, ADIF not supported)
  • MPEG-TS (.ts, not seekable, Android 3.0+)
MPEG-4 HE AAC Profile (AAC+) REQUIRED
(Android 4.1+)
REQUIRED Support for mono/stereo/5.0/5.1 content with standard sampling rates from 16 to 48 kHz.  
MPEG-4 HE AACv2 
Profile (enhanced AAC+)
  REQUIRED Support for mono/stereo/5.0/5.1 content with standard sampling rates from 16 to 48 kHz.  
AAC ELD (enhanced low delay AAC) REQUIRED
(Android 4.1+)
REQUIRED
(Android 4.1+)
Support for mono/stereo content with standard sampling rates from 16 to 48 kHz.  
AMR-NB REQUIRED3 REQUIRED3 4.75 to 12.2 kbps sampled @ 8 kHz 3GPP (.3gp)
AMR-WB REQUIRED3 REQUIRED3 9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16 kHz  
FLAC   REQUIRED
(Android 3.1+)
Mono/Stereo (no multichannel). Sample rates up to 48 kHz (but up to 44.1 kHz is RECOMMENDED on devices with 44.1 kHz output, as the 48 to 44.1 kHz downsampler does not include a low-pass filter). 16-bit RECOMMENDED; no dither applied for 24-bit. FLAC (.flac) only
MP3   REQUIRED Mono/Stereo 8-320Kbps constant (CBR) or variable bitrate (VBR) MP3 (.mp3)
MIDI   REQUIRED MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for ringtone formats RTTTL/RTX, OTA, and iMelody
  • Type 0 and 1 (.mid, .xmf, .mxmf)
  • RTTTL/RTX (.rtttl, .rtx)
  • OTA (.ota)
  • iMelody (.imy)
Vorbis   REQUIRED  
  • Ogg (.ogg)
  • Matroska (.mkv, Android 4.0+)
PCM/WAVE REQUIRED
(Android 4.1+)
REQUIRED 16-bit linear PCM (rates up to limit of hardware). Devices MUST support sampling rates for raw PCM recording at 8000, 11025, 16000, and 44100 Hz frequencies. WAVE (.wav)
Opus   REQUIRED
(Android 5.0+)
  Matroska (.mkv), Ogg(.ogg)

1 Required for device implementations that define android.hardware.microphone but optional for Android Watch device implementations.

2 Recording or playback MAY be performed in mono or stereo, but the decoding of AAC input buffers of multichannel streams (i.e. more than two channels) to PCM through the default AAC audio decoder in the android.media.MediaCodec API, the following MUST be supported:

  • decoding is performed without downmixing (e.g. a 5.0 AAC stream must be decoded to five channels of PCM, a 5.1 AAC stream must be decoded to six channels of PCM),
  • dynamic range metadata, as defined in "Dynamic Range Control (DRC)" in ISO/IEC 14496-3, and the android.media.MediaFormat DRC keys to configure the dynamic range-related behaviors of the audio decoder. The AAC DRC keys were introduced in API 21,and are: KEY_AAC_DRC_ATTENUATION_FACTOR, KEY_AAC_DRC_BOOST_FACTOR, KEY_AAC_DRC_HEAVY_COMPRESSION, KEY_AAC_DRC_TARGET_REFERENCE_LEVEL and KEY_AAC_ENCODED_TARGET_LEVEL

3 Required for Android Handheld device implementations.

4 Required for device implementations that define android.hardware.microphone, including Android Watch device implementations.

 

5.1.3. Video Codecs

  • Codecs advertising HDR profile support MUST support HDR static metadata parsing and handling.

  • If a media codec advertises intra refresh support, then it MUST support the refresh periods in the range of 10 - 60 frames and accurately operate within 20% of configured refresh period.

  • Video codecs MUST support output and input bytebuffer sizes that accommodate the largest feasible compressed and uncompressed frame as dictated by the standard and configuration but also not overallocate.

  • Video encoders and decoders MUST support YUV420 flexible color format (COLOR_FormatYUV420Flexible).

Format/Codec Encoder Decoder Details Supported File Types/ 
Container Formats
H.263 MAY MAY  
  • 3GPP (.3gp)
  • MPEG-4 (.mp4)
H.264 AVC REQUIRED2 REQUIRED 2 See section 5.2 and 5.3for details
  • 3GPP (.3gp)
  • MPEG-4 (.mp4)
  • MPEG-2 TS (.ts, AAC audio only, not seekable, Android 3.0+)
H.265 HEVC   REQUIRED 5 See section 5.3 for details MPEG-4 (.mp4)
MPEG-2   STRONGLY RECOMMENDED 6 Main Profile MPEG2-TS
MPEG-4 SP   REQUIRED 2   3GPP (.3gp)
VP8 3 REQUIRED
(Android 4.3+)
REQUIRED 
(Android 2.3.3+)
See section 5.2 and 5.3for details
VP9   REQUIRED 
(Android 4.4+)
See section 5.3 for details

1 Required for device implementations that include camera hardware and define android.hardware.camera or android.hardware.camera.front.

2 Required for device implementations except Android Watch devices.

3 For acceptable quality of web video streaming and video-conference services, device implementations SHOULD use a hardware VP8 codec that meets the requirements .

4 Device implementations SHOULD support writing Matroska WebM files.

5 STRONGLY RECOMMENDED for Android Automotive, optional for Android Watch, and required for all other device types.

6 Applies only to Android Television device implementations.

5.2. Video Encoding

Video codecs are optional for Android Watch device implementations.

H.264, VP8, VP9 and HEVC video encoders—

  • MUST support dynamically configurable bitrates.
  • SHOULD support variable frame rates, where video encoder SHOULD determine instantaneous frame duration based on the timestamps of input buffers, and allocate its bit bucket based on that frame duration.

H.263 and MPEG-4 video encoder SHOULD support dynamically configurable bitrates.

All video encoders SHOULD meet the following bitrate targets over two sliding windows:

  • It SHOULD be not more than ~15% over the bitrate between intraframe (I-frame) intervals.
  • It SHOULD be not more than ~100% over the bitrate over a sliding window of 1 second.

5.2.1. H.263

Android device implementations with H.263 encoders MUST support Baseline Profile Level 45.

5.2.2. H-264

Android device implementations with H.264 codec support:

  • MUST support Baseline Profile Level 3. 
    However, support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) and RS (Redundant Slices) is OPTIONAL. Moreover, to maintain compatibility with other Android devices, it is RECOMMENDED that ASO, FMO and RS are not used for Baseline Profile by encoders.
  • MUST support the SD (Standard Definition) video encoding profiles in the following table.
  • SHOULD support Main Profile Level 4.
  • SHOULD support the HD (High Definition) video encoding profiles as indicated in the following table.
  • In addition, Android Television devices are STRONGLY RECOMMENDED to encode HD 1080p video at 30 fps.
  SD (Low quality) SD (High quality) HD 720p 1 HD 1080p 1
Video resolution 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px
Video frame rate 20 fps 30 fps 30 fps 30 fps
Video bitrate 384 Kbps 2 Mbps 4 Mbps 10 Mbps

1 When supported by hardware, but STRONGLY RECOMMENDED for Android Television devices.

5.2.3. VP8

Android device implementations with VP8 codec support MUST support the SD video encoding profiles and SHOULD support the following HD (High Definition) video encoding profiles.

  SD (Low quality) SD (High quality) HD 720p 1 HD 1080p 1
Video resolution 320 x 180 px 640 x 360 px 1280 x 720 px 1920 x 1080 px
Video frame rate 30 fps 30 fps 30 fps 30 fps
Video bitrate 800 Kbps 2 Mbps 4 Mbps 10 Mbps

1 When supported by hardware.

5.3. Video Decoding

Video codecs are optional for Android Watch device implementations.

Device implementations—

  • MUST support dynamic video resolution and frame rate switching through the standard Android APIs within the same stream for all VP8, VP9, H.264, and H.265 codecs in real time and up to the maximum resolution supported by each codec on the device.

  • Implementations that support the Dolby Vision decoder—

  • MUST provide a Dolby Vision-capable extractor.
  • MUST properly display Dolby Vision content on the device screen or on a standard video output port (e.g., HDMI).

  • Implementations that provide a Dolby Vision-capable extractor MUST set the track index of backward-compatible base-layer(s) (if present) to be the same as the combined Dolby Vision layer's track index.

5.3.1. MPEG-2

Android device implementations with MPEG-2 decoders must support the Main Profile High Level.

5.3.2. H.263

Android device implementations with H.263 decoders MUST support Baseline Profile Level 30 and Level 45.

5.3.3. MPEG-4

Android device implementations with MPEG-4 decoders MUST support Simple Profile Level 3.

5.3.4. H.264

Android device implementations with H.264 decoders:

  • MUST support Main Profile Level 3.1 and Baseline Profile. 
    Support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) and RS (Redundant Slices) is OPTIONAL.
  • MUST be capable of decoding videos with the SD (Standard Definition) profiles listed in the following table and encoded with the Baseline Profile and Main Profile Level 3.1 (including 720p30).
  • SHOULD be capable of decoding videos with the HD (High Definition) profiles as indicated in the following table.
  • In addition, Android Television devices—
    • MUST support High Profile Level 4.2 and the HD 1080p60 decoding profile.
    • MUST be capable of decoding videos with both HD profiles as indicated in the following table and encoded with either the Baseline Profile, Main Profile, or the High Profile Level 4.2
  SD (Low quality) SD (High quality) HD 720p 1 HD 1080p 1
Video resolution 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px
Video frame rate 30 fps 30 fps 60 fps 30 fps (60 fps )
Video bitrate 800 Kbps 2 Mbps 8 Mbps 20 Mbps

1 REQUIRED for when the height as reported by the Display.getSupportedModes() method is equal or greater than the video resolution.

2 REQUIRED for Android Television device implementations.

5.3.5. H.265 (HEVC)

Android device implementations, when supporting H.265 codec as described in section 5.1.3 :

  • MUST support the Main Profile Level 3 Main tier and the SD video decoding profiles as indicated in the following table.
  • SHOULD support the HD decoding profiles as indicated in the following table.
  • MUST support the HD decoding profiles as indicated in the following table if there is a hardware decoder.
  • In addition, Android Television devices:
  • MUST support the HD 720p decoding profile.
  • STRONGLY RECOMMENDED to support the HD 1080p decoding profile. If the HD 1080p decoding profile is supported, it MUST support the Main Profile Level 4.1 Main tier.
  • SHOULD support the UHD decoding profile. If the UHD decoding profile is supported the codec MUST support Main10 Level 5 Main Tier profile.
  SD (Low quality) SD (High quality) HD 720p HD 1080p UHD
Video resolution 352 x 288 px 720 x 480 px 1280 x 720 px 1920 x 1080 px 3840 x 2160 px
Video frame rate 30 fps 30 fps 30 fps 30 fps (60 fps ) 60 fps
Video bitrate 600 Kbps 1.6 Mbps 4 Mbps 5 Mbps 20 Mbps

1 REQUIRED for Android Television device implementations with H.265 hardware decoding.

5.3.6. VP8

Android device implementations, when supporting VP8 codec as described in section 5.1.3 :

  • MUST support the SD decoding profiles in the following table.
  • SHOULD support the HD decoding profiles in the following table.
  • Android Television devices MUST support the HD 1080p60 decoding profile.
  SD (Low quality) SD (High quality) HD 720p 1 HD 1080p 1
Video resolution 320 x 180 px 640 x 360 px 1280 x 720 px 1920 x 1080 px
Video frame rate 30 fps 30 fps 30 fps (60 fps ) 30 (60 fps )
Video bitrate 800 Kbps 2 Mbps 8 Mbps 20 Mbps

1 REQUIRED for when the height as reported by the Display.getSupportedModes() method is equal or greater than the video resolution.

2 REQUIRED for Android Television device implementations.

5.3.7. VP9

Android device implementations, when supporting VP9 codec as described in section 5.1.3 :

  • MUST support the SD video decoding profiles as indicated in the following table.
  • SHOULD support the HD decoding profiles as indicated in the following table.
  • MUST support the HD decoding profiles as indicated in the following table, if there is a hardware decoder.
  • In addition, Android Television devices:

    • MUST support the HD 720p decoding profile.
    • STRONGLY RECOMMENDED to support the HD 1080p decoding profile.
    • SHOULD support the UHD decoding profile. If the UHD video decoding profile is supported, it MUST support 8-bit color depth and SHOULD support VP9 Profile 2 (10-bit).
  SD (Low quality) SD (High quality) HD 720p HD 1080p UHD
Video resolution 320 x 180 px 640 x 360 px 1280 x 720 px 1920 x 1080 px 3840 x 2160 px
Video frame rate 30 fps 30 fps 30 fps 30 fps (60 fps ) 60 fps
Video bitrate 600 Kbps 1.6 Mbps 4 Mbps 5 Mbps 20 Mbps

1 REQUIRED for Android Television device implementations with VP9 hardware decoding.

5.4. Audio Recording

While some of the requirements outlined in this section are stated as SHOULD since Android 4.3, the Compatibility Definition for a future version is planned to change these to MUST. Existing and new Android devices are STRONGLY RECOMMENDED to meet these requirements that are stated as SHOULD, or they will not be able to attain Android compatibility when upgraded to the future version.

5.4.1. Raw Audio Capture

Device implementations that declare android.hardware.microphone MUST allow capture of raw audio content with the following characteristics:

  • Format : Linear PCM, 16-bit
  • Sampling rates : 8000, 11025, 16000, 44100
  • Channels : Mono

The capture for the above sample rates MUST be done without up-sampling, and any down-sampling MUST include an appropriate anti-aliasing filter.

Device implementations that declare android.hardware.microphone SHOULD allow capture of raw audio content with the following characteristics:

  • Format : Linear PCM, 16-bit
  • Sampling rates : 22050, 48000
  • Channels : Stereo

If capture for the above sample rates is supported, then the capture MUST be done without up-sampling at any ratio higher than 16000:22050 or 44100:48000. Any up-sampling or down-sampling MUST include an appropriate anti-aliasing filter.

5.4.2. Capture for Voice Recognition

The android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION audio source MUST support capture at one of the sampling rates, 44100 and 48000.

In addition to the above recording specifications, when an application has started recording an audio stream using the android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION audio source:

  • The device SHOULD exhibit approximately flat amplitude versus frequency characteristics: specifically, ±3 dB, from 100 Hz to 4000 Hz.
  • Audio input sensitivity SHOULD be set such that a 90 dB sound power level (SPL) source at 1000 Hz yields RMS of 2500 for 16-bit samples.
  • PCM amplitude levels SHOULD linearly track input SPL changes over at least a 30 dB range from -18 dB to +12 dB re 90 dB SPL at the microphone.
  • Total harmonic distortion SHOULD be less than 1% for 1 kHz at 90 dB SPL input level at the microphone.
  • Noise reduction processing, if present, MUST be disabled.
  • Automatic gain control, if present, MUST be disabled.

If the platform supports noise suppression technologies tuned for speech recognition, the effect MUST be controllable from the android.media.audiofx.NoiseSuppressor API. Moreover, the UUID field for the noise suppressor’s effect descriptor MUST uniquely identify each implementation of the noise suppression technology.

5.4.3. Capture for Rerouting of Playback

The android.media.MediaRecorder.AudioSource class includes the REMOTE_SUBMIX audio source. Devices that declare android.hardware.audio.output MUST properly implement the REMOTE_SUBMIX audio source so that when an application uses the android.media.AudioRecord API to record from this audio source, it can capture a mix of all audio streams except for the following:

  • STREAM_RING
  • STREAM_ALARM
  • STREAM_NOTIFICATION

5.5. Audio Playback

Device implementations that declare android.hardware.audio.output MUST conform to the requirements in this section.

5.5.1. Raw Audio Playback

The device MUST allow playback of raw audio content with the following characteristics:

  • Format : Linear PCM, 16-bit
  • Sampling rates : 8000, 11025, 16000, 22050, 32000, 44100
  • Channels : Mono, Stereo

The device SHOULD allow playback of raw audio content with the following characteristics:

  • Sampling rates : 24000, 48000

5.5.2. Audio Effects

Android provides an API for audio effects for device implementations. Device implementations that declare the feature android.hardware.audio.output:

  • MUST support the EFFECT_TYPE_EQUALIZER and EFFECT_TYPE_LOUDNESS_ENHANCER implementations controllable through the AudioEffect subclasses Equalizer, LoudnessEnhancer.
  • MUST support the visualizer API implementation, controllable through the Visualizer class.
  • SHOULD support the EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB, EFFECT_TYPE_PRESET_REVERB, and EFFECT_TYPE_VIRTUALIZER implementations controllable through the AudioEffect sub-classes BassBoost, EnvironmentalReverb, PresetReverb, and Virtualizer.

5.5.3. Audio Output Volume

Android Television device implementations MUST include support for system Master Volume and digital audio output volume attenuation on supported outputs, except for compressed audio passthrough output (where no audio decoding is done on the device).

Android Automotive device implementations SHOULD allow adjusting audio volume separately per each audio stream using the content type or usage as defined by AudioAttributes and car audio usage as publicly defined inandroid.car.CarAudioManager .

5.6. Audio Latency

Audio latency is the time delay as an audio signal passes through a system. Many classes of applications rely on short latencies, to achieve real-time sound effects.

For the purposes of this section, use the following definitions:

  • output latency . The interval between when an application writes a frame of PCM-coded data and when the corresponding sound is presented to environment at an on-device transducer or signal leaves the device via a port and can be observed externally.
  • cold output latency . The output latency for the first frame, when the audio output system has been idle and powered down prior to the request.
  • continuous output latency . The output latency for subsequent frames, after the device is playing audio.
  • input latency . The interval between when a sound is presented by environment to device at an on-device transducer or signal enters the device via a port and when an application reads the corresponding frame of PCM-coded data.
  • lost input . The initial portion of an input signal that is unusable or unavailable.
  • cold input latency . The sum of lost input time and the input latency for the first frame, when the audio input system has been idle and powered down prior to the request.
  • continuous input latency . The input latency for subsequent frames, while the device is capturing audio.
  • cold output jitter . The variability among separate measurements of cold output latency values.
  • cold input jitter . The variability among separate measurements of cold input latency values.
  • continuous round-trip latency . The sum of continuous input latency plus continuous output latency plus one buffer period. The buffer period allows time for the app to process the signal and time for the app to mitigate phase difference between input and output streams.
  • OpenSL ES PCM buffer queue API . The set of PCM-related OpenSL ES APIs within Android NDK .

Device implementations that declare android.hardware.audio.output are STRONGLY RECOMMENDED to meet or exceed these audio output requirements:

  • cold output latency of 100 milliseconds or less
  • continuous output latency of 45 milliseconds or less
  • minimize the cold output jitter

If a device implementation meets the requirements of this section after any initial calibration when using the OpenSL ES PCM buffer queue API, for continuous output latency and cold output latency over at least one supported audio output device, it is STRONGLY RECOMMENDED to report support for low-latency audio, by reporting the feature android.hardware.audio.low_latency via the android.content.pm.PackageManager class. Conversely, if the device implementation does not meet these requirements it MUST NOT report support for low-latency audio.

Device implementations that include android.hardware.microphone are STRONGLY RECOMMENDED to meet these input audio requirements:

  • cold input latency of 100 milliseconds or less
  • continuous input latency of 30 milliseconds or less
  • continuous round-trip latency of 50 milliseconds or less
  • minimize the cold input jitter

 

7.8. Audio

7.8.1. Microphone

Android Handheld, Watch, and Automotive implementations MUST include a microphone.

Device implementations MAY omit a microphone. However, if a device implementation omits a microphone, it MUST NOT report the android.hardware.microphone feature constant, and MUST implement the audio recording API at least as no-ops, per section 7 . Conversely, device implementations that do possess a microphone:

  • MUST report the android.hardware.microphone feature constant.
  • MUST meet the audio recording requirements in section 5.4 .
  • MUST meet the audio latency requirements in section 5.6 .
  • STRONGLY RECOMMENDED to support near-ultrasound recording as described in section 7.8.3 .

7.8.2. Audio Output

Android Watch devices MAY include an audio output.

Device implementations including a speaker or with an audio/multimedia output port for an audio output peripheral as a headset or an external speaker:

  • MUST report the android.hardware.audio.output feature constant.
  • MUST meet the audio playback requirements in section 5.5 .
  • MUST meet the audio latency requirements in section 5.6 .
  • STRONGLY RECOMMENDED to support near-ultrasound playback as described in section 7.8.3 .

Conversely, if a device implementation does not include a speaker or audio output port, it MUST NOT report the android.hardware.audio output feature, and MUST implement the Audio Output related APIs as no-ops at least.

Android Watch device implementation MAY but SHOULD NOT have audio output, but other types of Android device implementations MUST have an audio output and declare android.hardware.audio.output.

7.8.2.1. Analog Audio Ports

In order to be compatible with the headsets and other audio accessories using the 3.5mm audio plug across the Android ecosystem, if a device implementation includes one or more analog audio ports, at least one of the audio port(s) SHOULD be a 4 conductor 3.5mm audio jack. If a device implementation has a 4 conductor 3.5mm audio jack, it:

  • MUST support audio playback to stereo headphones and stereo headsets with a microphone, and SHOULD support audio recording from stereo headsets with a microphone.
  • MUST support TRRS audio plugs with the CTIA pin-out order, and SHOULD support audio plugs with the OMTP pin-out order.
  • MUST support the detection of microphone on the plugged in audio accessory, if the device implementation supports a microphone, and broadcast the android.intent.action.HEADSET_PLUG with the extra value microphone set as 1.
  • MUST support the detection and mapping to the keycodes for the following 3 ranges of equivalent impedance between the microphone and ground conductors on the audio plug:
    • 70 ohm or less : KEYCODE_HEADSETHOOK
    • 210-290 Ohm : KEYCODE_VOLUME_UP
    • 360-680 Ohm : KEYCODE_VOLUME_DOWN
  • STRONGLY RECOMMENDED to detect and map to the keycode for the following range of equivalent impedance between the microphone and ground conductors on the audio plug:
    • 110-180 Ohm: KEYCODE_VOICE_ASSIST
  • MUST trigger ACTION_HEADSET_PLUG upon a plug insert, but only after all contacts on plug are touching their relevant segments on the jack.
  • MUST be capable of driving at least 150mV ± 10% of output voltage on a 32 Ohm speaker impedance.
  • MUST have a microphone bias voltage between 1.8V ~ 2.9V.

7.8.3. Near-Ultrasound

Near-Ultrasound audio is the 18.5 kHz to 20 kHz band. Device implementations MUST correctly report the support of near-ultrasound audio capability via the AudioManager.getProperty API as follows:

  • If PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND is "true", then the following requirements must be met by the VOICE_RECOGNITION and UNPROCESSED audio sources:
    • The microphone's mean power response in the 18.5 kHz to 20 kHz band MUST be no more than 15 dB below the response at 2 kHz.
    • The microphone's unweighted signal to noise ratio over 18.5 kHz to 20 kHz for a 19 kHz tone at -26 dBFS MUST be no lower than 50 dB.
  • If PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND is "true", then the speaker's mean response in 18.5 kHz - 20 kHz MUST be no lower than 40 dB below the response at 2 kHz.

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: