Move dead submodules in-tree

Signed-off-by: swurl <swurl@swurl.xyz>
This commit is contained in:
swurl 2025-05-31 02:33:02 -04:00
parent c0cceff365
commit 6c655321e6
No known key found for this signature in database
GPG key ID: A5A7629F109C8FD1
4081 changed files with 1185566 additions and 45 deletions

View file

@ -0,0 +1,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:padding="16dp"
android:shape="rectangle">
<corners android:radius="6dp" />
<gradient android:angle="270" android:endColor="#d0e06E" android:startColor="#a07FCE" />
<stroke android:width="1px" android:color="#050875" />
</shape>

View file

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
android:height="108dp"
android:width="108dp"
android:viewportHeight="108"
android:viewportWidth="108"
xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z"/>
<path android:fillColor="#00000000" android:pathData="M9,0L9,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,0L19,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M29,0L29,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M39,0L39,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M49,0L49,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M59,0L59,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M69,0L69,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M79,0L79,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M89,0L89,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M99,0L99,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,9L108,9"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,19L108,19"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,29L108,29"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,39L108,39"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,49L108,49"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,59L108,59"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,69L108,69"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,79L108,79"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,89L108,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,99L108,99"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,29L89,29"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,39L89,39"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,49L89,49"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,59L89,59"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,69L89,69"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,79L89,79"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M29,19L29,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M39,19L39,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M49,19L49,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M59,19L59,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M69,19L69,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M79,19L79,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
</vector>

View file

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108"
android:tint="#0D49B0">
<group android:scaleX="2.61"
android:scaleY="2.61"
android:translateX="22.68"
android:translateY="22.68">
<path
android:fillColor="@android:color/white"
android:pathData="M17,16.99c-1.35,0 -2.2,0.42 -2.95,0.8 -0.65,0.33 -1.18,0.6 -2.05,0.6 -0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.57,-0.8 -2.95,-0.8s-2.2,0.42 -2.95,0.8c-0.65,0.33 -1.17,0.6 -2.05,0.6v1.95c1.35,0 2.2,-0.42 2.95,-0.8 0.65,-0.33 1.17,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.57,0.8 2.95,0.8s2.2,-0.42 2.95,-0.8c0.65,-0.33 1.18,-0.6 2.05,-0.6 0.9,0 1.4,0.25 2.05,0.6 0.75,0.38 1.58,0.8 2.95,0.8v-1.95c-0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.6,-0.8 -2.95,-0.8zM17,12.54c-1.35,0 -2.2,0.43 -2.95,0.8 -0.65,0.32 -1.18,0.6 -2.05,0.6 -0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.57,-0.8 -2.95,-0.8s-2.2,0.43 -2.95,0.8c-0.65,0.32 -1.17,0.6 -2.05,0.6v1.95c1.35,0 2.2,-0.43 2.95,-0.8 0.65,-0.35 1.15,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.57,0.8 2.95,0.8s2.2,-0.43 2.95,-0.8c0.65,-0.35 1.15,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.58,0.8 2.95,0.8v-1.95c-0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.6,-0.8 -2.95,-0.8zM19.95,4.46c-0.75,-0.38 -1.58,-0.8 -2.95,-0.8s-2.2,0.42 -2.95,0.8c-0.65,0.32 -1.18,0.6 -2.05,0.6 -0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.37 -1.57,-0.8 -2.95,-0.8s-2.2,0.42 -2.95,0.8c-0.65,0.33 -1.17,0.6 -2.05,0.6v1.93c1.35,0 2.2,-0.43 2.95,-0.8 0.65,-0.33 1.17,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.57,0.8 2.95,0.8s2.2,-0.43 2.95,-0.8c0.65,-0.32 1.18,-0.6 2.05,-0.6 0.9,0 1.4,0.25 2.05,0.6 0.75,0.38 1.58,0.8 2.95,0.8L22,5.04c-0.9,0 -1.4,-0.25 -2.05,-0.58zM17,8.09c-1.35,0 -2.2,0.43 -2.95,0.8 -0.65,0.35 -1.15,0.6 -2.05,0.6s-1.4,-0.25 -2.05,-0.6c-0.75,-0.38 -1.57,-0.8 -2.95,-0.8s-2.2,0.43 -2.95,0.8c-0.65,0.35 -1.15,0.6 -2.05,0.6v1.95c1.35,0 2.2,-0.43 2.95,-0.8 0.65,-0.32 1.18,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.57,0.8 2.95,0.8s2.2,-0.43 2.95,-0.8c0.65,-0.32 1.18,-0.6 2.05,-0.6 0.9,0 1.4,0.25 2.05,0.6 0.75,0.38 1.58,0.8 2.95,0.8L22,9.49c-0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.6,-0.8 -2.95,-0.8z"/>
</group>
</vector>

View file

