diff options
| author | Lena <lena@omega> | 2026-01-01 00:00:00 +0000 |
|---|---|---|
| committer | Lena <lena@omega> | 2026-06-24 22:14:50 +0300 |
| commit | eb0c8951196c637e44daf3c0617b131b997d5d2c (patch) | |
| tree | 2f83b6a41cee745467e53fc401942b82cea286ea /app/src/debug/res/layout/mirror.xml | |
| download | scrcpy-android-eb0c8951196c637e44daf3c0617b131b997d5d2c.tar.gz | |
scrcpy-android: mirror an Android device over wireless ADB0.1
Native Java app for Android 12+ that mirrors another Android
device over wireless ADB, forwarding video, audio, touch input,
and clipboard. Bundles a pinned scrcpy-server.jar and the
vendored libadb-android stack. Supports h264/h265/av1 video and
raw/opus audio with in-app codec selection. No NDK, no Kotlin.
Includes JVM unit tests and a Docker-based emulator e2e rig.
Diffstat (limited to 'app/src/debug/res/layout/mirror.xml')
| -rw-r--r-- | app/src/debug/res/layout/mirror.xml | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/app/src/debug/res/layout/mirror.xml b/app/src/debug/res/layout/mirror.xml new file mode 100644 index 0000000..5d0e845 --- /dev/null +++ b/app/src/debug/res/layout/mirror.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Debug Mirror layout: TextureView, the same top status bar as + production, plus a bottom-left stats overlay that screencap can + capture (target host, video/audio/texture-update counts, last + forwarded event). The TextureView path is used because emulators + don't composite SurfaceView's hardware layer into screencap. --> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="#000000"> + + <TextureView + android:id="@+id/surface" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center"/> + + <LinearLayout + android:id="@+id/status_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="top" + android:orientation="horizontal" + android:gravity="center_vertical" + android:padding="8dp" + android:background="#a0000000"> + + <TextView + android:id="@+id/status_text" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:textColor="#ffffff" + android:textSize="14sp" + android:fontFamily="monospace" + android:singleLine="true" + android:ellipsize="end" + android:text="@string/connecting"/> + + <Button + android:id="@+id/record" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:text="@string/record"/> + + <Button + android:id="@+id/reconnect" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/reconnect" + android:visibility="gone"/> + + </LinearLayout> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|start" + android:orientation="vertical" + android:padding="16dp" + android:background="#a0000000"> + + <TextView + android:id="@+id/overlay_target" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="#ffffff" + android:textSize="16sp" + android:fontFamily="monospace" + android:text="target: ..."/> + + <TextView + android:id="@+id/overlay_stats" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="#aef0a0" + android:textSize="16sp" + android:fontFamily="monospace" + android:text="v=0 a=0"/> + + <TextView + android:id="@+id/overlay_event" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="#f0c060" + android:textSize="16sp" + android:fontFamily="monospace" + android:text="event: (idle)"/> + + </LinearLayout> + +</FrameLayout> |