• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.cts.verifier;
18 
19 import com.android.compatibility.common.util.ApiTest;
20 import com.android.compatibility.common.util.CddTest;
21 import com.android.interactive.annotations.Interactive;
22 import com.android.interactive.annotations.SupportMultiDisplayMode;
23 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
24 
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 
28 @RunWith(DeviceJUnit4ClassRunner.class)
29 public final class AudioTest extends CtsVerifierTest {
30 
31     @Interactive
32     @Test
33     @SupportMultiDisplayMode
34     // MultiDisplayMode
RingerModeTest()35     public void RingerModeTest() throws Exception {
36         excludeFeatures("android.software.leanback", "android.hardware.type.automotive");
37 
38         runTest(".audio.RingerModeActivity");
39     }
40 
41     @Interactive
42     @Test
43     @SupportMultiDisplayMode
44     // MultiDisplayMode
45     @CddTest(requirements = "7.8.2.1/C-1-1,C-1-2,C-1-3,C-1-4,C-2-1")
AnalogHeadsetAudioTest()46     public void AnalogHeadsetAudioTest() throws Exception {
47         runTest(".audio.AnalogHeadsetAudioActivity");
48     }
49 
50     @Interactive
51     @Test
52     @SupportMultiDisplayMode
53     // MultiDisplayMode
54     @ApiTest(
55             apis = {
56                 "android.media.audiofx.AcousticEchoCanceler#isAvailable",
57                 "android.media.audiofx.AcousticEchoCanceler#create",
58                 "android.media.audiofx.AcousticEchoCanceler#release",
59                 "android.media.audiofx.AcousticEchoCanceler#getEnabled"
60             })
AudioAECTest()61     public void AudioAECTest() throws Exception {
62         requireFeatures("android.hardware.microphone", "android.hardware.audio.output");
63 
64         runTest(".audio.AudioAEC");
65     }
66 
67     @Interactive
68     @Test
69     @SupportMultiDisplayMode
70     // MultiDisplayMode
71     @ApiTest(
72             apis = {
73                 "android.media.AudioDescriptor#getStandard",
74                 "android.media.AudioDescriptor#getDescriptor"
75             })
AudioDescriptorTest()76     public void AudioDescriptorTest() throws Exception {
77         runTest(".audio.AudioDescriptorActivity");
78     }
79 
80     @Interactive
81     @Test
82     @SupportMultiDisplayMode
83     // MultiDisplayMode
84     // @NonApiTest(exemptionReasons = METRIC,
85     // justification = "this test is currently informational only")
AudioFrequencyLineTest()86     public void AudioFrequencyLineTest() throws Exception {
87         requireFeatures("android.hardware.microphone", "android.hardware.audio.output");
88 
89         runTest(".audio.AudioFrequencyLineActivity");
90     }
91 
92     @Interactive
93     @Test
94     @SupportMultiDisplayMode
95     // MultiDisplayMode
96     // @NonApiTest(exemptionReasons = METRIC,
97     // justification = "this test is currently informational only")
AudioFrequencyMicTest()98     public void AudioFrequencyMicTest() throws Exception {
99         requireFeatures(
100                 "android.hardware.microphone",
101                 "android.hardware.audio.output",
102                 "android.hardware.usb.host");
103 
104         runTest(".audio.AudioFrequencyMicActivity");
105     }
106 
107     @Interactive
108     @Test
109     @SupportMultiDisplayMode
110     // MultiDisplayMode
111     // @NonApiTest(exemptionReasons = METRIC,
112     // justification = "this test is currently informational only")
AudioFrequencySpeakerTest()113     public void AudioFrequencySpeakerTest() throws Exception {
114         requireFeatures("android.hardware.audio.output", "android.hardware.usb.host");
115 
116         runTest(".audio.AudioFrequencySpeakerActivity");
117     }
118 
119     @Interactive
120     @Test
121     @SupportMultiDisplayMode
122     // MultiDisplayMode
123     @CddTest(requirements = "5.11/C-1-1,C-1-2,C-1-3,C-1-4,C-1-5")
AudioFrequencyUnprocessedTest()124     public void AudioFrequencyUnprocessedTest() throws Exception {
125         requireFeatures("android.hardware.microphone", "android.hardware.usb.host");
126 
127         runTest(".audio.AudioFrequencyUnprocessedActivity");
128     }
129 
130     @Interactive
131     @Test
132     @SupportMultiDisplayMode
133     // MultiDisplayMode
134     // @NonApiTest(exemptionReasons = METRIC,
135     // justification = "this test is currently informational only")
AudioFrequencyVoiceRecognitionTest()136     public void AudioFrequencyVoiceRecognitionTest() throws Exception {
137         requireFeatures("android.hardware.microphone", "android.hardware.usb.host");
138 
139         runTest(".audio.AudioFrequencyVoiceRecognitionActivity");
140     }
141 
142     @Interactive
143     @Test
144     @SupportMultiDisplayMode
145     // MultiDisplayMode
146     @CddTest(requirements = "5.6/C-3-2")
AudioInColdStartLatencyTest()147     public void AudioInColdStartLatencyTest() throws Exception {
148         excludeFeatures("android.hardware.type.watch", "android.hardware.type.television");
149 
150         runTest(".audio.AudioInColdStartLatencyActivity");
151     }
152 
153     @Interactive
154     @Test
155     @SupportMultiDisplayMode
156     // MultiDisplayMode
157     @ApiTest(
158             apis = {
159                 "android.media.AudioManager#registerAudioDeviceCallback",
160                 "android.media.AudioDeviceCallback#onAudioDevicesAdded",
161                 "android.media.AudioDeviceCallback#onAudioDevicesRemoved"
162             })
AudioInputDeviceNotificationsTest()163     public void AudioInputDeviceNotificationsTest() throws Exception {
164         requireFeatures("android.hardware.microphone");
165         excludeFeatures("android.software.leanback");
166 
167         runTest(".audio.AudioInputDeviceNotificationsActivity");
168     }
169 
170     @Interactive
171     @Test
172     @SupportMultiDisplayMode
173     // MultiDisplayMode
174     @ApiTest(
175             apis = {
176                 "android.media.AudioRecord#addOnRoutingChangedListener",
177                 "android.media.AudioRecord.OnRoutingChangedListener#onRoutingChanged"
178             })
AudioInputRoutingNotificationsTest()179     public void AudioInputRoutingNotificationsTest() throws Exception {
180         requireFeatures("android.hardware.microphone");
181         excludeFeatures("android.software.leanback");
182 
183         runTest(".audio.AudioInputRoutingNotificationsActivity");
184     }
185 
186     @Interactive
187     @Test
188     @SupportMultiDisplayMode
189     // MultiDisplayMode
190     @CddTest(requirements = "5.10/C-1-2,C-1-5")
AudioLoopbackLatencyTest()191     public void AudioLoopbackLatencyTest() throws Exception {
192         requireFeatures("android.hardware.microphone", "android.hardware.audio.output");
193         excludeFeatures(
194                 "android.hardware.type.watch",
195                 "android.hardware.type.television",
196                 "android.hardware.type.automotive");
197 
198         runTest(".audio.AudioLoopbackLatencyActivity");
199     }
200 
201     @Interactive
202     @Test
203     @SupportMultiDisplayMode
204     // MultiDisplayMode
205     @CddTest(requirements = "5.6/C-1-2")
AudioOutColdStartLatencyTest()206     public void AudioOutColdStartLatencyTest() throws Exception {
207         excludeFeatures("android.hardware.type.watch", "android.hardware.type.television");
208 
209         runTest(".audio.AudioOutColdStartLatencyActivity");
210     }
211 
212     @Interactive
213     @Test
214     @SupportMultiDisplayMode
215     // MultiDisplayMode
216     @ApiTest(
217             apis = {
218                 "android.media.AudioManager#registerAudioDeviceCallback",
219                 "android.media.AudioDeviceCallback#onAudioDevicesAdded",
220                 "android.media.AudioDeviceCallback#onAudioDevicesRemoved"
221             })
AudioOutputDeviceNotificationsTest()222     public void AudioOutputDeviceNotificationsTest() throws Exception {
223         requireFeatures("android.hardware.audio.output");
224         excludeFeatures("android.software.leanback");
225 
226         runTest(".audio.AudioOutputDeviceNotificationsActivity");
227     }
228 
229     @Interactive
230     @Test
231     @SupportMultiDisplayMode
232     // MultiDisplayMode
233     @ApiTest(
234             apis = {
235                 "android.media.AudioTrack#addOnRoutingChangedListener",
236                 "android.media.AudioTrack.OnRoutingChangedListener#onRoutingChanged"
237             })
AudioOutputRoutingNotificationsTest()238     public void AudioOutputRoutingNotificationsTest() throws Exception {
239         requireFeatures("android.hardware.audio.output");
240         excludeFeatures("android.software.leanback");
241 
242         runTest(".audio.AudioOutputRoutingNotificationsActivity");
243     }
244 
245     @Interactive
246     @Test
247     @SupportMultiDisplayMode
248     // MultiDisplayMode
249     @CddTest(requirements = "5.6")
AudioTap2ToneTest()250     public void AudioTap2ToneTest() throws Exception {
251         // Interesting test
252         excludeFeatures(
253                 "android.hardware.type.watch",
254                 "android.hardware.type.television",
255                 "android.hardware.type.automotive");
256 
257         runTest(".audio.AudioTap2ToneActivity");
258     }
259 
260     @Interactive
261     @Test
262     @SupportMultiDisplayMode
263     // MultiDisplayMode
HifiUltrasoundTest()264     public void HifiUltrasoundTest() throws Exception {
265         requireFeatures("android.hardware.microphone");
266 
267         runTest(".audio.HifiUltrasoundTestActivity");
268     }
269 
270     @Interactive
271     @Test
272     @SupportMultiDisplayMode
273     // MultiDisplayMode
274     @CddTest(requirements = "7.8.3/C-1-1,C-1-2,C-2-1")
HifiUltrasoundSpeakerTest()275     public void HifiUltrasoundSpeakerTest() throws Exception {
276         requireFeatures("android.hardware.audio.output");
277 
278         runTest(".audio.HifiUltrasoundSpeakerTestActivity");
279     }
280 
281     @Interactive
282     @Test
283     @SupportMultiDisplayMode
284     // MultiDisplayMode
285     @CddTest(requirements = "5.9/C-1-4,C-1-2")
286     @ApiTest(
287             apis = {
288                 "android.media.midi.MidiManager#registerDeviceCallback",
289                 "android.media.midi.MidiManager#getDevices",
290                 "android.media.midi.MidiDevice#getInfo",
291                 "android.media.midi.MidiDevice#openOutputPort",
292                 "android.media.midi.MidiDevice#openInputPort",
293                 "android.media.midi.MidiDeviceInfo#getOutputPortCount",
294                 "android.media.midi.MidiDeviceInfo#getInputPortCount",
295                 "android.media.midi.MidiInputPort#send"
296             })
MidiJavaTest()297     public void MidiJavaTest() throws Exception {
298         requireFeatures("android.hardware.usb.host:android.software.midi");
299 
300         runTest(".audio.MidiJavaTestActivity");
301     }
302 
303     @Interactive
304     @Test
305     @SupportMultiDisplayMode
306     // MultiDisplayMode
307     @CddTest(requirements = "5.9/C-1-3,C-1-2")
MidiNativeTest()308     public void MidiNativeTest() throws Exception {
309         requireFeatures("android.hardware.usb.host", "android.software.midi");
310 
311         runTest(".audio.MidiNativeTestActivity");
312     }
313 
314     @Interactive
315     @Test
316     @SupportMultiDisplayMode
317     // MultiDisplayMode
318     @CddTest(requirements = "5.10/C-1-1,C-1-3,C-1-4")
ProAudioTest()319     public void ProAudioTest() throws Exception {
320         requireFeatures("android.hardware.usb.host", "android.hardware.audio.pro");
321 
322         runTest(".audio.ProAudioActivity");
323     }
324 
325     @Interactive
326     @Test
327     @SupportMultiDisplayMode
328     // MultiDisplayMode
329     @CddTest(requirements = "7.7.2/H-1-1,H-4-4,H-4-5,H-4-6,H-4-7")
330     @ApiTest(
331             apis = {
332                 "android.media.AudioManager#registerAudioDeviceCallback",
333                 "android.media.AudioDeviceCallback#onAudioDevicesAdded",
334                 "android.media.AudioDeviceCallback#onAudioDevicesRemoved",
335                 "android.media.AudioDeviceInfo#getChannelCounts",
336                 "android.media.AudioDeviceInfo#getEncodings",
337                 "android.media.AudioDeviceInfo#getSampleRates",
338                 "android.media.AudioDeviceInfo#getChannelIndexMasks"
339             })
USBAudioPeripheralAttributesTest()340     public void USBAudioPeripheralAttributesTest() throws Exception {
341         requireFeatures("android.hardware.usb.host");
342         excludeFeatures(
343                 "android.hardware.type.television",
344                 "android.software.leanback",
345                 "android.hardware.type.watch",
346                 "android.hardware.type.automotive");
347 
348         runTest(".audio.USBAudioPeripheralAttributesActivity");
349     }
350 
351     @Interactive
352     @Test
353     @SupportMultiDisplayMode
354     // MultiDisplayMode
355     @CddTest(requirements = "7.7.2/C-2-1,C-2-2")
USBAudioPeripheralButtonsTest()356     public void USBAudioPeripheralButtonsTest() throws Exception {
357         requireFeatures("android.hardware.usb.host");
358         excludeFeatures(
359                 "android.hardware.type.television",
360                 "android.software.leanback",
361                 "android.hardware.type.watch",
362                 "android.hardware.type.automotive");
363 
364         runTest(".audio.USBAudioPeripheralButtonsActivity");
365     }
366 
367     @Interactive
368     @Test
369     @SupportMultiDisplayMode
370     // MultiDisplayMode
371     @CddTest(requirements = "7.8.2.2/H-1-2,H-2-1,H-3-1,H-4-2,H-4-3,H-4-4,H-4-5")
372     @ApiTest(
373             apis = {
374                 "android.media.AudioManager#registerAudioDeviceCallback",
375                 "android.media.AudioDeviceCallback#onAudioDevicesAdded",
376                 "android.media.AudioDeviceCallback#onAudioDevicesRemoved",
377                 "android.content.BroadcastReceiver#onReceive"
378             })
USBAudioPeripheralNotificationsTest()379     public void USBAudioPeripheralNotificationsTest() throws Exception {
380         requireFeatures("android.hardware.usb.host");
381         excludeFeatures(
382                 "android.hardware.type.television",
383                 "android.software.leanback",
384                 "android.hardware.type.watch",
385                 "android.hardware.type.automotive");
386 
387         runTest(".audio.USBAudioPeripheralNotificationsTest");
388     }
389 
390     @Interactive
391     @Test
392     @SupportMultiDisplayMode
393     // MultiDisplayMode
394     @CddTest(requirements = "7.8.2/C-1-1,C-1-2")
USBAudioPeripheralPlayTest()395     public void USBAudioPeripheralPlayTest() throws Exception {
396         requireFeatures("android.hardware.usb.host");
397         excludeFeatures(
398                 "android.hardware.type.television",
399                 "android.software.leanback",
400                 "android.hardware.type.watch",
401                 "android.hardware.type.automotive");
402 
403         runTest(".audio.USBAudioPeripheralPlayActivity");
404     }
405 
406     @Interactive
407     @Test
408     @SupportMultiDisplayMode
409     // MultiDisplayMode
410     @CddTest(requirements = "7.8.2.2/H-1-1|7.7.2/C-2-1,C-2-2")
411     @ApiTest(apis = "android.app.Activity#onKeyDown")
USBAudioPeripheralRecordTest()412     public void USBAudioPeripheralRecordTest() throws Exception {
413         requireFeatures("android.hardware.usb.host");
414         excludeFeatures(
415                 "android.hardware.type.television",
416                 "android.software.leanback",
417                 "android.hardware.type.watch",
418                 "android.hardware.type.automotive");
419 
420         runTest(".audio.USBAudioPeripheralRecordActivity");
421     }
422 
423     @Interactive
424     @Test
425     @SupportMultiDisplayMode
426     // MultiDisplayMode
427     @ApiTest(
428             apis = {
429                 "android.hardware.usb.UsbManager#getDeviceList",
430                 "android.hardware.usb.UsbManager#requestPermission"
431             })
USBRestrictRecordATest()432     public void USBRestrictRecordATest() throws Exception {
433         requireFeatures("android.hardware.usb.host");
434         excludeFeatures(
435                 "android.hardware.type.television",
436                 "android.software.leanback",
437                 "android.hardware.type.watch",
438                 "android.hardware.type.automotive");
439 
440         runTest(".audio.USBRestrictRecordAActivity");
441     }
442 
443     @Interactive
444     @Test
445     @SupportMultiDisplayMode
446     // MultiDisplayMode
447     @CddTest(requirements = "9.8.13/C-1-3")
AudioMicrophoneMuteToggleTest()448     public void AudioMicrophoneMuteToggleTest() throws Exception {
449         runTest(".audio.AudioMicrophoneMuteToggleActivity", "config_has_mic_toggle");
450     }
451 }
452