@ -0,0 +1,83 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z"/>
<path android:fillColor="#00000000" android:pathData="M9,0L9,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,0L19,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M29,0L29,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M39,0L39,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M49,0L49,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M59,0L59,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M69,0L69,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M79,0L79,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M89,0L89,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M99,0L99,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,9L108,9"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,19L108,19"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,29L108,29"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,39L108,39"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,49L108,49"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,59L108,59"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,69L108,69"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,79L108,79"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,89L108,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,99L108,99"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,29L89,29"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,39L89,39"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,49L89,49"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,59L89,59"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,69L89,69"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,79L89,79"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M29,19L29,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M39,19L39,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M49,19L49,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M59,19L59,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M69,19L69,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M79,19L79,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<group android:scaleX="2.61"
android:scaleY="2.61"
android:translateX="22.68"
android:translateY="22.68"
android:tint="#0D49B0">
<path
android:fillColor="#0D49B0"
android:pathData="M17,16.99c-1.35,0 -2.2,0.42 -2.95,0.8 -0.65,0.33 -1.18,0.6 -2.05,0.6 -0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.57,-0.8 -2.95,-0.8s-2.2,0.42 -2.95,0.8c-0.65,0.33 -1.17,0.6 -2.05,0.6v1.95c1.35,0 2.2,-0.42 2.95,-0.8 0.65,-0.33 1.17,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.57,0.8 2.95,0.8s2.2,-0.42 2.95,-0.8c0.65,-0.33 1.18,-0.6 2.05,-0.6 0.9,0 1.4,0.25 2.05,0.6 0.75,0.38 1.58,0.8 2.95,0.8v-1.95c-0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.6,-0.8 -2.95,-0.8zM17,12.54c-1.35,0 -2.2,0.43 -2.95,0.8 -0.65,0.32 -1.18,0.6 -2.05,0.6 -0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.57,-0.8 -2.95,-0.8s-2.2,0.43 -2.95,0.8c-0.65,0.32 -1.17,0.6 -2.05,0.6v1.95c1.35,0 2.2,-0.43 2.95,-0.8 0.65,-0.35 1.15,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.57,0.8 2.95,0.8s2.2,-0.43 2.95,-0.8c0.65,-0.35 1.15,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.58,0.8 2.95,0.8v-1.95c-0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.6,-0.8 -2.95,-0.8zM19.95,4.46c-0.75,-0.38 -1.58,-0.8 -2.95,-0.8s-2.2,0.42 -2.95,0.8c-0.65,0.32 -1.18,0.6 -2.05,0.6 -0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.37 -1.57,-0.8 -2.95,-0.8s-2.2,0.42 -2.95,0.8c-0.65,0.33 -1.17,0.6 -2.05,0.6v1.93c1.35,0 2.2,-0.43 2.95,-0.8 0.65,-0.33 1.17,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.57,0.8 2.95,0.8s2.2,-0.43 2.95,-0.8c0.65,-0.32 1.18,-0.6 2.05,-0.6 0.9,0 1.4,0.25 2.05,0.6 0.75,0.38 1.58,0.8 2.95,0.8L22,5.04c-0.9,0 -1.4,-0.25 -2.05,-0.58zM17,8.09c-1.35,0 -2.2,0.43 -2.95,0.8 -0.65,0.35 -1.15,0.6 -2.05,0.6s-1.4,-0.25 -2.05,-0.6c-0.75,-0.38 -1.57,-0.8 -2.95,-0.8s-2.2,0.43 -2.95,0.8c-0.65,0.35 -1.15,0.6 -2.05,0.6v1.95c1.35,0 2.2,-0.43 2.95,-0.8 0.65,-0.32 1.18,-0.6 2.05,-0.6s1.4,0.25 2.05,0.6c0.75,0.38 1.57,0.8 2.95,0.8s2.2,-0.43 2.95,-0.8c0.65,-0.32 1.18,-0.6 2.05,-0.6 0.9,0 1.4,0.25 2.05,0.6 0.75,0.38 1.58,0.8 2.95,0.8L22,9.49c-0.9,0 -1.4,-0.25 -2.05,-0.6 -0.75,-0.38 -1.6,-0.8 -2.95,-0.8z"/>
</group>
</vector>

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
tools:context="com.mobileer.oboetester.AutomatedGlitchActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/duration"
/>
<Spinner
android:id="@+id/spinner_glitch_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/glitch_times"
/>
<TextView
android:id="@+id/actualNativeApi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/seconds_per_test"
/>
</LinearLayout>
<com.mobileer.oboetester.AutomatedTestRunner
android:id="@+id/auto_test_runner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestColdStartLatencyActivity">
<LinearLayout
android:id="@+id/buttonGrid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkedButton="@+id/direction_output"
android:orientation="horizontal">
<RadioButton
android:id="@+id/direction_output"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Output" />
<RadioButton
android:id="@+id/direction_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Input" />
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkbox_mmap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="MMAP"
android:checked="true" />
<CheckBox
android:id="@+id/checkbox_low_latency"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="LOW_LATENCY"
android:checked="true" />
<CheckBox
android:id="@+id/checkbox_exclusive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="EXCLUSIVE"
android:checked="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/start_stabilize_prompt" />
<Spinner
android:id="@+id/spinner_start_stabilize_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/sleep_times" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/close_open_prompt" />
<Spinner
android:id="@+id/spinner_close_open_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/sleep_times" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/open_start_prompt" />
<Spinner
android:id="@+id/spinner_open_start_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/sleep_times" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/button_tint"
android:onClick="onStartColdStartLatencyTest"
android:text="Start Test" />
<Button
android:id="@+id/button_stop_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/button_tint"
android:onClick="onStopColdStartLatencyTest"
android:text="Stop Test" />
</LinearLayout>
<ScrollView
android:id="@+id/text_log_scroller"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text_status"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="monospace"
android:gravity="bottom"
android:scrollbars="vertical"
android:text="@string/init_status" />
</ScrollView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mobileer.oboetester.TestDataPathsActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkbox_paths_all_channels"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="AllCh" />
<CheckBox
android:id="@+id/checkbox_paths_input_presets"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="InPre" />
<CheckBox
android:id="@+id/checkbox_paths_all_sample_rates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="AllSRs" />
<CheckBox
android:id="@+id/checkbox_paths_in_channel_masks"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="InChMasks" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="OutChMasks:" />
<RadioGroup
android:id="@+id/group_ch_mask_options"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radio_out_ch_masks_none"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="none"
android:checked="true"
/>
<RadioButton
android:id="@+id/radio_out_ch_masks_some"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="some"
/>
<RadioButton
android:id="@+id/radio_out_ch_masks_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="all"
/>
</RadioGroup>
</LinearLayout>
<TextView
android:id="@+id/text_instructions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="2"
android:text="@string/test_datapath_instructions"
android:textColor="#F44336"
android:textSize="18sp"
android:textStyle="bold" />
<com.mobileer.oboetester.AutomatedTestRunner
android:id="@+id/auto_test_runner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
</LinearLayout>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mobileer.oboetester.DeviceReportActivity">
<ScrollView
android:id="@+id/text_log_device_scroller"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text_log_device_report"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="monospace"
android:gravity="bottom"
android:scrollbars="vertical"
android:text="@string/device_report"
/>
</ScrollView>
</LinearLayout>

View file

