1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
package com.mobileer.oboetester;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
public class AutomatedGlitchActivity extends BaseAutoGlitchActivity {
private Spinner mDurationSpinner;
// Test with these configurations.
private static final int[] PERFORMANCE_MODES = {
StreamConfiguration.PERFORMANCE_MODE_LOW_LATENCY,
StreamConfiguration.PERFORMANCE_MODE_NONE
};
private static final int[] SAMPLE_RATES = { 48000, 44100, 16000 };
private static final int MONO = 1;
private static final int STEREO = 2;
private static final int UNSPECIFIED = 0;
private class DurationSpinnerListener implements android.widget.AdapterView.OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String text = parent.getItemAtPosition(pos).toString();
mDurationSeconds = Integer.parseInt(text);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
mDurationSeconds = DEFAULT_DURATION_SECONDS;
}
}
@Override
protected void inflateActivity() {
setContentView(R.layout.activity_auto_glitches);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDurationSpinner = (Spinner) findViewById(R.id.spinner_glitch_duration);
mDurationSpinner.setOnItemSelectedListener(new DurationSpinnerListener());
}
@Override
public String getTestName() {
return "AutoGlitch";
}
private void testConfiguration(int perfMode,
int sharingMode,
int sampleRate,
int inChannels,
int outChannels) throws InterruptedException {
// Configure settings
StreamConfiguration requestedInConfig = mAudioInputTester.requestedConfiguration;
StreamConfiguration requestedOutConfig = mAudioOutTester.requestedConfiguration;
requestedInConfig.reset();
requestedOutConfig.reset();
requestedInConfig.setPerformanceMode(perfMode);
requestedOutConfig.setPerformanceMode(perfMode);
requestedInConfig.setSharingMode(sharingMode);
requestedOutConfig.setSharingMode(sharingMode);
requestedInConfig.setSampleRate(sampleRate);
requestedOutConfig.setSampleRate(sampleRate);
requestedInConfig.setChannelCount(inChannels);
requestedOutConfig.setChannelCount(outChannels);
setTolerance(0.3f); // FIXME remove
testConfigurations();
}
private void testConfiguration(int performanceMode,
int sharingMode,
int sampleRate) throws InterruptedException {
testConfiguration(performanceMode,
sharingMode,
sampleRate, MONO, STEREO);
testConfiguration(performanceMode,
sharingMode,
sampleRate, STEREO, MONO);
}
@Override
public void runTest() {
try {
logDeviceInfo();
mTestResults.clear();
testConfiguration(StreamConfiguration.PERFORMANCE_MODE_LOW_LATENCY,
StreamConfiguration.SHARING_MODE_EXCLUSIVE,
UNSPECIFIED);
for (int perfMode : PERFORMANCE_MODES) {
for (int sampleRate : SAMPLE_RATES) {
testConfiguration(perfMode,
StreamConfiguration.SHARING_MODE_SHARED,
sampleRate);
}
}
analyzeTestResults();
} catch (InterruptedException e) {
analyzeTestResults();
} catch (Exception e) {
log(e.getMessage());
showErrorToast(e.getMessage());
}
}
}
|