Enable screenReaderMode in xtermjs if isTouchExplorationEnabled is true

Bug: 370371135
Test: enable talkback
Change-Id: Ie852445dff7ed24f14e16b94bbc602750a2752f6
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
index 0e2a7d1..83aed67 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
@@ -22,6 +22,7 @@
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.accessibility.AccessibilityManager;
 import android.webkit.WebChromeClient;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
@@ -34,8 +35,9 @@
 
 import com.google.android.material.appbar.MaterialToolbar;
 
-public class MainActivity extends AppCompatActivity implements
-        VmLauncherServices.VmLauncherServiceCallback {
+public class MainActivity extends AppCompatActivity
+        implements VmLauncherServices.VmLauncherServiceCallback,
+                AccessibilityManager.TouchExplorationStateChangeListener {
     private static final String TAG = "VmTerminalApp";
     private String mVmIpAddr;
     private WebView mWebView;
@@ -63,15 +65,31 @@
                         return true;
                     }
                 });
+
+        getSystemService(AccessibilityManager.class).addTouchExplorationStateChangeListener(this);
     }
 
     @Override
     protected void onDestroy() {
+        getSystemService(AccessibilityManager.class).removeTouchExplorationStateChangeListener(this);
         VmLauncherServices.stopVmLauncherService(this);
         super.onDestroy();
     }
 
-    private void gotoURL(String url) {
+    private void gotoTerminalURL() {
+        if (mVmIpAddr == null) {
+            Log.d(TAG, "ip addr is not set yet");
+            return;
+        }
+
+        boolean isTouchExplorationEnabled =
+                getSystemService(AccessibilityManager.class).isTouchExplorationEnabled();
+
+        String url =
+                "http://"
+                        + mVmIpAddr
+                        + ":7681/"
+                        + (isTouchExplorationEnabled ? "?screenReaderMode=true" : "");
         runOnUiThread(() -> mWebView.loadUrl(url));
     }
 
@@ -94,7 +112,7 @@
     public void onIpAddrAvailable(String ipAddr) {
         mVmIpAddr = ipAddr;
         ((TextView) findViewById(R.id.ip_addr_textview)).setText(mVmIpAddr);
-        gotoURL("http://" + mVmIpAddr + ":7681");
+        gotoTerminalURL();
     }
 
     @Override
@@ -122,4 +140,9 @@
         }
         return super.onOptionsItemSelected(item);
     }
+
+    @Override
+    public void onTouchExplorationStateChanged(boolean enabled) {
+        gotoTerminalURL();
+    }
 }