@ -0,0 +1,147 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.mobileer.oboetester.DynamicWorkloadActivity">
<include layout="@layout/merge_audio_simple" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="1"
android:text="CPUs:"
android:textSize="18sp"
android:textStyle="bold" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/small_horizontal_margin"
android:paddingTop="@dimen/small_vertical_margin"
android:paddingRight="@dimen/small_horizontal_margin"
android:paddingBottom="@dimen/small_vertical_margin"
tools:context="com.mobileer.oboetester.DynamicWorkloadActivity">
<CheckBox
android:id="@+id/enable_perf_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="ADPF" />
<CheckBox
android:id="@+id/enable_workload_report"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="Wkload" />
<CheckBox
android:id="@+id/use_alternative_adpf"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="Alt ADPF" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/small_horizontal_margin"
android:paddingTop="@dimen/small_vertical_margin"
android:paddingRight="@dimen/small_horizontal_margin"
android:paddingBottom="@dimen/small_vertical_margin"
tools:context="com.mobileer.oboetester.DynamicWorkloadActivity">
<CheckBox
android:id="@+id/hear_workload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="Hear Synth" />
<CheckBox
android:id="@+id/draw_always"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:checked="true"
android:text="Scroll" />
<CheckBox
android:id="@+id/sustained_perf_mode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="Sustain" />
</LinearLayout>
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/affinityLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="@dimen/small_horizontal_margin"
android:paddingTop="@dimen/small_vertical_margin"
android:paddingRight="@dimen/small_horizontal_margin"
android:paddingBottom="@dimen/small_vertical_margin"
tools:context="com.mobileer.oboetester.DynamicWorkloadActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/cpu_affinity"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</HorizontalScrollView>
<com.mobileer.oboetester.WorkloadView
android:id="@+id/dynamic_workload_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<TextView
android:id="@+id/resultView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="5"
android:text="@string/tap_help"
android:textSize="18sp"
android:textStyle="bold" />
<com.mobileer.oboetester.MultiLineChart
android:id="@+id/multiline_chart"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="100dp"
app:backgroundColor="@color/background_warm"
app:exampleDimension="24sp"
app:exampleDrawable="@android:drawable/ic_menu_add"
app:exampleString="Hello, MultiLineChart"
app:lineColor="@color/light_blue_600" />
</LinearLayout>

View file

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mobileer.oboetester.EchoActivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/inputStreamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.InputMarginView
android:id="@+id/input_margin_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/outputStreamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start_echo"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onStartEcho"
android:text="@string/startAudio" />
<Button
android:id="@+id/button_stop_echo"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onStopEcho"
android:text="@string/stopAudio" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/text_delay_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delay (msec)" />
<SeekBar
android:id="@+id/fader_delay_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="1000"
android:progress="1000" />
</LinearLayout>
<com.mobileer.oboetester.CommunicationDeviceView
android:id="@+id/comm_device_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar0"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar1"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar2"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar3"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<TextView
android:id="@+id/text_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="11"
android:text="@string/echo_instructions"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestErrorCallbackActivity">
<GridLayout
android:id="@+id/buttonGrid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="1">
<Button
android:id="@+id/buttonTestDeleteCrash"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onTestDeleteCrash"
android:text="Delete Callback" />
<TextView
android:id="@+id/text_callback_status"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="monospace"
android:gravity="bottom"
android:text="@string/init_status"
/>
</GridLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ExternalTapToToneActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="startTest"
android:text="@string/startAudio" />
<Button
android:id="@+id/button_analyze"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="analyze"
android:text="@string/analyze" />
<Button
android:id="@+id/button_stop"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="stopTest"
android:text="@string/stopAudio" />
</LinearLayout>
<TextView
android:id="@+id/resultView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="2"
android:textSize="18sp"
android:textStyle="bold"
android:text="@string/tap_help" />
<com.mobileer.oboetester.WaveformView
android:id="@+id/waveview_audio"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>

