aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--OWNERS1
-rw-r--r--android/WALT/app/build.gradle15
-rw-r--r--android/WALT/app/src/main/AndroidManifest.xml6
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/AboutFragment.java6
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/AccelerometerFragment.java20
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/AudioFragment.java9
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/AutoRunFragment.java5
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/BaseUsbConnection.java8
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/CrashLogActivity.java3
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/DiagnosticsFragment.java3
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/DragLatencyFragment.java7
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/FastPathSurfaceView.java3
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/FrontPageFragment.java3
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/LogFragment.java9
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/LogUploader.java3
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/MainActivity.java45
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/MidiFragment.java3
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/NumberPickerPreference.java22
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/ScreenResponseFragment.java15
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/SettingsFragment.java29
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/SimpleLogger.java4
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/TapLatencyFragment.java7
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/TraceLogger.java16
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java9
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/Utils.java5
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/WaltDevice.java16
-rw-r--r--android/WALT/app/src/main/java/org/chromium/latency/walt/programmer/FirmwareImage.java8
-rw-r--r--android/WALT/app/src/main/res/drawable/ic_music_note_black_24dp.xml2
-rw-r--r--android/WALT/app/src/main/res/drawable/ic_settings_black_24dp.xml2
-rw-r--r--android/WALT/app/src/main/res/drawable/ic_system_update_alt_black_24dp.xml2
-rw-r--r--android/WALT/app/src/main/res/layout/activity_main.xml29
-rw-r--r--android/WALT/app/src/main/res/layout/dialog_upload.xml3
-rw-r--r--android/WALT/app/src/main/res/layout/fragment_accelerometer.xml10
-rw-r--r--android/WALT/app/src/main/res/layout/fragment_audio.xml14
-rw-r--r--android/WALT/app/src/main/res/layout/fragment_diagnostics.xml34
-rw-r--r--android/WALT/app/src/main/res/layout/fragment_drag_latency.xml18
-rw-r--r--android/WALT/app/src/main/res/layout/fragment_front_page.xml53
-rw-r--r--android/WALT/app/src/main/res/layout/fragment_midi.xml6
-rw-r--r--android/WALT/app/src/main/res/layout/fragment_screen_response.xml14
-rw-r--r--android/WALT/app/src/main/res/layout/fragment_tap_latency.xml12
-rw-r--r--android/WALT/app/src/main/res/layout/histogram.xml6
-rw-r--r--android/WALT/app/src/main/res/layout/line_chart.xml6
-rw-r--r--android/WALT/app/src/main/res/layout/toolbar.xml5
-rw-r--r--android/WALT/app/src/main/res/menu/menu_main.xml6
-rw-r--r--android/WALT/app/src/main/res/values/dimens.xml1
-rw-r--r--android/WALT/app/src/main/res/values/strings.xml32
-rw-r--r--android/WALT/app/src/main/res/values/styles.xml3
-rw-r--r--android/WALT/app/src/main/res/xml/backup_rules.xml4
-rw-r--r--android/WALT/app/src/main/res/xml/preferences.xml24
-rw-r--r--android/WALT/app/src/test/java/org/chromium/latency/walt/AccelerometerFragmentTest.java2
-rw-r--r--android/WALT/app/src/test/java/org/chromium/latency/walt/HistogramChartTest.java2
-rw-r--r--android/WALT/app/src/test/java/org/chromium/latency/walt/TraceLoggerTest.java2
-rw-r--r--android/WALT/app/src/test/java/org/chromium/latency/walt/UtilsTest.java4
-rw-r--r--android/WALT/gradle.properties4
-rw-r--r--pywalt/pywalt/walt.py2
55 files changed, 350 insertions, 232 deletions
diff --git a/OWNERS b/OWNERS
index b74e8ca..32e40bf 100644
--- a/OWNERS
+++ b/OWNERS
@@ -3,3 +3,4 @@
alehmer@google.com
spfetsch@google.com
gkasten@google.com
+taikuo@google.com
diff --git a/android/WALT/app/build.gradle b/android/WALT/app/build.gradle
index 71a473c..d3fd5ae 100644
--- a/android/WALT/app/build.gradle
+++ b/android/WALT/app/build.gradle
@@ -36,18 +36,19 @@ android {
}
dependencies {
- implementation 'com.android.support:appcompat-v7:27.1.1'
- implementation 'com.android.support:design:27.1.1'
- implementation 'com.android.support:preference-v7:27.1.1'
- implementation 'com.android.support:preference-v14:27.1.1'
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation 'com.google.android.material:material:1.1.0'
+ implementation 'androidx.preference:preference:1.1.1'
+ implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1'
- testImplementation 'junit:junit:4.12'
+ implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
+ testImplementation 'junit:junit:4.13'
testImplementation 'org.mockito:mockito-core:1.10.19'
- testImplementation ('org.powermock:powermock-api-mockito:1.6.2') {
+ testImplementation ('org.powermock:powermock-api-mockito:1.6.6') {
exclude module: 'hamcrest-core'
exclude module: 'objenesis'
}
- testImplementation ('org.powermock:powermock-module-junit4:1.6.2') {
+ testImplementation ('org.powermock:powermock-module-junit4:1.6.6') {
exclude module: 'hamcrest-core'
exclude module: 'objenesis'
}
diff --git a/android/WALT/app/src/main/AndroidManifest.xml b/android/WALT/app/src/main/AndroidManifest.xml
index 869b5e8..992d368 100644
--- a/android/WALT/app/src/main/AndroidManifest.xml
+++ b/android/WALT/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
package="org.chromium.latency.walt">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@@ -9,9 +10,12 @@
<application
android:allowBackup="true"
+ android:supportsRtl="true"
+ android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppTheme"
+ tools:ignore="LockedOrientationActivity">
<activity
android:name="org.chromium.latency.walt.MainActivity"
android:label="@string/app_name"
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/AboutFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/AboutFragment.java
index 08b4e4f..2dce815 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/AboutFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/AboutFragment.java
@@ -19,11 +19,13 @@ package org.chromium.latency.walt;
import android.os.Build;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import java.util.Locale;
+
+import androidx.fragment.app.Fragment;
/**
@@ -46,7 +48,7 @@ public class AboutFragment extends Fragment {
public void onResume() {
super.onResume();
TextView textView = (TextView) getActivity().findViewById(R.id.txt_build_info);
- String text = String.format("WALT v%s (versionCode=%d)\n",
+ String text = String.format(Locale.US, "WALT v%s (versionCode=%d)\n",
BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE);
text += "WALT protocol version: " + WaltDevice.PROTOCOL_VERSION + "\n";
text += "Android Build ID: " + Build.DISPLAY + "\n";
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/AccelerometerFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/AccelerometerFragment.java
index 3ed677c..4f39547 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/AccelerometerFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/AccelerometerFragment.java
@@ -16,6 +16,12 @@
package org.chromium.latency.walt;
+import static org.chromium.latency.walt.Utils.argmax;
+import static org.chromium.latency.walt.Utils.interp;
+import static org.chromium.latency.walt.Utils.max;
+import static org.chromium.latency.walt.Utils.mean;
+import static org.chromium.latency.walt.Utils.min;
+
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -27,7 +33,6 @@ import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
-import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
@@ -35,6 +40,8 @@ import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
+import androidx.fragment.app.Fragment;
+
import com.github.mikephil.charting.charts.ScatterChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.data.Entry;
@@ -44,12 +51,7 @@ import com.github.mikephil.charting.data.ScatterDataSet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-
-import static org.chromium.latency.walt.Utils.argmax;
-import static org.chromium.latency.walt.Utils.interp;
-import static org.chromium.latency.walt.Utils.max;
-import static org.chromium.latency.walt.Utils.mean;
-import static org.chromium.latency.walt.Utils.min;
+import java.util.Locale;
public class AccelerometerFragment extends Fragment implements
View.OnClickListener, SensorEventListener {
@@ -310,7 +312,7 @@ public class AccelerometerFragment extends Fragment implements
double[] shifts = findShifts(phoneEntries, waltSmoothEntries);
double bestShift = argmax(shifts) / 10d;
- logger.log(String.format("Accelerometer latency: %.1fms", bestShift));
+ logger.log(String.format(Locale.US, "Accelerometer latency: %.1fms", bestShift));
double[] deltasKernelToCallback = new double[phoneAccelerometerData.size()];
for (int i = 0; i < deltasKernelToCallback.length; i++) {
@@ -319,7 +321,7 @@ public class AccelerometerFragment extends Fragment implements
}
logger.log(String.format(
- "Mean kernel-to-callback latency: %.1fms", mean(deltasKernelToCallback)));
+ Locale.US, "Mean kernel-to-callback latency: %.1fms", mean(deltasKernelToCallback)));
List<Entry> phoneEntriesShifted = new ArrayList<>();
for (Entry e : phoneEntries) {
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/AudioFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/AudioFragment.java
index 65452ff..3db3723 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/AudioFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/AudioFragment.java
@@ -16,6 +16,8 @@
package org.chromium.latency.walt;
+import static org.chromium.latency.walt.Utils.getIntPreference;
+
import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -24,8 +26,6 @@ import android.content.pm.PackageManager;
import android.graphics.Color;
import android.media.AudioManager;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.ContextCompat;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
@@ -34,6 +34,9 @@ import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.LimitLine;
@@ -45,8 +48,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
-import static org.chromium.latency.walt.Utils.getIntPreference;
-
/**
* A simple {@link Fragment} subclass.
*/
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/AutoRunFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/AutoRunFragment.java
index f2f2a7f..71f5979 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/AutoRunFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/AutoRunFragment.java
@@ -21,14 +21,15 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/BaseUsbConnection.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/BaseUsbConnection.java
index f0e6c62..4726d12 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/BaseUsbConnection.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/BaseUsbConnection.java
@@ -24,7 +24,8 @@ import android.content.IntentFilter;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbManager;
-import android.support.v4.content.LocalBroadcastManager;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import java.util.HashMap;
import java.util.Locale;
@@ -44,7 +45,7 @@ public abstract class BaseUsbConnection {
protected UsbDeviceConnection usbConnection;
public BaseUsbConnection(Context context) {
- this.context = context;
+ this.context = context.getApplicationContext();
usbManager = (UsbManager) this.context.getSystemService(Context.USB_SERVICE);
logger = SimpleLogger.getInstance(context);
broadcastManager = LocalBroadcastManager.getInstance(context);
@@ -184,7 +185,8 @@ public abstract class BaseUsbConnection {
public UsbDevice findUsbDevice() {
- logger.log(String.format("Looking for TeensyUSB VID=0x%x PID=0x%x", getVid(), getPid()));
+ logger.log(String.format(Locale.US,
+ "Looking for TeensyUSB VID=0x%x PID=0x%x", getVid(), getPid()));
HashMap<String, UsbDevice> deviceHash = usbManager.getDeviceList();
if (deviceHash.size() == 0) {
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/CrashLogActivity.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/CrashLogActivity.java
index 00e80ed..f2ce3d1 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/CrashLogActivity.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/CrashLogActivity.java
@@ -17,10 +17,11 @@
package org.chromium.latency.walt;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
import android.text.method.ScrollingMovementMethod;
import android.widget.TextView;
+import androidx.appcompat.app.AppCompatActivity;
+
/**
* A separate activity to display exception trace on the screen in case of a crash.
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/DiagnosticsFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/DiagnosticsFragment.java
index 65ec3bf..17b0f2f 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/DiagnosticsFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/DiagnosticsFragment.java
@@ -21,13 +21,14 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.fragment.app.Fragment;
+
/**
* This screen allows to perform different tasks useful for diagnostics.
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/DragLatencyFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/DragLatencyFragment.java
index af03e36..9453c04 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/DragLatencyFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/DragLatencyFragment.java
@@ -16,12 +16,12 @@
package org.chromium.latency.walt;
+import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -29,6 +29,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.fragment.app.Fragment;
+
import com.github.mikephil.charting.charts.ScatterChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.data.Entry;
@@ -67,6 +69,7 @@ public class DragLatencyFragment extends Fragment
}
};
+ @SuppressLint("ClickableViewAccessibility")
private View.OnTouchListener touchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
@@ -143,6 +146,7 @@ public class DragLatencyFragment extends Fragment
/**
* @return true if measurement was successfully started
*/
+ @SuppressLint("ClickableViewAccessibility")
boolean startMeasurement() {
logger.log("Starting drag latency test");
try {
@@ -185,6 +189,7 @@ public class DragLatencyFragment extends Fragment
updateCountsDisplay();
}
+ @SuppressLint("ClickableViewAccessibility")
void finishAndShowStats() {
touchCatcher.stopAnimation();
waltDevice.stopListener();
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/FastPathSurfaceView.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/FastPathSurfaceView.java
index 449627f..0c5ad59 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/FastPathSurfaceView.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/FastPathSurfaceView.java
@@ -22,13 +22,14 @@ import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Build;
-import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;
+import androidx.annotation.RequiresApi;
+
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/FrontPageFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/FrontPageFragment.java
index cb125e3..84fbbbe 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/FrontPageFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/FrontPageFragment.java
@@ -18,13 +18,14 @@ package org.chromium.latency.walt;
import android.graphics.Color;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.fragment.app.Fragment;
+
/**
* A simple {@link Fragment} subclass.
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/LogFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/LogFragment.java
index 069d032..1e26b32 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/LogFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/LogFragment.java
@@ -17,25 +17,26 @@
package org.chromium.latency.walt;
-import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+
/**
* A screen that shows the log.
*/
public class LogFragment extends Fragment {
- private Activity activity;
+ private AppCompatActivity activity;
private SimpleLogger logger;
TextView textView;
@@ -56,7 +57,7 @@ public class LogFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- activity = getActivity();
+ activity = (AppCompatActivity) getActivity();
logger = SimpleLogger.getInstance(getContext());
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_log, container, false);
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/LogUploader.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/LogUploader.java
index a73f456..aa10f74 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/LogUploader.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/LogUploader.java
@@ -17,7 +17,8 @@
package org.chromium.latency.walt;
import android.content.Context;
-import android.support.v4.content.AsyncTaskLoader;
+
+import androidx.loader.content.AsyncTaskLoader;
import java.io.BufferedOutputStream;
import java.io.IOException;
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/MainActivity.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/MainActivity.java
index e0d0d75..81a637b 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/MainActivity.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/MainActivity.java
@@ -16,6 +16,8 @@
package org.chromium.latency.walt;
+import static org.chromium.latency.walt.Utils.getBooleanPreference;
+
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
@@ -30,18 +32,6 @@ import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.StrictMode;
-import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.content.Loader;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -49,7 +39,18 @@ import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
-import org.chromium.latency.walt.programmer.Programmer;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.loader.content.Loader;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.preference.PreferenceManager;
import java.io.File;
import java.io.FileOutputStream;
@@ -59,7 +60,7 @@ import java.io.StringWriter;
import java.util.Date;
import java.util.Locale;
-import static org.chromium.latency.walt.Utils.getBooleanPreference;
+import org.chromium.latency.walt.programmer.Programmer;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "WALT";
@@ -218,7 +219,7 @@ public class MainActivity extends AppCompatActivity {
broadcastManager = LocalBroadcastManager.getInstance(this);
// Add basic version and device info to the log
- logger.log(String.format("WALT v%s (versionCode=%d)",
+ logger.log(String.format(Locale.US, "WALT v%s (versionCode=%d)",
BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE));
logger.log("WALT protocol version " + WaltDevice.PROTOCOL_VERSION);
logger.log("DEVICE INFO:");
@@ -354,13 +355,8 @@ public class MainActivity extends AppCompatActivity {
}
public void onClickPing(View view) {
- long t1 = waltDevice.clock.micros();
try {
- waltDevice.command(WaltDevice.CMD_PING);
- long dt = waltDevice.clock.micros() - t1;
- logger.log(String.format(Locale.US,
- "Ping reply in %.1fms", dt / 1000.
- ));
+ waltDevice.ping();
} catch (IOException e) {
logger.log("Error sending ping: " + e.getMessage());
}
@@ -492,7 +488,7 @@ public class MainActivity extends AppCompatActivity {
// A reasonable world readable location,on many phones it's /storage/emulated/Documents
// TODO: make this location configurable?
- File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
+ File path = getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
File file = null;
FileOutputStream outStream = null;
@@ -516,7 +512,7 @@ public class MainActivity extends AppCompatActivity {
}
public void clearLogFile() {
- File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
+ File path = getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
try {
File file = new File(path, LOG_FILENAME);
file.delete();
@@ -546,7 +542,8 @@ public class MainActivity extends AppCompatActivity {
}
private static boolean startsWithHttp(String url) {
- return url.toLowerCase().startsWith("http://") || url.toLowerCase().startsWith("https://");
+ return url.toLowerCase(Locale.getDefault()).startsWith("http://") ||
+ url.toLowerCase(Locale.getDefault()).startsWith("https://");
}
private void showUploadLogDialog() {
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/MidiFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/MidiFragment.java
index c6f1118..8d3fe6a 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/MidiFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/MidiFragment.java
@@ -20,13 +20,14 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.fragment.app.Fragment;
+
import java.util.Locale;
public class MidiFragment extends Fragment
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/NumberPickerPreference.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/NumberPickerPreference.java
index 9d71d42..cf4ef55 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/NumberPickerPreference.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/NumberPickerPreference.java
@@ -19,13 +19,15 @@ package org.chromium.latency.walt;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v7.preference.DialogPreference;
-import android.support.v7.preference.PreferenceDialogFragmentCompat;
import android.util.AttributeSet;
import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.preference.DialogPreference;
+import androidx.preference.PreferenceDialogFragmentCompat;
+
public class NumberPickerPreference extends DialogPreference {
+ private boolean isInitSet = false;
private int currentValue;
private int maxValue;
private int minValue;
@@ -62,9 +64,13 @@ public class NumberPickerPreference extends DialogPreference {
}
public void setValue(int value) {
- currentValue = value;
- persistInt(currentValue);
- setSummary(String.format(defaultSummary, getValue()));
+ boolean changed = (currentValue != value);
+ if (changed || !isInitSet) {
+ isInitSet = true;
+ currentValue = value;
+ persistInt(currentValue);
+ setSummary(String.format(defaultSummary, getValue()));
+ }
}
@Override
@@ -73,8 +79,8 @@ public class NumberPickerPreference extends DialogPreference {
}
@Override
- protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
- setValue(restorePersistedValue ? getPersistedInt(currentValue) : (Integer) defaultValue);
+ protected void onSetInitialValue(Object defaultValue) {
+ setValue((Integer) defaultValue);
}
public static class NumberPickerPreferenceDialogFragmentCompat
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/ScreenResponseFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/ScreenResponseFragment.java
index 629ed7d..d1ebfac 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/ScreenResponseFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/ScreenResponseFragment.java
@@ -16,16 +16,15 @@
package org.chromium.latency.walt;
+import static org.chromium.latency.walt.Utils.getBooleanPreference;
+import static org.chromium.latency.walt.Utils.getIntPreference;
+
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
-import android.support.v4.app.Fragment;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
import android.text.method.ScrollingMovementMethod;
import android.view.Choreographer;
import android.view.LayoutInflater;
@@ -36,6 +35,11 @@ import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.data.Entry;
@@ -47,9 +51,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
-import static org.chromium.latency.walt.Utils.getBooleanPreference;
-import static org.chromium.latency.walt.Utils.getIntPreference;
-
/**
* Measurement of screen response time when switching between black and white.
*/
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/SettingsFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/SettingsFragment.java
index 4f74fc4..ace30cc 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/SettingsFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/SettingsFragment.java
@@ -18,19 +18,21 @@ package org.chromium.latency.walt;
import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceFragmentCompat;
-import android.support.v7.preference.PreferenceScreen;
-import android.support.v7.widget.Toolbar;
import android.view.View;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
-public class SettingsFragment extends PreferenceFragmentCompat implements PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
+
+public class SettingsFragment extends PreferenceFragmentCompat implements
+ PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
private Toolbar toolbar;
@@ -70,8 +72,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
DialogFragment fragment = NumberPickerPreference.
NumberPickerPreferenceDialogFragmentCompat.newInstance(preference.getKey());
fragment.setTargetFragment(this, 0);
- fragment.show(getFragmentManager(),
- "android.support.v7.preference.PreferenceFragment.DIALOG");
+ fragment.show(getParentFragmentManager(),
+ "androidx.preference.PreferenceFragment.DIALOG");
} else {
super.onDisplayPreferenceDialog(preference);
}
@@ -90,7 +92,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, preferenceScreen.getKey());
fragment.setArguments(args);
- FragmentTransaction ft = preferenceFragmentCompat.getFragmentManager().beginTransaction();
+ FragmentTransaction ft = preferenceFragmentCompat.
+ getParentFragmentManager().beginTransaction();
ft.add(R.id.fragment_container, fragment, preferenceScreen.getKey());
ft.addToBackStack(preferenceScreen.getTitle().toString());
ft.commit();
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/SimpleLogger.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/SimpleLogger.java
index 6059e0f..9244377 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/SimpleLogger.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/SimpleLogger.java
@@ -20,7 +20,9 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.support.v4.content.LocalBroadcastManager;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
import android.util.Log;
/**
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/TapLatencyFragment.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/TapLatencyFragment.java
index e26a328..ca0e80b 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/TapLatencyFragment.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/TapLatencyFragment.java
@@ -16,11 +16,11 @@
package org.chromium.latency.walt;
+import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -29,6 +29,8 @@ import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
+import androidx.fragment.app.Fragment;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.Locale;
@@ -71,6 +73,7 @@ public class TapLatencyFragment extends Fragment
}
};
+ @SuppressLint("ClickableViewAccessibility")
private View.OnTouchListener touchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
@@ -212,6 +215,7 @@ public class TapLatencyFragment extends Fragment
moveCountsView.setText(String.format(Locale.US, "⇄ %d", moveCount));
}
+ @SuppressLint("ClickableViewAccessibility")
void restartMeasurement() {
logger.log("\n## Restarting tap latency measurement. Re-sync clocks ...");
try {
@@ -241,6 +245,7 @@ public class TapLatencyFragment extends Fragment
tapCatcherView.setOnTouchListener(touchListener);
}
+ @SuppressLint("ClickableViewAccessibility")
void finishAndShowStats() {
tapCatcherView.setOnTouchListener(null);
waltDevice.checkDrift();
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/TraceLogger.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/TraceLogger.java
index 6fdb8d9..964e9c6 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/TraceLogger.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/TraceLogger.java
@@ -25,6 +25,7 @@ import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.DecimalFormat;
import java.util.ArrayList;
+import java.util.Locale;
/**
* Used to log events for Android systrace
@@ -58,12 +59,13 @@ class TraceLogger {
StringBuilder sb = new StringBuilder();
int pid = android.os.Process.myPid();
for (TraceEvent e : traceEvents) {
- sb.append(String.format(
- "WALTThread-1234 (%d) [000] ...1 %s: tracing_mark_write: B|%d|%s|description=%s|WALT\n",
- pid, df.format(e.startTimeMicros / 1e6), pid, e.title, e.description));
- sb.append(String.format(
- "WALTThread-1234 (%d) [000] ...1 %s: tracing_mark_write: E|%d|%s||WALT\n",
- pid, df.format(e.finishTimeMicros / 1e6), pid, e.title));
+ sb.append(String.format(Locale.US,
+ "WALTThread-1234 (%d) [000] ...1 %s: tracing_mark_write: "
+ + "B|%d|%s|description=%s|WALT\n",
+ pid, df.format(e.startTimeMicros / 1e6), pid, e.title, e.description));
+ sb.append(String.format(Locale.US,
+ "WALTThread-1234 (%d) [000] ...1 %s: tracing_mark_write: E|%d|%s||WALT\n",
+ pid, df.format(e.finishTimeMicros / 1e6), pid, e.title));
}
return sb.toString();
}
@@ -85,7 +87,7 @@ class TraceLogger {
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file, true));
writer.write(getLogText());
writer.close();
- logger.log(String.format("TraceLogger wrote %d events to %s",
+ logger.log(String.format(Locale.US, "TraceLogger wrote %d events to %s",
traceEvents.size(), file.getAbsolutePath()));
} catch (IOException e) {
logger.log("ERROR: IOException writing to trace.txt");
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java
index e961949..f68e461 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java
@@ -20,6 +20,7 @@ import android.util.Log;
import android.view.MotionEvent;
import java.lang.reflect.Method;
+import java.util.Locale;
/**
* A convenient representation of MotionEvent events
@@ -71,13 +72,13 @@ public class UsMotionEvent {
public String toString() {
- return String.format("%d %f %f",
+ return String.format(Locale.US, "%d %f %f",
kernelTime, x, y);
}
public String toStringLong() {
- return String.format("Event: t=%d x=%.1f y=%.1f slot=%d num=%d %s",
+ return String.format(Locale.US, "Event: t=%d x=%.1f y=%.1f slot=%d num=%d %s",
kernelTime, x, y, slot, num, actionToString(action));
}
@@ -119,7 +120,7 @@ public class UsMotionEvent {
private long getEventTimeMicro(MotionEvent event) {
long t_nanos = -1;
try {
- Class cls = Class.forName("android.view.MotionEvent");
+ Class<?> cls = Class.forName("android.view.MotionEvent");
Method myTimeGetter = cls.getMethod("getEventTimeNano");
t_nanos = (long) myTimeGetter.invoke(event);
} catch (Exception e) {
@@ -132,7 +133,7 @@ public class UsMotionEvent {
private long getHistoricalEventTimeMicro(MotionEvent event, int pos) {
long t_nanos = -1;
try {
- Class cls = Class.forName("android.view.MotionEvent");
+ Class<?> cls = Class.forName("android.view.MotionEvent");
Method myTimeGetter = cls.getMethod("getHistoricalEventTimeNano", new Class[] {int.class});
t_nanos = (long) myTimeGetter.invoke(event, new Object[]{pos});
} catch (Exception e) {
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/Utils.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/Utils.java
index 97738ce..46796e2 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/Utils.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/Utils.java
@@ -18,8 +18,9 @@ package org.chromium.latency.walt;
import android.content.Context;
import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.support.annotation.StringRes;
+
+import androidx.preference.PreferenceManager;
+import androidx.annotation.StringRes;
import com.github.mikephil.charting.data.Entry;
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/WaltDevice.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/WaltDevice.java
index 566a890..631afb8 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/WaltDevice.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/WaltDevice.java
@@ -23,6 +23,7 @@ import android.os.Handler;
import android.util.Log;
import java.io.IOException;
+import java.util.Locale;
/**
* A singleton used as an interface for the physical WALT device.
@@ -222,6 +223,19 @@ public class WaltDevice implements WaltConnection.ConnectionStateListener {
}
}
+ public void ping() throws IOException {
+ if (!isConnected() || clock == null) {
+ throw new IOException("Not connected to WALT");
+ }
+
+ long t1 = clock.micros();
+ command(CMD_PING);
+ long dt = clock.micros() - t1;
+ logger.log(String.format(Locale.US,
+ "Ping reply in %.1fms", dt / 1000.
+ ));
+ }
+
public void syncClock() throws IOException {
clock = connection.syncClock();
}
@@ -248,7 +262,7 @@ public class WaltDevice implements WaltConnection.ConnectionStateListener {
return;
}
int drift = Math.abs(clock.getMeanLag());
- String msg = String.format("Remote clock delayed between %d and %d us",
+ String msg = String.format(Locale.US, "Remote clock delayed between %d and %d us",
clock.minLag, clock.maxLag);
// TODO: Convert the limit to user editable preference
if (drift > DEFAULT_DRIFT_LIMIT_US) {
diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/programmer/FirmwareImage.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/programmer/FirmwareImage.java
index d2feb01..0f8b1ef 100644
--- a/android/WALT/app/src/main/java/org/chromium/latency/walt/programmer/FirmwareImage.java
+++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/programmer/FirmwareImage.java
@@ -24,6 +24,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.util.Arrays;
+import java.util.Locale;
class FirmwareImage {
private static final String TAG = "FirmwareImage";
@@ -89,7 +90,8 @@ class FirmwareImage {
return;
}
default: {
- throw new ParseException(String.format("Unknown code '%x'", code), cur);
+ throw new ParseException(String.format(
+ Locale.US, "Unknown code '%x'", code), cur);
}
}
}
@@ -119,8 +121,8 @@ class FirmwareImage {
dest[addr + i] = parseByte(line, pos + i * 2);
mask[addr + i] = true;
} catch (ArrayIndexOutOfBoundsException e) {
- throw new ParseException(String.format("Address '%x' out of range", addr + i),
- pos + i * 2);
+ throw new ParseException(String.format(Locale.US,
+ "Address '%x' out of range", addr + i), pos + i * 2);
}
}
}
diff --git a/android/WALT/app/src/main/res/drawable/ic_music_note_black_24dp.xml b/android/WALT/app/src/main/res/drawable/ic_music_note_black_24dp.xml
index 2e5b3cc..fb95660 100644
--- a/android/WALT/app/src/main/res/drawable/ic_music_note_black_24dp.xml
+++ b/android/WALT/app/src/main/res/drawable/ic_music_note_black_24dp.xml
@@ -5,5 +5,5 @@ android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
- android:pathData="M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"/>
+ android:pathData="M12 3v10.55c-0.59-0.34-1.27-0.55-2-0.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"/>
</vector> \ No newline at end of file
diff --git a/android/WALT/app/src/main/res/drawable/ic_settings_black_24dp.xml b/android/WALT/app/src/main/res/drawable/ic_settings_black_24dp.xml
index ace746c..896ea9d 100644
--- a/android/WALT/app/src/main/res/drawable/ic_settings_black_24dp.xml
+++ b/android/WALT/app/src/main/res/drawable/ic_settings_black_24dp.xml
@@ -5,5 +5,5 @@
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
- android:pathData="M19.43,12.98c0.04,-0.32 0.07,-0.64 0.07,-0.98s-0.03,-0.66 -0.07,-0.98l2.11,-1.65c0.19,-0.15 0.24,-0.42 0.12,-0.64l-2,-3.46c-0.12,-0.22 -0.39,-0.3 -0.61,-0.22l-2.49,1c-0.52,-0.4 -1.08,-0.73 -1.69,-0.98l-0.38,-2.65C14.46,2.18 14.25,2 14,2h-4c-0.25,0 -0.46,0.18 -0.49,0.42l-0.38,2.65c-0.61,0.25 -1.17,0.59 -1.69,0.98l-2.49,-1c-0.23,-0.09 -0.49,0 -0.61,0.22l-2,3.46c-0.13,0.22 -0.07,0.49 0.12,0.64l2.11,1.65c-0.04,0.32 -0.07,0.65 -0.07,0.98s0.03,0.66 0.07,0.98l-2.11,1.65c-0.19,0.15 -0.24,0.42 -0.12,0.64l2,3.46c0.12,0.22 0.39,0.3 0.61,0.22l2.49,-1c0.52,0.4 1.08,0.73 1.69,0.98l0.38,2.65c0.03,0.24 0.24,0.42 0.49,0.42h4c0.25,0 0.46,-0.18 0.49,-0.42l0.38,-2.65c0.61,-0.25 1.17,-0.59 1.69,-0.98l2.49,1c0.23,0.09 0.49,0 0.61,-0.22l2,-3.46c0.12,-0.22 0.07,-0.49 -0.12,-0.64l-2.11,-1.65zM12,15.5c-1.93,0 -3.5,-1.57 -3.5,-3.5s1.57,-3.5 3.5,-3.5 3.5,1.57 3.5,3.5 -1.57,3.5 -3.5,3.5z"/>
+ android:pathData="M19.1,12.9a2.8,2.8 0,0 0,0.1 -0.9,2.8 2.8,0 0,0 -0.1,-0.9l2.1,-1.6a0.7,0.7 0,0 0,0.1 -0.6L19.4,5.5a0.7,0.7 0,0 0,-0.6 -0.2l-2.4,1a6.5,6.5 0,0 0,-1.6 -0.9l-0.4,-2.6a0.5,0.5 0,0 0,-0.5 -0.4H10.1a0.5,0.5 0,0 0,-0.5 0.4L9.3,5.4a5.6,5.6 0,0 0,-1.7 0.9l-2.4,-1a0.4,0.4 0,0 0,-0.5 0.2l-2,3.4c-0.1,0.2 0,0.4 0.2,0.6l2,1.6a2.8,2.8 0,0 0,-0.1 0.9,2.8 2.8,0 0,0 0.1,0.9L2.8,14.5a0.7,0.7 0,0 0,-0.1 0.6l1.9,3.4a0.7,0.7 0,0 0,0.6 0.2l2.4,-1a6.5,6.5 0,0 0,1.6 0.9l0.4,2.6a0.5,0.5 0,0 0,0.5 0.4h3.8a0.5,0.5 0,0 0,0.5 -0.4l0.3,-2.6a5.6,5.6 0,0 0,1.7 -0.9l2.4,1a0.4,0.4 0,0 0,0.5 -0.2l2,-3.4c0.1,-0.2 0,-0.4 -0.2,-0.6ZM12,15.6A3.6,3.6 0,1 1,15.6 12,3.6 3.6,0 0,1 12,15.6Z"/>
</vector>
diff --git a/android/WALT/app/src/main/res/drawable/ic_system_update_alt_black_24dp.xml b/android/WALT/app/src/main/res/drawable/ic_system_update_alt_black_24dp.xml
index ec96a71..6ce20c7 100644
--- a/android/WALT/app/src/main/res/drawable/ic_system_update_alt_black_24dp.xml
+++ b/android/WALT/app/src/main/res/drawable/ic_system_update_alt_black_24dp.xml
@@ -5,5 +5,5 @@
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
- android:pathData="M12 16.5l4-4h-3v-9h-2v9H8l4 4zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2z"/>
+ android:pathData="M12 16.5l4-4h-3v-9h-2v9H8l4 4zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 0.9-2 2v14c0 1.1 0.9 2 2 2h18c1.1 0 2-0.9 2-2v-14c0-1.1-0.9-2-2-2z"/>
</vector>
diff --git a/android/WALT/app/src/main/res/layout/activity_main.xml b/android/WALT/app/src/main/res/layout/activity_main.xml
index 57e7679..ad9a864 100644
--- a/android/WALT/app/src/main/res/layout/activity_main.xml
+++ b/android/WALT/app/src/main/res/layout/activity_main.xml
@@ -1,27 +1,20 @@
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<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"
tools:context=".MainActivity">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
-
- <include
- android:id="@+id/toolbar_main"
- layout="@layout/toolbar" />
-
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/fragment_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+ <include
+ android:id="@+id/toolbar_main"
+ layout="@layout/toolbar" />
+ <FrameLayout
+ android:id="@+id/fragment_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
- </FrameLayout>
- </LinearLayout>
+ </FrameLayout>
-</RelativeLayout>
+</LinearLayout> \ No newline at end of file
diff --git a/android/WALT/app/src/main/res/layout/dialog_upload.xml b/android/WALT/app/src/main/res/layout/dialog_upload.xml
index be990a2..88983d7 100644
--- a/android/WALT/app/src/main/res/layout/dialog_upload.xml
+++ b/android/WALT/app/src/main/res/layout/dialog_upload.xml
@@ -9,7 +9,8 @@
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:hint="Enter URL"
+ android:hint="@string/hint_url"
+ android:autofillHints="Enter URL"
android:inputType="textUri" />
<ProgressBar
diff --git a/android/WALT/app/src/main/res/layout/fragment_accelerometer.xml b/android/WALT/app/src/main/res/layout/fragment_accelerometer.xml
index 664e246..693287f 100644
--- a/android/WALT/app/src/main/res/layout/fragment_accelerometer.xml
+++ b/android/WALT/app/src/main/res/layout/fragment_accelerometer.xml
@@ -1,4 +1,5 @@
<FrameLayout 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"
@@ -23,7 +24,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tint="@color/button_tint"
- android:src="@drawable/ic_play_arrow_black_24dp" />
+ app:srcCompat="@drawable/ic_play_arrow_black_24dp"
+ android:contentDescription="@string/start" />
</LinearLayout>
@@ -55,11 +57,11 @@
android:id="@+id/button_close_chart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
+ android:layout_alignTop="@id/latency_chart"
+ android:layout_alignEnd="@id/latency_chart"
android:tint="@color/button_tint"
android:layout_margin="5dp"
- android:text="Close" />
+ android:text="@string/close" />
</RelativeLayout>
<TextView
diff --git a/android/WALT/app/src/main/res/layout/fragment_audio.xml b/android/WALT/app/src/main/res/layout/fragment_audio.xml
index e11f157..190f658 100644
--- a/android/WALT/app/src/main/res/layout/fragment_audio.xml
+++ b/android/WALT/app/src/main/res/layout/fragment_audio.xml
@@ -19,24 +19,26 @@
android:id="@+id/button_stop_audio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
android:tint="@color/button_tint"
- android:src="@drawable/ic_stop_black_24dp" />
+ walt:srcCompat="@drawable/ic_stop_black_24dp"
+ android:contentDescription="@string/stop" />
<ImageButton
android:id="@+id/button_start_audio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
android:tint="@color/button_tint"
- android:src="@drawable/ic_play_arrow_black_24dp" />
+ walt:srcCompat="@drawable/ic_play_arrow_black_24dp"
+ android:contentDescription="@string/start" />
<Spinner
android:id="@+id/spinner_audio_mode"
android:layout_height="45dp"
android:layout_width="fill_parent"
- android:layout_toRightOf="@id/button_stop_audio"
- android:layout_toLeftOf="@id/button_start_audio"
+ android:layout_toEndOf="@id/button_stop_audio"
+ android:layout_toStartOf="@id/button_start_audio"
android:prompt="@string/audio_mode"/>
</RelativeLayout>
diff --git a/android/WALT/app/src/main/res/layout/fragment_diagnostics.xml b/android/WALT/app/src/main/res/layout/fragment_diagnostics.xml
index 82a3cae..2950bac 100644
--- a/android/WALT/app/src/main/res/layout/fragment_diagnostics.xml
+++ b/android/WALT/app/src/main/res/layout/fragment_diagnostics.xml
@@ -1,4 +1,5 @@
<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"
@@ -23,7 +24,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_usb_black_24dp" />
+ app:srcCompat="@drawable/ic_usb_black_24dp"
+ android:contentDescription="@string/reconnect" />
<LinearLayout
android:layout_width="match_parent"
@@ -33,12 +35,12 @@
<TextView
style="@style/MenuTextTop"
- android:text="Reconnect" />
+ android:text="@string/reconnect" />
<TextView
android:visibility="gone"
style="@style/MenuTextBottom"
- android:text="TBD: Conn status" />
+ android:text="@string/tbd_conn_status" />
</LinearLayout>
@@ -54,7 +56,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_swap_horiz_black_24dp" />
+ app:srcCompat="@drawable/ic_swap_horiz_black_24dp"
+ android:contentDescription="@string/ping" />
<LinearLayout
android:layout_width="match_parent"
@@ -64,11 +67,11 @@
<TextView
style="@style/MenuTextTop"
- android:text="Ping" />
+ android:text="@string/ping" />
<TextView
style="@style/MenuTextBottom"
- android:text="Ping over USB with 1 byte" />
+ android:text="@string/ping_over_usb_with_1_byte" />
</LinearLayout>
@@ -84,7 +87,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_schedule_black_24dp" />
+ app:srcCompat="@drawable/ic_schedule_black_24dp"
+ android:contentDescription="@string/re_sync_clocks" />
<LinearLayout
android:layout_width="match_parent"
@@ -94,7 +98,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="Re-sync clocks" />
+ android:text="@string/re_sync_clocks" />
</LinearLayout>
</LinearLayout>
@@ -109,7 +113,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_timelapse_black_24dp" />
+ app:srcCompat="@drawable/ic_timelapse_black_24dp"
+ android:contentDescription="@string/check_clock_drift" />
<LinearLayout
android:layout_width="match_parent"
@@ -119,11 +124,11 @@
<TextView
style="@style/MenuTextTop"
- android:text="Check clock drift" />
+ android:text="@string/check_clock_drift" />
<TextView
style="@style/MenuTextBottom"
- android:text="Check how much clocks diverged" />
+ android:text="@string/check_how_much_clocks_diverged" />
</LinearLayout>
@@ -139,7 +144,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_system_update_alt_black_24dp" />
+ app:srcCompat="@drawable/ic_system_update_alt_black_24dp"
+ android:contentDescription="@string/update_walt_firmware" />
<LinearLayout
android:layout_width="match_parent"
@@ -149,11 +155,11 @@
<TextView
style="@style/MenuTextTop"
- android:text="Update WALT Firmware" />
+ android:text="@string/update_walt_firmware" />
<TextView
style="@style/MenuTextBottom"
- android:text="Please press the button on the Teensy first" />
+ android:text="@string/please_press_the_button_on_the_teensy_first" />
</LinearLayout>
diff --git a/android/WALT/app/src/main/res/layout/fragment_drag_latency.xml b/android/WALT/app/src/main/res/layout/fragment_drag_latency.xml
index f9b65d0..a5e36c6 100644
--- a/android/WALT/app/src/main/res/layout/fragment_drag_latency.xml
+++ b/android/WALT/app/src/main/res/layout/fragment_drag_latency.xml
@@ -1,4 +1,5 @@
<FrameLayout 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"
@@ -19,21 +20,24 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tint="@color/button_tint"
- android:src="@drawable/ic_refresh_black_24dp" />
+ app:srcCompat="@drawable/ic_refresh_black_24dp"
+ android:contentDescription="@string/restart" />
<ImageButton
android:id="@+id/button_start_drag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tint="@color/button_tint"
- android:src="@drawable/ic_play_arrow_black_24dp" />
+ app:srcCompat="@drawable/ic_play_arrow_black_24dp"
+ android:contentDescription="@string/start" />
<ImageButton
android:id="@+id/button_finish_drag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tint="@color/button_tint"
- android:src="@drawable/ic_check_black_24dp" />
+ app:srcCompat="@drawable/ic_check_black_24dp"
+ android:contentDescription="@string/finish" />
</LinearLayout>
<FrameLayout
@@ -49,7 +53,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
- android:gravity="right"
+ android:gravity="end"
android:orientation="horizontal">
<TextView
@@ -92,11 +96,11 @@
android:id="@+id/button_close_chart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
+ android:layout_alignEnd="@id/latency_chart"
+ android:layout_alignTop="@id/latency_chart"
android:tint="@color/button_tint"
android:layout_margin="5dp"
- android:text="Close" />
+ android:text="@string/close" />
</RelativeLayout>
<TextView
diff --git a/android/WALT/app/src/main/res/layout/fragment_front_page.xml b/android/WALT/app/src/main/res/layout/fragment_front_page.xml
index c4fba96..43ef542 100644
--- a/android/WALT/app/src/main/res/layout/fragment_front_page.xml
+++ b/android/WALT/app/src/main/res/layout/fragment_front_page.xml
@@ -1,4 +1,5 @@
<ScrollView 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="fill_parent"
android:layout_height="fill_parent"
@@ -16,7 +17,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_search_black_24dp" />
+ app:srcCompat="@drawable/ic_search_black_24dp"
+ android:contentDescription="@string/diagnostics" />
<LinearLayout
android:layout_width="match_parent"
@@ -26,11 +28,11 @@
<TextView
style="@style/MenuTextTop"
- android:text="Diagnostics" />
+ android:text="@string/diagnostics" />
<TextView
style="@style/MenuTextBottom"
- android:text="TBD: Connection/sync status"
+ android:text="@string/tbd_connection_sync_status"
android:visibility="gone" />
@@ -47,7 +49,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_radio_button_checked_black_24dp" />
+ app:srcCompat="@drawable/ic_radio_button_checked_black_24dp"
+ android:contentDescription="@string/tap_latency" />
<LinearLayout
android:layout_width="match_parent"
@@ -57,7 +60,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="Tap latency" />
+ android:text="@string/tap_latency" />
</LinearLayout>
</LinearLayout>
@@ -72,7 +75,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_swap_vert_black_24dp" />
+ app:srcCompat="@drawable/ic_swap_vert_black_24dp"
+ android:contentDescription="@string/drag_latency" />
<LinearLayout
android:layout_width="match_parent"
@@ -82,7 +86,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="Drag latency" />
+ android:text="@string/drag_latency" />
</LinearLayout>
</LinearLayout>
@@ -97,7 +101,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_brightness_medium_black_24dp" />
+ app:srcCompat="@drawable/ic_brightness_medium_black_24dp"
+ android:contentDescription="@string/screen_response" />
<LinearLayout
android:layout_width="match_parent"
@@ -107,7 +112,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="Screen response" />
+ android:text="@string/screen_response" />
</LinearLayout>
</LinearLayout>
@@ -122,7 +127,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_volume_up_black_24dp" />
+ app:srcCompat="@drawable/ic_volume_up_black_24dp"
+ android:contentDescription="@string/audio_latency" />
<LinearLayout
android:layout_width="match_parent"
@@ -132,7 +138,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="Audio latency" />
+ android:text="@string/audio_latency" />
</LinearLayout>
</LinearLayout>
@@ -149,7 +155,8 @@
android:id="@+id/midi_image"
style="@style/MenuIconStyle"
android:tint="@color/ColorDisabled"
- android:src="@drawable/ic_music_note_black_24dp" />
+ app:srcCompat="@drawable/ic_music_note_black_24dp"
+ android:contentDescription="@string/midi_latency" />
<LinearLayout
android:layout_width="match_parent"
@@ -161,7 +168,7 @@
android:id="@+id/midi_text"
style="@style/MenuTextTop"
android:textColor="@color/ColorDisabled"
- android:text="MIDI latency" />
+ android:text="@string/midi_latency" />
</LinearLayout>
</LinearLayout>
@@ -176,7 +183,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_receipt_black_24dp" />
+ app:srcCompat="@drawable/ic_receipt_black_24dp"
+ android:contentDescription="@string/view_log" />
<LinearLayout
android:layout_width="match_parent"
@@ -186,7 +194,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="View log" />
+ android:text="@string/view_log" />
</LinearLayout>
</LinearLayout>
@@ -201,7 +209,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_swap_horiz_black_24dp" />
+ app:srcCompat="@drawable/ic_swap_horiz_black_24dp"
+ android:contentDescription="@string/accelerometer_latency" />
<LinearLayout
android:layout_width="match_parent"
@@ -211,7 +220,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="Accelerometer latency" />
+ android:text="@string/accelerometer_latency" />
</LinearLayout>
</LinearLayout>
@@ -226,7 +235,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_settings_black_24dp" />
+ app:srcCompat="@drawable/ic_settings_black_24dp"
+ android:contentDescription="@string/settings" />
<LinearLayout
android:layout_width="match_parent"
@@ -236,7 +246,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="Settings" />
+ android:text="@string/settings" />
</LinearLayout>
@@ -252,7 +262,8 @@
<ImageView
style="@style/MenuIconStyle"
- android:src="@drawable/ic_help_outline_black_24dp" />
+ app:srcCompat="@drawable/ic_help_outline_black_24dp"
+ android:contentDescription="@string/about" />
<LinearLayout
android:layout_width="match_parent"
@@ -262,7 +273,7 @@
<TextView
style="@style/MenuTextTop"
- android:text="About" />
+ android:text="@string/about" />
</LinearLayout>
</LinearLayout>
diff --git a/android/WALT/app/src/main/res/layout/fragment_midi.xml b/android/WALT/app/src/main/res/layout/fragment_midi.xml
index 70f9be5..fba287f 100644
--- a/android/WALT/app/src/main/res/layout/fragment_midi.xml
+++ b/android/WALT/app/src/main/res/layout/fragment_midi.xml
@@ -21,7 +21,8 @@
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:tint="@color/button_tint"
- android:src="@drawable/ic_input_black_24dp" />
+ walt:srcCompat="@drawable/ic_input_black_24dp"
+ android:contentDescription="@string/start_midi_in" />
<ImageButton
android:id="@+id/button_start_midi_out"
@@ -29,7 +30,8 @@
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:tint="@color/button_tint"
- android:src="@drawable/ic_output_black_24dp" />
+ walt:srcCompat="@drawable/ic_output_black_24dp"
+ android:contentDescription="@string/start_midi_out" />
</RelativeLayout>
<org.chromium.latency.walt.HistogramChart
diff --git a/android/WALT/app/src/main/res/layout/fragment_screen_response.xml b/android/WALT/app/src/main/res/layout/fragment_screen_response.xml
index b789579..fc7c107 100644
--- a/android/WALT/app/src/main/res/layout/fragment_screen_response.xml
+++ b/android/WALT/app/src/main/res/layout/fragment_screen_response.xml
@@ -20,24 +20,26 @@
android:id="@+id/button_stop_screen_response"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
android:tint="@color/button_tint"
- android:src="@drawable/ic_stop_black_24dp" />
+ walt:srcCompat="@drawable/ic_stop_black_24dp"
+ android:contentDescription="@string/stop" />
<ImageButton
android:id="@+id/button_start_screen_response"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
android:tint="@color/button_tint"
- android:src="@drawable/ic_play_arrow_black_24dp" />
+ walt:srcCompat="@drawable/ic_play_arrow_black_24dp"
+ android:contentDescription="@string/start" />
<Spinner
android:id="@+id/spinner_screen_response"
android:layout_height="45dp"
android:layout_width="fill_parent"
- android:layout_toRightOf="@id/button_stop_screen_response"
- android:layout_toLeftOf="@id/button_start_screen_response"
+ android:layout_toEndOf="@id/button_stop_screen_response"
+ android:layout_toStartOf="@id/button_start_screen_response"
android:prompt="@string/screen_response_mode"/>
</RelativeLayout>
diff --git a/android/WALT/app/src/main/res/layout/fragment_tap_latency.xml b/android/WALT/app/src/main/res/layout/fragment_tap_latency.xml
index 2c701d2..28f4327 100644
--- a/android/WALT/app/src/main/res/layout/fragment_tap_latency.xml
+++ b/android/WALT/app/src/main/res/layout/fragment_tap_latency.xml
@@ -18,17 +18,19 @@
android:id="@+id/button_finish_tap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
android:tint="@color/button_tint"
- android:src="@drawable/ic_check_black_24dp" />
+ walt:srcCompat="@drawable/ic_check_black_24dp"
+ android:contentDescription="@string/finish" />
<ImageButton
android:id="@+id/button_restart_tap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
android:tint="@color/button_tint"
- android:src="@drawable/ic_play_arrow_black_24dp" />
+ walt:srcCompat="@drawable/ic_play_arrow_black_24dp"
+ android:contentDescription="@string/restart" />
</RelativeLayout>
<FrameLayout
@@ -44,7 +46,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
- android:gravity="right"
+ android:gravity="end"
android:orientation="horizontal">
<TextView
diff --git a/android/WALT/app/src/main/res/layout/histogram.xml b/android/WALT/app/src/main/res/layout/histogram.xml
index ca6dc1e..bdbda12 100644
--- a/android/WALT/app/src/main/res/layout/histogram.xml
+++ b/android/WALT/app/src/main/res/layout/histogram.xml
@@ -15,9 +15,9 @@
android:id="@+id/button_close_bar_chart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
+ android:layout_alignTop="@id/bar_chart"
+ android:layout_alignEnd="@id/bar_chart"
android:tint="@color/button_tint"
android:layout_margin="5dp"
- android:text="Close" />
+ android:text="@string/close" />
</RelativeLayout>
diff --git a/android/WALT/app/src/main/res/layout/line_chart.xml b/android/WALT/app/src/main/res/layout/line_chart.xml
index 7de4cfb..a846a13 100644
--- a/android/WALT/app/src/main/res/layout/line_chart.xml
+++ b/android/WALT/app/src/main/res/layout/line_chart.xml
@@ -15,9 +15,9 @@
android:id="@+id/button_close_chart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
+ android:layout_alignTop="@id/chart"
+ android:layout_alignEnd="@id/chart"
android:tint="@color/button_tint"
android:layout_margin="5dp"
- android:text="Close" />
+ android:text="@string/close" />
</RelativeLayout>
diff --git a/android/WALT/app/src/main/res/layout/toolbar.xml b/android/WALT/app/src/main/res/layout/toolbar.xml
index d02028d..c932cdb 100644
--- a/android/WALT/app/src/main/res/layout/toolbar.xml
+++ b/android/WALT/app/src/main/res/layout/toolbar.xml
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/ColorPrimary"
android:elevation="4dp">
-</android.support.v7.widget.Toolbar> \ No newline at end of file
+</androidx.appcompat.widget.Toolbar> \ No newline at end of file
diff --git a/android/WALT/app/src/main/res/menu/menu_main.xml b/android/WALT/app/src/main/res/menu/menu_main.xml
index 6333e6d..e34957b 100644
--- a/android/WALT/app/src/main/res/menu/menu_main.xml
+++ b/android/WALT/app/src/main/res/menu/menu_main.xml
@@ -7,21 +7,21 @@
<item
android:id="@+id/action_upload"
android:orderInCategory="180"
- android:title="Upload"
+ android:title="@string/upload"
android:icon="@drawable/ic_file_upload_black_24dp"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_share"
android:orderInCategory="190"
- android:title="Share"
+ android:title="@string/share"
android:icon="@drawable/ic_share_black_24dp"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_help"
android:orderInCategory="200"
- android:title="Help"
+ android:title="@string/help"
android:icon="@drawable/ic_help_outline_black_24dp"
app:showAsAction="ifRoom" />
diff --git a/android/WALT/app/src/main/res/values/dimens.xml b/android/WALT/app/src/main/res/values/dimens.xml
index 47c8224..5ee798a 100644
--- a/android/WALT/app/src/main/res/values/dimens.xml
+++ b/android/WALT/app/src/main/res/values/dimens.xml
@@ -1,5 +1,4 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
- <dimen name="activity_vertical_margin">16dp</dimen>
</resources>
diff --git a/android/WALT/app/src/main/res/values/strings.xml b/android/WALT/app/src/main/res/values/strings.xml
index 7204eaa..bc83273 100644
--- a/android/WALT/app/src/main/res/values/strings.xml
+++ b/android/WALT/app/src/main/res/values/strings.xml
@@ -1,7 +1,6 @@
<resources>
<string name="app_name">WALT</string>
- <string name="action_settings">Settings</string>
<string name="title_activity_crash_log">Crash Log</string>
<string name="protocol_version_mismatch">WALT reports protocol version %1$s, which is not
supported. Please program WALT to a firmware with protocol version %2$s. To do this
@@ -16,6 +15,7 @@
<string name="disclaimer">DISCLAIMER: This is not an official Google product.</string>
<string name="more_info">A WALT device is required to run the latency tests. For more information, visit github.com/google/walt</string>
<string name="privacy_policy">Privacy policy:\ngithub.com/google/walt/blob/master/docs/PrivacyPolicy.md</string>
+ <string name="hint_url">Enter URL</string>
<string name="preference_screen_blinks" translatable="false">pref_screen_blinks</string>
<string name="preference_audio_in_reps" translatable="false">pref_audio_in_reps</string>
<string name="preference_audio_in_threshold" translatable="false">pref_audio_in_threshold</string>
@@ -29,6 +29,36 @@
<string name="preference_screen_fullscreen">pref_screen_fullscreen</string>
<string name="preference_log_url">pref_log_url</string>
<string name="preference_auto_upload_log">pref_auto_upload_log</string>
+ <string name="start">Start</string>
+ <string name="close">Close</string>
+ <string name="reconnect">Reconnect</string>
+ <string name="tbd_conn_status">TBD: Conn status</string>
+ <string name="tap_latency">Tap latency</string>
+ <string name="drag_latency">Drag latency</string>
+ <string name="screen_response">Screen response</string>
+ <string name="audio_latency">Audio latency</string>
+ <string name="midi_latency">MIDI latency</string>
+ <string name="view_log">View log</string>
+ <string name="accelerometer_latency">Accelerometer latency</string>
+ <string name="settings">Settings</string>
+ <string name="about">About</string>
+ <string name="diagnostics">Diagnostics</string>
+ <string name="tbd_connection_sync_status">TBD: Connection/sync status</string>
+ <string name="ping">Ping</string>
+ <string name="ping_over_usb_with_1_byte">Ping over USB with 1 byte</string>
+ <string name="re_sync_clocks">Re-sync clocks</string>
+ <string name="check_clock_drift">Check clock drift</string>
+ <string name="check_how_much_clocks_diverged">Check how much clocks diverged</string>
+ <string name="update_walt_firmware">Update WALT Firmware</string>
+ <string name="please_press_the_button_on_the_teensy_first">Please press the button on the Teensy first</string>
+ <string name="finish">Finish</string>
+ <string name="restart">Restart</string>
+ <string name="stop">Stop</string>
+ <string name="start_midi_in">Start MIDI in</string>
+ <string name="start_midi_out">Start MIDI out</string>
+ <string name="upload">Upload</string>
+ <string name="share">Share</string>
+ <string name="help">Help</string>
<string-array name="audio_mode_array">
<item>Continuous Playback Latency</item>
<item>Continuous Recording Latency</item>
diff --git a/android/WALT/app/src/main/res/values/styles.xml b/android/WALT/app/src/main/res/values/styles.xml
index 02095e7..05e7a67 100644
--- a/android/WALT/app/src/main/res/values/styles.xml
+++ b/android/WALT/app/src/main/res/values/styles.xml
@@ -6,7 +6,6 @@
<item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
<item name="colorAccent">@color/ColorAccent</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
- <item name="android:imageButtonStyle">@style/ImageButtonStyle</item>
<item name="imageButtonStyle">@style/ImageButtonStyle</item>
<!-- the homeAsUpIndicator doesn't work with either png or xml icons -->
<!--<item name="android:homeAsUpIndicator">@drawable/ic_chevron_left_black_24dp</item> -->
@@ -16,7 +15,7 @@
<style name="MenuDivider">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item>
- <item name="android:background">?android:attr/listDivider</item>
+ <item name="background">?android:attr/listDivider</item>
<item name="android:layout_marginLeft">72dp</item>
</style>
diff --git a/android/WALT/app/src/main/res/xml/backup_rules.xml b/android/WALT/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..0e782d2
--- /dev/null
+++ b/android/WALT/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<full-backup-content>
+ <include domain="root" />
+</full-backup-content> \ No newline at end of file
diff --git a/android/WALT/app/src/main/res/xml/preferences.xml b/android/WALT/app/src/main/res/xml/preferences.xml
index 612c089..58a64f6 100644
--- a/android/WALT/app/src/main/res/xml/preferences.xml
+++ b/android/WALT/app/src/main/res/xml/preferences.xml
@@ -1,7 +1,7 @@
-<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:walt="http://schemas.android.com/apk/res-auto">
- <android.support.v7.preference.PreferenceScreen
+ <androidx.preference.PreferenceScreen
android:key="pref_general_screen"
android:persistent="false"
android:title="General">
@@ -28,9 +28,9 @@
</PreferenceCategory>
- </android.support.v7.preference.PreferenceScreen>
+ </androidx.preference.PreferenceScreen>
- <android.support.v7.preference.PreferenceScreen
+ <androidx.preference.PreferenceScreen
android:key="pref_tap_screen"
android:persistent="false"
android:title="Tap latency">
@@ -40,9 +40,9 @@
android:title="Show live histogram for tap test"
android:defaultValue="true" />
- </android.support.v7.preference.PreferenceScreen>
+ </androidx.preference.PreferenceScreen>
- <android.support.v7.preference.PreferenceScreen
+ <androidx.preference.PreferenceScreen
android:key="pref_screen_response_screen"
android:persistent="false"
android:title="Screen response">
@@ -71,9 +71,9 @@
android:title="Test in fullscreen mode"
android:defaultValue="true" />
- </android.support.v7.preference.PreferenceScreen>
+ </androidx.preference.PreferenceScreen>
- <android.support.v7.preference.PreferenceScreen
+ <androidx.preference.PreferenceScreen
android:key="pref_audio_screen"
android:persistent="false"
android:title="Audio">
@@ -105,9 +105,9 @@
walt:maxValue="100000"
walt:minValue="1" />
- </android.support.v7.preference.PreferenceScreen>
+ </androidx.preference.PreferenceScreen>
- <android.support.v7.preference.PreferenceScreen
+ <androidx.preference.PreferenceScreen
android:key="pref_midi_screen"
android:persistent="false"
android:title="MIDI">
@@ -130,6 +130,6 @@
walt:maxValue="1000"
walt:minValue="1" />
- </android.support.v7.preference.PreferenceScreen>
+ </androidx.preference.PreferenceScreen>
-</android.support.v7.preference.PreferenceScreen>
+</androidx.preference.PreferenceScreen>
diff --git a/android/WALT/app/src/test/java/org/chromium/latency/walt/AccelerometerFragmentTest.java b/android/WALT/app/src/test/java/org/chromium/latency/walt/AccelerometerFragmentTest.java
index b29ace8..7a70426 100644
--- a/android/WALT/app/src/test/java/org/chromium/latency/walt/AccelerometerFragmentTest.java
+++ b/android/WALT/app/src/test/java/org/chromium/latency/walt/AccelerometerFragmentTest.java
@@ -24,7 +24,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
-import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertEquals;
public class AccelerometerFragmentTest {
diff --git a/android/WALT/app/src/test/java/org/chromium/latency/walt/HistogramChartTest.java b/android/WALT/app/src/test/java/org/chromium/latency/walt/HistogramChartTest.java
index 8365719..c43eca1 100644
--- a/android/WALT/app/src/test/java/org/chromium/latency/walt/HistogramChartTest.java
+++ b/android/WALT/app/src/test/java/org/chromium/latency/walt/HistogramChartTest.java
@@ -29,7 +29,7 @@ import org.powermock.modules.junit4.PowerMockRunner;
import java.util.ArrayList;
-import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
diff --git a/android/WALT/app/src/test/java/org/chromium/latency/walt/TraceLoggerTest.java b/android/WALT/app/src/test/java/org/chromium/latency/walt/TraceLoggerTest.java
index ed617cb..f3a3c0d 100644
--- a/android/WALT/app/src/test/java/org/chromium/latency/walt/TraceLoggerTest.java
+++ b/android/WALT/app/src/test/java/org/chromium/latency/walt/TraceLoggerTest.java
@@ -21,7 +21,7 @@ import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
-import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
diff --git a/android/WALT/app/src/test/java/org/chromium/latency/walt/UtilsTest.java b/android/WALT/app/src/test/java/org/chromium/latency/walt/UtilsTest.java
index 86513f4..33d8454 100644
--- a/android/WALT/app/src/test/java/org/chromium/latency/walt/UtilsTest.java
+++ b/android/WALT/app/src/test/java/org/chromium/latency/walt/UtilsTest.java
@@ -25,9 +25,9 @@ import java.util.List;
import java.util.Random;
import static java.lang.Double.NaN;
-import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertEquals;
import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
public class UtilsTest {
diff --git a/android/WALT/gradle.properties b/android/WALT/gradle.properties
index 1d3591c..915f0e6 100644
--- a/android/WALT/gradle.properties
+++ b/android/WALT/gradle.properties
@@ -15,4 +15,6 @@
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true \ No newline at end of file
+# org.gradle.parallel=true
+android.enableJetifier=true
+android.useAndroidX=true \ No newline at end of file
diff --git a/pywalt/pywalt/walt.py b/pywalt/pywalt/walt.py
index 9987f4f..82536fd 100644
--- a/pywalt/pywalt/walt.py
+++ b/pywalt/pywalt/walt.py
@@ -674,7 +674,7 @@ class TcpServer:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
sock.bind((self.host, self.port))
- sock.listen(1)
+ sock.listen(10)
while True:
print('Listening on port %d' % self.port)
net, addr = sock.accept()