1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:id="@+id/linearLayout" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:layout_marginLeft="4dp" 9 android:layout_marginRight="4dp" 10 android:background="@color/version_release" 11 tools:context="com.mobileer.oboetester.MainActivity"> 12 13 <TextView 14 android:id="@+id/versionText" 15 android:layout_width="0dp" 16 android:layout_height="wrap_content" 17 android:text="V?" 18 app:layout_constraintEnd_toEndOf="@+id/buttonGrid" 19 app:layout_constraintStart_toStartOf="@+id/buttonGrid" 20 /> 21 22 <GridLayout 23 android:id="@+id/buttonGrid" 24 android:layout_width="match_parent" 25 android:layout_height="wrap_content" 26 android:columnCount="2" 27 app:layout_constraintTop_toBottomOf="@+id/versionText"> 28 29 <Button 30 android:id="@+id/buttonTestOutput" 31 android:layout_width="0dp" 32 android:layout_height="wrap_content" 33 android:layout_columnWeight="1" 34 android:layout_gravity="fill" 35 android:backgroundTint="@color/button_tint" 36 android:onClick="onLaunchTestOutput" 37 android:text="Test Output" /> 38 39 <Button 40 android:id="@+id/buttonTestInput" 41 android:layout_gravity="fill" 42 android:layout_width="0dp" 43 android:layout_columnWeight="1" 44 android:layout_height="wrap_content" 45 android:backgroundTint="@color/button_tint" 46 android:onClick="onLaunchTestInput" 47 android:text="Test Input" /> 48 49 <Button 50 android:id="@+id/buttonTapToTone" 51 android:layout_width="0dp" 52 android:layout_height="wrap_content" 53 android:layout_columnWeight="1" 54 android:layout_gravity="fill" 55 android:backgroundTint="@color/button_tint" 56 android:onClick="onLaunchTapToTone" 57 android:text="Tap to Tone Latency" /> 58 59 <Button 60 android:id="@+id/button_rt_latency" 61 android:layout_gravity="fill" 62 android:layout_width="0dp" 63 android:layout_columnWeight="1" 64 android:layout_height="wrap_content" 65 android:backgroundTint="@color/button_tint" 66 android:onClick="onLaunchRoundTripLatency" 67 android:text="Round Trip Latency" /> 68 69 <Button 70 android:id="@+id/buttonEcho" 71 android:layout_gravity="fill" 72 android:layout_width="0dp" 73 android:layout_columnWeight="1" 74 android:layout_height="wrap_content" 75 android:backgroundTint="@color/button_tint" 76 android:onClick="onLaunchEcho" 77 android:text="Echo Input to Output" /> 78 79 <Button 80 android:id="@+id/buttonRecorder" 81 android:layout_gravity="fill" 82 android:layout_width="0dp" 83 android:layout_columnWeight="1" 84 android:layout_height="wrap_content" 85 android:backgroundTint="@color/button_tint" 86 android:onClick="onLaunchRecorder" 87 android:text="Record and Play" 88 /> 89 90 <Button 91 android:id="@+id/button_manual_glitches" 92 android:layout_gravity="fill" 93 android:layout_width="0dp" 94 android:layout_columnWeight="1" 95 android:layout_height="wrap_content" 96 android:backgroundTint="@color/button_tint" 97 android:onClick="onLaunchManualGlitchTest" 98 android:text="Glitch Test" /> 99 100 <Button 101 android:id="@+id/button_auto_glitches" 102 android:layout_gravity="fill" 103 android:layout_width="0dp" 104 android:layout_columnWeight="1" 105 android:layout_height="wrap_content" 106 android:backgroundTint="@color/button_tint" 107 android:onClick="onLaunchAutoGlitchTest" 108 android:text="Auto Glitch Test" /> 109 110 <Button 111 android:id="@+id/button_test_disconnect" 112 android:layout_gravity="fill" 113 android:layout_width="0dp" 114 android:layout_columnWeight="1" 115 android:layout_height="wrap_content" 116 android:backgroundTint="@color/button_tint" 117 android:onClick="onLaunchTestDisconnect" 118 android:text="Test Disconnect" /> 119 120 <Button 121 android:id="@+id/button_test_device_report" 122 android:layout_gravity="fill" 123 android:layout_width="0dp" 124 android:layout_columnWeight="1" 125 android:layout_height="wrap_content" 126 android:backgroundTint="@color/button_tint" 127 android:onClick="onLaunchTestDeviceReport" 128 android:text="@string/title_report_devices" /> 129 130 <Button 131 android:id="@+id/button_test_data_paths" 132 android:layout_gravity="fill" 133 android:layout_width="0dp" 134 android:layout_columnWeight="1" 135 android:layout_height="wrap_content" 136 android:backgroundTint="@color/button_tint" 137 android:onClick="onLaunchTestDataPaths" 138 android:text="Data Paths" /> 139 140 <Button 141 android:id="@+id/button_extra_tests" 142 android:layout_gravity="fill" 143 android:layout_width="0dp" 144 android:layout_columnWeight="1" 145 android:layout_height="wrap_content" 146 android:backgroundTint="@color/button_tint" 147 android:onClick="onLaunchExtratests" 148 android:text="Extras..." /> 149 150 <Button 151 android:id="@+id/button_test_data_paths" 152 android:layout_gravity="fill" 153 android:layout_width="0dp" 154 android:layout_columnWeight="1" 155 android:layout_height="wrap_content" 156 android:onClick="onLaunchTestDataPaths" 157 android:text="Data Paths" /> 158 159 </GridLayout> 160 161 162 <CheckBox 163 android:id="@+id/useCallback" 164 android:layout_width="wrap_content" 165 android:layout_height="wrap_content" 166 android:checked="true" 167 android:onClick="onUseCallbackClicked" 168 android:text="Use Callback" 169 app:layout_constraintEnd_toStartOf="@+id/textView" 170 app:layout_constraintStart_toStartOf="parent" 171 app:layout_constraintTop_toBottomOf="@+id/buttonGrid" /> 172 173 <TextView 174 android:id="@+id/textView" 175 android:layout_width="wrap_content" 176 android:layout_height="wrap_content" 177 android:layout_marginStart="4dp" 178 android:text="Size:" 179 app:layout_constraintBaseline_toBaselineOf="@+id/useCallback" 180 app:layout_constraintEnd_toStartOf="@+id/callbackSize" 181 app:layout_constraintStart_toEndOf="@+id/useCallback" /> 182 183 <EditText 184 android:id="@+id/callbackSize" 185 android:layout_width="0dp" 186 android:layout_height="wrap_content" 187 android:ems="8" 188 android:inputType="number" 189 android:text="0" 190 app:layout_constraintBaseline_toBaselineOf="@+id/textView" 191 app:layout_constraintEnd_toEndOf="parent" 192 app:layout_constraintStart_toEndOf="@+id/textView" /> 193 194 <CheckBox 195 android:id="@+id/boxEnableWorkarounds" 196 android:layout_width="wrap_content" 197 android:layout_height="wrap_content" 198 android:layout_marginTop="6dp" 199 android:checked="false" 200 android:text="enable Oboe workarounds" 201 app:layout_constraintStart_toStartOf="@+id/useCallback" 202 app:layout_constraintTop_toBottomOf="@+id/useCallback" /> 203 204 <CheckBox 205 android:id="@+id/boxEnableBackground" 206 android:layout_width="wrap_content" 207 android:layout_height="wrap_content" 208 android:layout_marginTop="6dp" 209 android:checked="false" 210 android:text="enable background operation" 211 app:layout_constraintStart_toStartOf="@+id/boxEnableWorkarounds" 212 app:layout_constraintTop_toBottomOf="@+id/boxEnableWorkarounds" /> 213 214 215 <CheckBox 216 android:id="@+id/boxEnableForegroundService" 217 android:layout_width="wrap_content" 218 android:layout_height="wrap_content" 219 android:layout_marginTop="6dp" 220 android:checked="false" 221 android:text="enable foreground service" 222 app:layout_constraintStart_toStartOf="@+id/boxEnableBackground" 223 app:layout_constraintTop_toBottomOf="@+id/boxEnableBackground" /> 224 225 <TextView 226 android:id="@+id/textView2" 227 android:layout_width="wrap_content" 228 android:layout_height="wrap_content" 229 android:text="Mode:" 230 app:layout_constraintBaseline_toBaselineOf="@+id/spinnerAudioMode" 231 app:layout_constraintStart_toStartOf="@+id/boxEnableForegroundService" /> 232 233 <Spinner 234 android:id="@+id/spinnerAudioMode" 235 android:layout_width="wrap_content" 236 android:layout_height="wrap_content" 237 android:entries="@array/audio_modes" 238 android:prompt="@string/audio_mode_prompt" 239 app:layout_constraintStart_toEndOf="@+id/textView2" 240 app:layout_constraintTop_toBottomOf="@+id/boxEnableForegroundService" /> 241 242 <TextView 243 android:id="@+id/deviceView" 244 android:layout_width="wrap_content" 245 android:layout_height="wrap_content" 246 android:lines="1" 247 android:text="@string/init_device" 248 app:layout_constraintStart_toStartOf="@+id/textView2" 249 app:layout_constraintTop_toBottomOf="@+id/spinnerAudioMode" /> 250 251 <TextView 252 android:id="@+id/text_build_info" 253 android:layout_width="match_parent" 254 android:layout_height="wrap_content" 255 android:lines="3" 256 android:ems="10" 257 android:text="V?" 258 app:layout_constraintEnd_toEndOf="@+id/callbackSize" 259 app:layout_constraintStart_toStartOf="@+id/deviceView" 260 app:layout_constraintTop_toBottomOf="@+id/deviceView" /> 261 262</androidx.constraintlayout.widget.ConstraintLayout> 263