View file

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ExtraTestsActivity">
<GridLayout
android:id="@+id/buttonGrid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2">
<Button
android:id="@+id/buttonBackToMain"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchMainActivity"
android:text="Back to Main" />
<Button
android:id="@+id/buttonExternalTap"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchExternalTapTest"
android:text="External Tap" />
<Button
android:id="@+id/buttonPlugLatency"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchPlugLatencyTest"
android:text="Plug Latency" />
<Button
android:id="@+id/buttonErrorCallback"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchErrorCallbackTest"
android:text="Error Callback" />
<Button
android:id="@+id/buttonRouteDuringCallback"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchRouteDuringCallbackTest"
android:text="Routing Stress" />
<Button
android:id="@+id/buttonDynamicWorkload"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchDynamicWorkloadTest"
android:text="CPU Load" />
<Button
android:id="@+id/buttonColdStartLatency"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchColdStartLatencyTest"
android:text="Cold Start Latency" />
<Button
android:id="@+id/buttonRapidCycle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchRapidCycleTest"
android:text="Rapid Cycle" />
</GridLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,253 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="@color/version_release"
tools:context="com.mobileer.oboetester.MainActivity">
<TextView
android:id="@+id/versionText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="V?"
app:layout_constraintEnd_toEndOf="@+id/buttonGrid"
app:layout_constraintStart_toStartOf="@+id/buttonGrid"
/>
<GridLayout
android:id="@+id/buttonGrid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2"
app:layout_constraintTop_toBottomOf="@+id/versionText">
<Button
android:id="@+id/buttonTestOutput"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchTestOutput"
android:text="Test Output" />
<Button
android:id="@+id/buttonTestInput"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchTestInput"
android:text="Test Input" />
<Button
android:id="@+id/buttonTapToTone"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchTapToTone"
android:text="Tap to Tone Latency" />
<Button
android:id="@+id/button_rt_latency"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchRoundTripLatency"
android:text="Round Trip Latency" />
<Button
android:id="@+id/buttonEcho"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchEcho"
android:text="Echo Input to Output" />
<Button
android:id="@+id/buttonRecorder"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchRecorder"
android:text="Record and Play"
/>
<Button
android:id="@+id/button_manual_glitches"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchManualGlitchTest"
android:text="Glitch Test" />
<Button
android:id="@+id/button_auto_glitches"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchAutoGlitchTest"
android:text="Auto Glitch Test" />
<Button
android:id="@+id/button_test_disconnect"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchTestDisconnect"
android:text="Test Disconnect" />
<Button
android:id="@+id/button_test_device_report"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchTestDeviceReport"
android:text="@string/title_report_devices" />
<Button
android:id="@+id/button_test_data_paths"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchTestDataPaths"
android:text="Data Paths" />
<Button
android:id="@+id/button_extra_tests"
android:layout_gravity="fill"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_height="wrap_content"
android:backgroundTint="@color/button_tint"
android:onClick="onLaunchExtratests"
android:text="Extras..." />
</GridLayout>
<CheckBox
android:id="@+id/useCallback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:onClick="onUseCallbackClicked"
android:text="Use Callback"
app:layout_constraintEnd_toStartOf="@+id/textView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttonGrid" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="Size:"
app:layout_constraintBaseline_toBaselineOf="@+id/useCallback"
app:layout_constraintEnd_toStartOf="@+id/callbackSize"
app:layout_constraintStart_toEndOf="@+id/useCallback" />
<EditText
android:id="@+id/callbackSize"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="8"
android:inputType="number"
android:text="0"
app:layout_constraintBaseline_toBaselineOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView" />
<CheckBox
android:id="@+id/boxEnableWorkarounds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:checked="false"
android:text="enable Oboe workarounds"
app:layout_constraintStart_toStartOf="@+id/useCallback"
app:layout_constraintTop_toBottomOf="@+id/useCallback" />
<CheckBox
android:id="@+id/boxEnableBackground"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:checked="false"
android:text="enable background operation"
app:layout_constraintStart_toStartOf="@+id/boxEnableWorkarounds"
app:layout_constraintTop_toBottomOf="@+id/boxEnableWorkarounds" />
<CheckBox
android:id="@+id/boxEnableForegroundService"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:checked="false"
android:text="enable foreground service"
app:layout_constraintStart_toStartOf="@+id/boxEnableBackground"
app:layout_constraintTop_toBottomOf="@+id/boxEnableBackground" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mode:"
app:layout_constraintBaseline_toBaselineOf="@+id/spinnerAudioMode"
app:layout_constraintStart_toStartOf="@+id/boxEnableForegroundService" />
<Spinner
android:id="@+id/spinnerAudioMode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/audio_modes"
android:prompt="@string/audio_mode_prompt"
app:layout_constraintStart_toEndOf="@+id/textView2"
app:layout_constraintTop_toBottomOf="@+id/boxEnableForegroundService" />
<TextView
android:id="@+id/deviceView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="1"
android:text="@string/init_device"
app:layout_constraintStart_toStartOf="@+id/textView2"
app:layout_constraintTop_toBottomOf="@+id/spinnerAudioMode" />
<TextView
android:id="@+id/text_build_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="3"
android:ems="10"
android:text="V?"
app:layout_constraintEnd_toEndOf="@+id/callbackSize"
app:layout_constraintStart_toStartOf="@+id/deviceView"
app:layout_constraintTop_toBottomOf="@+id/deviceView" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
tools:context="com.mobileer.oboetester.ManualGlitchActivity"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/inputStreamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.InputMarginView
android:id="@+id/input_margin_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/outputStreamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.BufferSizeView
android:id="@+id/buffer_size_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<LinearLayout
android:id="@+id/layoutGlitch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textTolerance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tolerance" />
<SeekBar
android:id="@+id/faderTolerance"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="1000"
android:progress="1000" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onStartAudioTest"
android:text="@string/startAudio" />
<Button
android:id="@+id/button_stop"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onStopAudioTest"
android:text="@string/stopAudio"
/>
<Button
android:id="@+id/button_share"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onShareFile"
android:text="@string/share"
/>
</LinearLayout>
<TextView
android:id="@+id/text_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="14"
android:text="@string/loopback_instructions_glitch"
android:textSize="14sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/boxForceGlitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:checked="false"
android:onClick="onForceGlitchClicked"
android:text="Force glitches"/>
<CheckBox
android:id="@+id/boxAutoScope"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:checked="true"
android:text="Auto draw"/>
</LinearLayout>
<com.mobileer.oboetester.WaveformView
android:id="@+id/waveview_audio"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="200dp"
/>
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestRapidCycleActivity">
<LinearLayout
android:id="@+id/buttonGrid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="monospace"
android:gravity="bottom"
android:text="@string/rapid_cycle_intro" />
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkedButton="@+id/direction_output"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="monospace"
android:gravity="bottom"
android:text="API:" />
<RadioButton
android:id="@+id/audio_api_opensl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OpenSL ES" />
<RadioButton
android:id="@+id/audio_api_aaudio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="AAudio" />
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/button_tint"
android:onClick="onStartCycleTest"
android:text="Start Test" />
<Button
android:id="@+id/button_stop_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/button_tint"
android:onClick="onStopCycleTest"
android:text="Stop Test" />
</LinearLayout>
<TextView
android:id="@+id/text_callback_status"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="monospace"
android:gravity="bottom"
android:lines="10"
android:text="@string/init_status" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
tools:context="com.mobileer.oboetester.RecorderActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/streamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.InputMarginView
android:id="@+id/input_margin_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start_recording"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onStartRecording"
android:text="@string/recordAudio"
/>
<Button
android:id="@+id/button_stop_record_play"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onStopRecordPlay"
android:text="@string/stopAudio"
/>
<Button
android:id="@+id/button_start_playback"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onStartPlayback"
android:text="@string/playAudio"
/>
<Button
android:id="@+id/button_share"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onShareFile"
android:text="@string/share"
/>
</LinearLayout>
<TextView
android:id="@+id/statusView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="3"
android:text="@string/init_status" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar0"
android:layout_width="fill_parent"
android:layout_marginBottom="4dp"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar1"
android:layout_width="fill_parent"
android:layout_marginBottom="4dp"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar2"
android:layout_width="fill_parent"
android:layout_marginBottom="4dp"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar3"
android:layout_width="fill_parent"
android:layout_marginBottom="4dp"
android:layout_height="20dp" />
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestRouteDuringCallbackActivity">
<LinearLayout
android:id="@+id/buttonGrid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="monospace"
android:gravity="bottom"
android:text="@string/routing_crash_intro" />
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkedButton="@+id/direction_output"
android:orientation="horizontal">
<RadioButton
android:id="@+id/direction_output"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Output" />
<RadioButton
android:id="@+id/direction_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Input" />
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/button_tint"
android:onClick="onStartRoutingTest"
android:text="Start Test" />
<Button
android:id="@+id/button_stop_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/button_tint"
android:onClick="onStopRoutingTest"
android:text="Stop Test" />
</LinearLayout>
<TextView
android:id="@+id/text_callback_status"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="monospace"
android:gravity="bottom"
android:lines="10"
android:text="@string/init_status" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
tools:context="com.mobileer.oboetester.RoundTripLatencyActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/inputStreamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.InputMarginView
android:id="@+id/input_margin_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/outputStreamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.BufferSizeView
android:id="@+id/buffer_size_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.WorkloadView
android:id="@+id/workload_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_measure"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="onMeasure"
android:text="@string/measure"
android:textSize="10sp" />
<Button
android:id="@+id/button_average"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onAverage"
android:text="@string/average"
android:textSize="10sp" />
<Button
android:id="@+id/button_scan"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:enabled="false"
android:onClick="onScan"
android:text="@string/scan"
android:textSize="10sp" />
<Button
android:id="@+id/button_cancel"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:enabled="false"
android:onClick="onCancel"
android:text="@string/cancel"
android:textSize="10sp" />
<Button
android:id="@+id/button_share"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onShareFile"
android:text="@string/share"
android:textSize="10sp" />
</LinearLayout>
<com.mobileer.oboetester.CommunicationDeviceView
android:id="@+id/comm_device_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<TextView
android:id="@+id/text_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="16"
android:text="@string/loopback_instructions_latency"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
tools:context="com.mobileer.oboetester.TapToToneActivity"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<include layout="@layout/merge_audio_simple"/>
<com.mobileer.oboetester.CommunicationDeviceView
android:id="@+id/comm_device_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Input Device: " />
<com.mobileer.audio_device.AudioDeviceSpinner
android:id="@+id/input_devices_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MIDI:" />
<Spinner
android:id="@+id/spinner_synth_sender"
style="@android:style/TextAppearance.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/senders" />
</LinearLayout>
<TextView
android:id="@+id/resultView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="2"
android:textSize="18sp"
android:textStyle="bold"
android:text="@string/tap_help" />
<com.mobileer.oboetester.WaveformView
android:id="@+id/waveview_audio"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="100dp"
/>
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mobileer.oboetester.TestDisconnectActivity">
<TextView
android:id="@+id/text_instructions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="2"
android:text="@string/test_disconnect_instructions"
android:textColor="#F44336"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/text_plug_events"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="2"
android:text="plug #"
android:textSize="18sp"
android:textStyle="bold"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkbox_disco_outputs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Outputs" />
<CheckBox
android:id="@+id/checkbox_disco_inputs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Inputs" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_fail"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onFailTest"
android:text="@string/failTest" />
<Button
android:id="@+id/button_skip"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:onClick="onSkipTest"
android:text="@string/skipTest" />
</LinearLayout>
<com.mobileer.oboetester.AutomatedTestRunner
android:id="@+id/auto_test_runner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
</LinearLayout>

