diff options
author | Adrian Salido <salidoa@google.com> | 2018-12-05 17:19:57 -0800 |
---|---|---|
committer | Adrian Salido <salidoa@google.com> | 2018-12-05 17:19:57 -0800 |
commit | 7e84d33602bf8486df5db2fe1b3a2a50b3c8c428 (patch) | |
tree | deaf2cf6c7fd79515d198d0614370471f650eaef | |
parent | b53030f983b8f606a6fed7527605073613895f67 (diff) |
TouchLatency: add 60/90hz mode switch
Change-Id: I512579875530bd6c305310cd6ba50fcd0037e4d4
5 files changed, 60 insertions, 3 deletions
diff --git a/tests/TouchLatency/app/build.gradle b/tests/TouchLatency/app/build.gradle index 2594322e3727..04a878896f47 100644 --- a/tests/TouchLatency/app/build.gradle +++ b/tests/TouchLatency/app/build.gradle @@ -6,7 +6,7 @@ android { defaultConfig { applicationId "com.prefabulated.touchlatency" - minSdkVersion 21 + minSdkVersion 28 targetSdkVersion 28 versionCode 1 versionName "1.0" diff --git a/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java b/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java index 360c22f832b3..ba77a74974d1 100644 --- a/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java +++ b/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java @@ -24,11 +24,15 @@ import android.graphics.Paint.Align; import android.os.Bundle; import android.util.AttributeSet; import android.util.Log; +import android.view.Display; +import android.view.Display.Mode; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.os.Trace; +import android.view.Window; +import android.view.WindowManager; import java.math.RoundingMode; import java.text.DecimalFormat; @@ -219,14 +223,30 @@ class TouchLatencyView extends View implements View.OnTouchListener { } public class TouchLatencyActivity extends Activity { + private Mode mDisplayModes[]; + private int mCurrentModeIndex; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Trace.beginSection("TouchLatencyActivity onCreate"); setContentView(R.layout.activity_touch_latency); mTouchView = findViewById(R.id.canvasView); + + WindowManager wm = getWindowManager(); + Display display = wm.getDefaultDisplay(); + mDisplayModes = display.getSupportedModes(); + Mode currentMode = getWindowManager().getDefaultDisplay().getMode(); + + for (int i = 0; i < mDisplayModes.length; i++) { + if (currentMode.getModeId() == mDisplayModes[i].getModeId()) { + mCurrentModeIndex = i; + break; + } + } + Trace.endSection(); } @@ -236,10 +256,35 @@ public class TouchLatencyActivity extends Activity { Trace.beginSection("TouchLatencyActivity onCreateOptionsMenu"); // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_touch_latency, menu); + if (mDisplayModes.length > 1) { + MenuItem menuItem = menu.findItem(R.id.display_mode); + Mode currentMode = getWindowManager().getDefaultDisplay().getMode(); + updateDisplayMode(menuItem, currentMode); + } Trace.endSection(); return true; } + + private void updateDisplayMode(MenuItem menuItem, Mode displayMode) { + int fps = (int) displayMode.getRefreshRate(); + menuItem.setTitle(fps + "hz"); + menuItem.setVisible(true); + } + + public void changeDisplayMode(MenuItem item) { + Window w = getWindow(); + WindowManager.LayoutParams params = w.getAttributes(); + + int modeIndex = (mCurrentModeIndex + 1) % mDisplayModes.length; + params.preferredDisplayModeId = mDisplayModes[modeIndex].getModeId(); + w.setAttributes(params); + + updateDisplayMode(item, mDisplayModes[modeIndex]); + mCurrentModeIndex = modeIndex; + } + + @Override public boolean onOptionsItemSelected(MenuItem item) { Trace.beginSection("TouchLatencyActivity onOptionsItemSelected"); @@ -251,6 +296,8 @@ public class TouchLatencyActivity extends Activity { //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { mTouchView.changeMode(item); + } else if (id == R.id.display_mode) { + changeDisplayMode(item); } Trace.endSection(); diff --git a/tests/TouchLatency/app/src/main/res/layout/activity_touch_latency.xml b/tests/TouchLatency/app/src/main/res/layout/activity_touch_latency.xml index 8d20ff24bfe5..625757610154 100644 --- a/tests/TouchLatency/app/src/main/res/layout/activity_touch_latency.xml +++ b/tests/TouchLatency/app/src/main/res/layout/activity_touch_latency.xml @@ -18,6 +18,7 @@ android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" + android:keepScreenOn="true" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".TouchLatencyActivity"> <com.prefabulated.touchlatency.TouchLatencyView diff --git a/tests/TouchLatency/app/src/main/res/menu/menu_touch_latency.xml b/tests/TouchLatency/app/src/main/res/menu/menu_touch_latency.xml index 5aef72e8d383..52be91900ae8 100644 --- a/tests/TouchLatency/app/src/main/res/menu/menu_touch_latency.xml +++ b/tests/TouchLatency/app/src/main/res/menu/menu_touch_latency.xml @@ -15,6 +15,14 @@ --> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".TouchLatencyActivity"> - <item android:id="@+id/action_settings" android:title="@string/mode" - android:orderInCategory="100" android:showAsAction="always" /> + <item + android:id="@+id/action_settings" + android:orderInCategory="101" + android:showAsAction="always" + android:title="@string/mode"/> + <item + android:id="@+id/display_mode" + android:showAsAction="ifRoom" + android:title="@string/display_mode" + android:visible="false"/> </menu> diff --git a/tests/TouchLatency/app/src/main/res/values/strings.xml b/tests/TouchLatency/app/src/main/res/values/strings.xml index b97f095d501e..771992c8e5d3 100644 --- a/tests/TouchLatency/app/src/main/res/values/strings.xml +++ b/tests/TouchLatency/app/src/main/res/values/strings.xml @@ -17,4 +17,5 @@ <string name="app_name">Touch Latency</string> <string name="mode">Touch</string> + <string name="display_mode">Mode</string> </resources> |