View file

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
tools:context="com.mobileer.oboetester.TestInputActivity"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<include layout="@layout/merge_audio_common"/>
<com.mobileer.oboetester.CommunicationDeviceView
android:id="@+id/comm_device_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar0"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar1"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar2"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar3"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar4"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar5"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar6"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
<com.mobileer.oboetester.VolumeBarView
android:id="@+id/volumeBar7"
android:layout_marginBottom="4dp"
android:layout_width="fill_parent"
android:layout_height="20dp" />
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,199 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
tools:context="com.mobileer.oboetester.TestOutputActivity"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<include layout="@layout/merge_audio_common"/>
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/channelText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Channels:" />
<CheckBox
android:id="@+id/channelBox0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="0" />
<CheckBox
android:id="@+id/channelBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="1" />
<CheckBox
android:id="@+id/channelBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="2" />
<CheckBox
android:id="@+id/channelBox3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="3" />
<CheckBox
android:id="@+id/channelBox4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="4" />
<CheckBox
android:id="@+id/channelBox5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="5" />
<CheckBox
android:id="@+id/channelBox6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="6" />
<CheckBox
android:id="@+id/channelBox7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="7" />
<CheckBox
android:id="@+id/channelBox8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="8" />
<CheckBox
android:id="@+id/channelBox9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="9" />
<CheckBox
android:id="@+id/channelBox10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="10" />
<CheckBox
android:id="@+id/channelBox11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="11" />
<CheckBox
android:id="@+id/channelBox12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="12" />
<CheckBox
android:id="@+id/channelBox13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="13" />
<CheckBox
android:id="@+id/channelBox14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="14" />
<CheckBox
android:id="@+id/channelBox15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onChannelBoxClicked"
android:text="15" />
</LinearLayout>
</HorizontalScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textVolumeSlider"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Volume(dB): 0.0" />
<SeekBar
android:id="@+id/faderVolumeSlider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="500"
android:progress="500" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Signal:" />
<Spinner
android:id="@+id/spinnerOutputSignal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/output_signals"
android:prompt="@string/output_signal_prompt" />
<CheckBox
android:id="@+id/enableSetStreamControlByAttributes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="VolumeByAttr" />
</LinearLayout>
<com.mobileer.oboetester.CommunicationDeviceView
android:id="@+id/comm_device_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mobileer.oboetester.TestPlugLatencyActivity">
<TextView
android:id="@+id/text_instructions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="2"
android:text="Plug in and remove audio devices. The latency of the operation will be shown."
android:textColor="#F44336"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/text_plug_events"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="1"
android:text="plug #"
android:textSize="18sp"
android:textStyle="bold"
/>
<ScrollView
android:id="@+id/text_log_device_scroller"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text_log_device_report"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="monospace"
android:gravity="bottom"
android:scrollbars="vertical"
android:text=""
/>
</ScrollView>
</LinearLayout>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2017 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/device_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:text="Device Name" />

View file

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/runTest" />
<Button
android:id="@+id/button_stop"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/cancelTest" />
<Button
android:id="@+id/button_share"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/share" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/single_text_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="Single Test #"/>
<EditText
android:id="@+id/single_test_index"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="8"
android:inputType="number"
android:text=""/>
</LinearLayout>
<TextView
android:id="@+id/text_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minLines="2"
android:maxLines="13"
android:text="@string/auto_default_status"
android:textSize="18sp"
android:textStyle="bold"
/>
<ScrollView
android:id="@+id/text_log_auto_scroller"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text_log_auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars = "vertical"
android:gravity="bottom"
android:text="@string/log_of_test_results"
/>
</ScrollView>
</LinearLayout>

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textThreshold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BufferSIZE" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioGroup
android:id="@+id/bufferSizeGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/bufferSize1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
/>
<RadioButton
android:id="@+id/bufferSize2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
/>
<RadioButton
android:id="@+id/bufferSize3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
/>
</RadioGroup>
<SeekBar
android:id="@+id/faderBufferSize"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="1000"
android:progress="1000" />
</LinearLayout>
</LinearLayout>

View file

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFE8E0F0"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/setSpeakerphoneOn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="SpkrPhone" />
<TextView
android:id="@+id/spkr_status_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="?" />
<CheckBox
android:id="@+id/setBluetoothScoOn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="BT_SCO"
/>
<TextView
android:id="@+id/sco_status_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="?" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Comm Device: " />
<com.mobileer.audio_device.CommunicationDeviceSpinner
android:id="@+id/comm_devices_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/marginText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Input Margin:" />
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/margin_box_0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onMarginBoxClicked"
android:checked="true"
android:text="0" />
<RadioButton
android:id="@+id/margin_box_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onMarginBoxClicked"
android:text="1" />
<RadioButton
android:id="@+id/margin_box_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onMarginBoxClicked"
android:text="2" />
<RadioButton
android:id="@+id/margin_box_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onMarginBoxClicked"
android:text="3" />
<RadioButton
android:id="@+id/margin_box_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onMarginBoxClicked"
android:text="4" />
</RadioGroup>
</LinearLayout>

View file

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/streamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.BufferSizeView
android:id="@+id/buffer_size_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.WorkloadView
android:id="@+id/workload_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_open"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="openAudio"
android:text="@string/openAudio"
android:textSize="12sp" />
<Button
android:id="@+id/button_start"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="startAudio"
android:text="@string/startAudio"
android:textSize="12sp" />
<Button
android:id="@+id/button_pause"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="pauseAudio"
android:text="@string/pauseAudio"
android:textSize="12sp" />
<Button
android:id="@+id/button_flush"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="flushAudio"
android:text="@string/flushAudio"
android:textSize="12sp" />
<Button
android:id="@+id/button_stop"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="stopAudio"
android:text="@string/stopAudio"
android:textSize="12sp" />
<Button
android:id="@+id/button_release"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="releaseAudio"
android:text="@string/releaseAudio"
android:textSize="12sp" />
<Button
android:id="@+id/button_close"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="closeAudio"
android:text="@string/closeAudio"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/callbackReturnStop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="callback ret STOP" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hang_prompt" />
<Spinner
android:id="@+id/spinner_hang_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/hang_times" />
</LinearLayout>
</merge>

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<com.mobileer.oboetester.StreamConfigurationView
android:id="@+id/streamConfiguration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.BufferSizeView
android:id="@+id/buffer_size_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<com.mobileer.oboetester.WorkloadView
android:id="@+id/workload_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_start"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="startTest"
android:text="@string/startAudio" />
<Button
android:id="@+id/button_stop"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:backgroundTint="@xml/button_color_selector"
android:backgroundTintMode="src_atop"
android:onClick="stopTest"
android:text="@string/stopAudio" />
</LinearLayout>
</merge>

View file

@ -0,0 +1,17 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.mobileer.oboetester"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.mobileer.oboetester.FastButton
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#ccc"
android:paddingBottom="40dp"
android:paddingLeft="20dp"
app:exampleColor="#33b5e5"
app:exampleDimension="24sp"
app:exampleDrawable="@android:drawable/ic_menu_add"
app:exampleString="Hello, FastButton" />
</FrameLayout>

View file

@ -0,0 +1,16 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.mobileer.oboetester.MultiLineChart
style="@style/Widget.AppTheme.MyView"
android:layout_width="300dp"
android:layout_height="300dp"
android:paddingLeft="20dp"
android:paddingBottom="40dp"
app:exampleDimension="24sp"
app:exampleDrawable="@android:drawable/ic_menu_add"
app:exampleString="Hello, MultiLineChart" />
</FrameLayout>

View file

@ -0,0 +1,466 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/toggle_stream_config"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#C0F0E0"
android:clickable="true"
android:text="@string/hint_hide_settings" />
<LinearLayout
android:id="@+id/hideableView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:id="@+id/optionTable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:shrinkColumns="1"
>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="API:" />
<Spinner
android:id="@+id/spinnerNativeApi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/output_modes"
android:prompt="@string/api_prompt" />
<TextView
android:id="@+id/actualNativeApi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Device: " />
<com.mobileer.audio_device.AudioDeviceSpinner
android:id="@+id/devices_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/actualDeviceId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sample_rate_prompt" />
<Spinner
android:id="@+id/spinnerSampleRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/sample_rates"
android:prompt="@string/sample_rate_prompt" />
<TextView
android:id="@+id/actualSampleRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/channel_count_prompt" />
<Spinner
android:id="@+id/spinnerChannelCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/channel_counts"
android:prompt="@string/channel_count_prompt" />
<TextView
android:id="@+id/actualChannelCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/channel_mask_prompt" />
<Spinner
android:id="@+id/spinnerChannelMask"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:prompt="@string/channel_mask_prompt" />
<TextView
android:id="@+id/actualChannelMask"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/format_prompt"/>
<Spinner
android:id="@+id/spinnerFormat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/audio_formats"
android:prompt="@string/format_prompt" />
<TextView
android:id="@+id/actualAudioFormat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Perf:" />
<Spinner
android:id="@+id/spinnerPerformanceMode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/performance_modes"
android:prompt="@string/performance_prompt" />
<TextView
android:id="@+id/actualPerformanceMode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow
android:id="@+id/rowInputPreset">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/input_preset_prompt"/>
<Spinner
android:id="@+id/spinnerInputPreset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/audio_input_presets" />
<TextView
android:id="@+id/actualInputPreset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow
android:id="@+id/rowUsage">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/usage_prompt"/>
<Spinner
android:id="@+id/spinnerUsage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/audio_usages" />
<TextView
android:id="@+id/actualUsage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow
android:id="@+id/rowContentType">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Content Type:"/>
<Spinner
android:id="@+id/spinnerContentType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/audio_content_types" />
<TextView
android:id="@+id/actualContentType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/capacity_prompt" />
<Spinner
android:id="@+id/spinnerCapacity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/capacity_values" />
<TextView
android:id="@+id/actualCapacity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
<TableRow
android:id="@+id/rowSpatializationBehavior">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/spatialization_behavior_prompt"/>
<Spinner
android:id="@+id/spinnerSpatializationBehavior"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/spatialization_behaviors" />
<TextView
android:id="@+id/actualSpatializationBehavior"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\?" />
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/requestedMMapEnable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="MMAP" />
<TextView
android:id="@+id/actualMMap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="12sp"
android:text="\?" />
<CheckBox
android:id="@+id/requestedExclusiveMode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="Exclusive" />
<TextView
android:id="@+id/actualExclusiveMode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15sp"
android:text="\?" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/requestSessionId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10sp"
android:text="Session Id" />
<TextView
android:id="@+id/sessionId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="12sp"
android:text="\?" />
<CheckBox
android:id="@+id/requestAudioEffect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10sp"
android:text="Effect" />
</LinearLayout>
<LinearLayout
android:id="@+id/inputEffects"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone">
<CheckBox
android:id="@+id/checkBoxAutomaticGainControl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="AGC" />
<CheckBox
android:id="@+id/checkBoxAcousticEchoCanceler"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="AEC" />
<CheckBox
android:id="@+id/checkBoxNoiseSuppressor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:text="NoNoise" />
</LinearLayout>
<LinearLayout
android:id="@+id/outputEffects"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone">
<TextView
android:id="@+id/textBassBoost"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bass Boost" />
<SeekBar
android:id="@+id/seekBarBassBoost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="1000"
android:progress="0" />
<TextView
android:id="@+id/textLoudnessEnhancer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Loudness Enhancer" />
<SeekBar
android:id="@+id/seekBarLoudnessEnhancer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="5000"
android:progress="0" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Convert:" />
<CheckBox
android:id="@+id/checkChannelConversion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Chan, " />
<CheckBox
android:id="@+id/checkFormatConversion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Format, " />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/src_prompt" />
<Spinner
android:id="@+id/spinnerSRCQuality"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/conversion_qualities"
android:prompt="@string/src_prompt" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/streamInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="2"
android:text="info:" />
<TextView
android:id="@+id/statusView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="5"
android:text="@string/init_status" />
</LinearLayout>
</merge>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textWorkload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Workload" />
<SeekBar
android:id="@+id/faderWorkload"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="1000"
android:progress="0" />
</LinearLayout>

View file

@ -0,0 +1,9 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_share"
android:orderInCategory="100"
android:title="@string/share"
app:showAsAction="never" />
</menu>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,8 @@
<resources>
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 600dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
<dimen name="activity_horizontal_margin">64dp</dimen>
<dimen name="big_font_size">20dp</dimen>
</resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View file

@ -0,0 +1,8 @@
<resources>
<declare-styleable name="FastButton">
<attr name="fastString" format="string" />
<attr name="fastDimension" format="dimension" />
<attr name="fastColor" format="color" />
<attr name="fastDrawable" format="color|reference" />
</declare-styleable>
</resources>

View file

@ -0,0 +1,10 @@
<resources>
<declare-styleable name="MultiLineChart">
<attr name="exampleString" format="string" />
<attr name="exampleDimension" format="dimension" />
<attr name="exampleColor" format="color" />
<attr name="lineColor" format="color" />
<attr name="backgroundColor" format="color" />
<attr name="exampleDrawable" format="color|reference" />
</declare-styleable>
</resources>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<declare-styleable name="WaveformView">
<attr name="showZero"
format="boolean" />
</declare-styleable>
</resources>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<color name="waveform_line">#ff101080</color>
<color name="waveform_background">#ffc0f0c0</color>
<color name="version_draft">#ffffb0b0</color>
<color name="version_release">#fff0f0f0</color>
<color name="button_tint">#ffe0f0e0</color>
<color name="light_blue_400">#FF29B6F6</color>
<color name="light_blue_600">#FF039BE5</color>
<color name="gray_400">#FFBDBDBD</color>
<color name="gray_600">#FF757575</color>
<color name="background_warm">#FFf0F0E8</color>
</resources>

View file

@ -0,0 +1,10 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="small_horizontal_margin">6dp</dimen>
<dimen name="small_vertical_margin">6dp</dimen>
<dimen name="waveform_stroke_width">2.0dp</dimen>
<dimen name="big_font_size">90dp</dimen>
</resources>

View file

@ -0,0 +1,321 @@
<resources>
<string name="app_name">Oboe Tester</string>
<string name="app_name_version">Oboe Tester,(%d) v %s, Oboe v %d.%d.%d"</string>
<string name="init_device">Device:</string>
<string name="init_status">Status:</string>
<string name="tap_help">Click START button!</string>
<string name="openAudio">Open</string>
<string name="startAudio">Start</string>
<string name="pauseAudio">Pause</string>
<string name="flushAudio">Flush</string>
<string name="stopAudio">Stop</string>
<string name="releaseAudio">Rlse</string>
<string name="closeAudio">Close</string>
<string name="recordAudio">Record</string>
<string name="playAudio">Play</string>
<string name="measure">Measure</string>
<string name="cancel">Cancel</string>
<string name="scan">Scan</string>
<string name="clear">Clear</string>
<string name="clear_comm">clearCommunicationDevice()</string>
<string name="runTest">Run</string>
<string name="cancelTest">Cancel</string>
<string name="GetParam">Get Param</string>
<string name="device_name">Device Name</string>
<string name="auto_select">Auto select</string>
<string name="hint_hide_settings">Hide Settings</string>
<string name="hint_show_settings">Show Settings</string>
<string name="please_wait">Measuring, please wait...</string>
<string name="tap_to_tone_instructions">
Tap in green box!\nNo tap-to-tone results yet.
</string>
<string name="external_tap_instructions">
Trigger sound on other device.\nThen quickly tap ANALYZE.
</string>
<string name="no_double_tap">Please do not tap while measuring.</string>
<string name="loopback_instructions_glitch">
Click Show Settings to configure.\n
This glitch measurement plays\n
and listens to a sine wave.\n
It works with best with a loopback dongle.\n
Set volume to medium-high.\n
</string>
<string name="echo_instructions">
Be ready to turn down the volume\n
if you get feedback. \n
</string>
<string name="loopback_instructions_latency">
Click Show Settings to configure.\n
This latency measurement uses a\n
short burst of encoded noise.\n
It works with speakers and mic\n
or a loopback dongle.\n
Set volume to medium-high.\n
</string>
<string name="auto_glitch_instructions">
Plug in a loopback adapter.\n
Then set volume to about 80%.\n
Then press Run button.\n
</string>
<string name="api_prompt">Choose an API</string>
<string-array name="output_modes">
<item>Unspecified</item>
<item>OpenSL ES</item>
<item>AAudio</item>
</string-array>
<string name="audio_mode_prompt">Performance Mode</string>
<string-array name="audio_modes">
<item>NORMAL</item>
<item>RINGTONE</item>
<item>IN_CALL</item>
<item>IN_COMMUNICATION</item>
</string-array>
<string name="sample_rate_prompt">SRate:</string>
<string-array name="sample_rates">
<item>0</item>
<item>8000</item>
<item>11025</item>
<item>12000</item>
<item>16000</item>
<item>22050</item>
<item>24000</item>
<item>32000</item>
<item>44100</item>
<item>48000</item>
<item>64000</item>
<item>88200</item>
<item>96000</item>
</string-array>
<string name="format_prompt">Format:</string>
<string-array name="audio_formats">
<item>Unspecified</item>
<item>PCM_I16</item>
<item>PCM_FLOAT</item>
<item>PCM_I24</item>
<item>PCM_I32</item>
<item>IEC61937</item>
<item>MP3</item>
</string-array>
<string name="input_preset_prompt">InPreset:</string>
<string-array name="audio_input_presets">
<item>Generic</item>
<item>Camcorder</item>
<item>VoiceRec</item>
<item>VoiceComm</item>
<item>Unprocessed</item>
<item>Performance</item>
</string-array>
<string name="usage_prompt">Usage:</string>
<string-array name="audio_usages">
<item>Unspecified</item>
<item>Media</item>
<item>VoiceComm</item>
<item>VoiceCommSig</item>
<item>Alarm</item>
<item>Notification</item>
<item>Ringtone</item>
<item>Event</item>
<item>Accessability</item>
<item>Navigation</item>
<item>Sonification</item>
<item>Game</item>
<item>Assistant</item>
</string-array>
<string-array name="audio_content_types">
<item>Unspecified</item>
<item>Speech</item>
<item>Music</item>
<item>Movie</item>
<item>Sonification</item>
</string-array>
<string name="spatialization_behavior_prompt">Spatialization:</string>
<string-array name="spatialization_behaviors">
<item>Unspecified</item>
<item>Auto</item>
<item>Never</item>
</string-array>
<string name="channel_count_prompt">Channels:</string>
<string-array name="channel_counts">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
<item>11</item>
<item>12</item>
<item>13</item>
</string-array>
<string name="capacity_prompt">Capacity:</string>
<string-array name="capacity_values">
<item>0</item>
<item>32</item>
<item>64</item>
<item>128</item>
<item>256</item>
<item>384</item>
<item>512</item>
<item>1024</item>
<item>2048</item>
<item>4096</item>
<item>8192</item>
<item>16384</item>
</string-array>
<string-array name="glitch_times">
<item>10</item>
<item>25</item>
<item>70</item>
<item>200</item>
<item>600</item>
</string-array>
<string name="performance_prompt">Perf:</string>
<string-array name="performance_modes">
<item>NONE</item>
<item>POWER_SAVING</item>
<item>LOW_LATENCY</item>
<item>POWER_SAVING_OFFLOAD</item>
</string-array>
<!--Must match SignalType in NativeAudioContext.h-->
<string name="output_signal_prompt">choose a signal</string>
<string-array name="output_signals">
<item>Sine</item>
<item>Sawtooth</item>
<item>Freq Sweep</item>
<item>Pitch Sweep</item>
<item>White Noise</item>
</string-array>
<string name="hang_prompt">, Hang(ms)</string>
<string-array name="hang_times">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>10</item>
<item>20</item>
<item>30</item>
<item>100</item>
<item>300</item>
<item>1000</item>
<item>2000</item>
<item>5000</item>
</string-array>
<string name="synth_sender_text">Select Sender for Synth</string>
<string name="error_port_busy">Selected port is in use or unavailable.</string>
<string name="port_open_ok">Port opened OK.</string>
<string-array name="senders">
<item>"none"</item>
</string-array>
<string name="title_activity_main">Test Oboe</string>
<string name="title_activity_test_output">Test Output</string>
<string name="title_activity_test_input">Test Input</string>
<string name="title_activity_output_latency">Tap to Tone</string>
<string name="title_activity_recorder">Recorder</string>
<string name="title_activity_echo">Echo Input to Output</string>
<string name="title_activity_rt_latency">Round Trip Latency</string>
<string name="title_activity_glitches">Test Glitches</string>
<string name="title_activity_auto_glitches">Auto Glitches</string>
<string name="title_test_disconnect">Test Disconnect</string>
<string name="title_report_devices">Device Report</string>
<string name="title_data_paths">Data Paths</string>
<string name="title_extra_tests">Extra Tests</string>
<string name="title_external_tap">External Tap To Tone</string>
<string name="title_plug_latency">Plug Latency Test</string>
<string name="title_error_callback">Error Callback Test</string>
<string name="title_route_during_callback">Route Callback Test</string>
<string name="title_dynamic_load">Dynamic CPU Load</string>
<string name="title_cold_start_latency">Cold Start Latency</string>
<string name="title_rapid_cycle">Rapid Cycle</string>
<string name="need_record_audio_permission">"This app needs RECORD_AUDIO permission"</string>
<string name="share">Share</string>
<string name="seconds_per_test">seconds per test</string>
<string name="duration">Duration:</string>
<string name="auto_default_status">Status...</string>
<string name="device_report">Device Report</string>
<string name="plug_or_unplug">Plug in or Unplug a Headset</string>
<string name="report_magic_pass">PASS, got %X"</string>
<string name="report_magic_fail">FAIL, got %X, expected %X"</string>
<string name="log_of_test_results">Log of Test Results</string>
<string name="save_file">Save</string>
<string name="cpu_affinity">CPUs:</string>
<string name="src_prompt">SRC:</string>
<string name="average">Average</string>
<string name="failTest">Fail</string>
<string name="skipTest">Skip</string>
<string name="test_datapath_instructions">Attach peripherals\nVolume up, [START]</string>
<string name="test_disconnect_instructions">Disconnect all headsets.\nPress [RUN]</string>
<string name="analyze">Analyze</string>
<string name="routing_crash_intro">
May cause a crash by changing the\n
VoiceCommunication routing while playing\n
audio with a long duration callback.\n
More likely to crash with Bluetooth\n
headsets. Fixed in SDK 34 (U).\n
Issue #1763
</string>
<string name="rapid_cycle_intro">
Maybe cause a crash or hang by rapidly\n
opening, starting, and closing streams.\n
</string>
<string-array name="conversion_qualities">
<item>None</item>
<item>Fastest</item>
<item>Low</item>
<item>Medium</item>
<item>High</item>
<item>Best</item>
</string-array>
<string name="channel_mask_prompt">ChannelMask:</string>
<string name="close_open_prompt">, Sleep before open (ms)</string>
<string name="open_start_prompt">, Sleep between open and start (ms)</string>
<string name="start_stabilize_prompt">, Sleep for start to stabilize (ms)</string>
<string-array name="sleep_times">
<item>0</item>
<item>4</item>
<item>10</item>
<item>20</item>
<item>30</item>
<item>100</item>
<item>300</item>
<item>1000</item>
<item>2000</item>
<item>5000</item>
<item>10000</item>
<item>20000</item>
<item>50000</item>
</string-array>
</resources>

View file

@ -0,0 +1,13 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
</style>
<style name="Widget.AppTheme.MyView" parent="">
<item name="android:background">@color/gray_400</item>
<item name="exampleColor">@color/light_blue_400</item>
</style>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#3f000000"/>
<item android:state_focused="true" android:color="#0f000000"/>
</selector>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<devices>
<!-- These must match the values in MidiTaptester.java -->
<device manufacturer="Mobileer" product="MidiTapLatencyTester">
<input-port name="input" />
</device>
</devices>