被控端:新增生成一次性配对码并弹窗展示,支持倒计时与复制;控制端:新增输入配对码兑换绑定,刷新设备列表,并在设备列表中显示在线状态和点击连接。同时添加统一 401 拦截器,令牌失效时触发重新激活。
244 lines
9.4 KiB
XML
244 lines
9.4 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||
xmlns:tools="http://schemas.android.com/tools"
|
||
tools:context=".activity.main.MainActivity">
|
||
|
||
<data>
|
||
|
||
</data>
|
||
|
||
<FrameLayout
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent">
|
||
|
||
<!-- 设置面板 -->
|
||
<LinearLayout
|
||
android:id="@+id/setup_panel"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:gravity="center_vertical"
|
||
android:orientation="vertical"
|
||
android:padding="24dp">
|
||
|
||
<!-- 本机信息 -->
|
||
<LinearLayout
|
||
android:layout_width="match_parent"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginBottom="8dp"
|
||
android:background="#EEEEEE"
|
||
android:orientation="vertical"
|
||
android:padding="12dp">
|
||
|
||
<TextView
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:text="本机信息"
|
||
android:textSize="14sp"
|
||
android:textStyle="bold" />
|
||
|
||
<TextView
|
||
android:id="@+id/tv_account_id"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="4dp"
|
||
android:text="用户ID: 加载中…"
|
||
android:textSize="14sp" />
|
||
|
||
<TextView
|
||
android:id="@+id/tv_account_name"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:text="用户名: -"
|
||
android:textSize="14sp" />
|
||
|
||
</LinearLayout>
|
||
|
||
<!-- 已绑定设备列表标题栏 -->
|
||
<LinearLayout
|
||
android:layout_width="match_parent"
|
||
android:layout_height="wrap_content"
|
||
android:orientation="horizontal"
|
||
android:gravity="center_vertical">
|
||
|
||
<TextView
|
||
android:layout_width="0dp"
|
||
android:layout_height="wrap_content"
|
||
android:layout_weight="1"
|
||
android:text="已绑定设备(点击连接)"
|
||
android:textSize="14sp" />
|
||
|
||
<Button
|
||
android:id="@+id/btn_refresh"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:text="@string/btn_refresh" />
|
||
|
||
</LinearLayout>
|
||
|
||
<ListView
|
||
android:id="@+id/list_devices"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="0dp"
|
||
android:layout_weight="1"
|
||
android:layout_marginTop="8dp" />
|
||
|
||
<TextView
|
||
android:id="@+id/tv_device_empty"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="0dp"
|
||
android:layout_weight="1"
|
||
android:gravity="center"
|
||
android:text="暂无已绑定设备,请点击「添加设备」"
|
||
android:textSize="14sp"
|
||
android:visibility="gone" />
|
||
|
||
<TextView
|
||
android:id="@+id/tv_status"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="8dp"
|
||
android:layout_marginBottom="12dp"
|
||
android:text="状态: 已停止"
|
||
android:textSize="16sp"
|
||
android:textStyle="bold" />
|
||
|
||
<Button
|
||
android:id="@+id/btn_add_device"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginBottom="8dp"
|
||
android:text="@string/btn_add_device" />
|
||
|
||
<Button
|
||
android:id="@+id/btn_disconnect"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="wrap_content"
|
||
android:enabled="false"
|
||
android:text="断开连接" />
|
||
|
||
</LinearLayout>
|
||
|
||
<!-- 控制面板(连接后显示) -->
|
||
<FrameLayout
|
||
android:id="@+id/control_panel"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:background="#000000"
|
||
android:visibility="gone">
|
||
|
||
<!-- 远端视频渲染 -->
|
||
<org.webrtc.SurfaceViewRenderer
|
||
android:id="@+id/remote_video_view"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:layout_gravity="center" />
|
||
|
||
<!-- 自编码(自建 MediaCodec)屏幕串流渲染层,默认隐藏,切到自编码模式时显示 -->
|
||
<SurfaceView
|
||
android:id="@+id/self_codec_surface"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:layout_gravity="center"
|
||
android:visibility="gone" />
|
||
|
||
|
||
<!-- 触摸控制层(覆盖在视频上方) -->
|
||
<com.ttstd.controller.view.RemoteTouchView
|
||
android:id="@+id/touch_overlay"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:layout_gravity="center"
|
||
android:background="@android:color/transparent" />
|
||
|
||
<!-- 顶部状态栏 -->
|
||
<LinearLayout
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_gravity="top|start"
|
||
android:background="#80000000"
|
||
android:orientation="vertical"
|
||
android:padding="8dp">
|
||
|
||
<TextView
|
||
android:id="@+id/tv_status_control"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:text="远程控制中"
|
||
android:textColor="@android:color/white"
|
||
android:textSize="14sp" />
|
||
|
||
<TextView
|
||
android:id="@+id/tv_stats"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:text="分辨率: - 帧率: - 延迟: -"
|
||
android:textColor="@android:color/white"
|
||
android:textSize="12sp" />
|
||
|
||
<Spinner
|
||
android:id="@+id/spinner_resolution"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="4dp"
|
||
android:backgroundTint="#80FFFFFF" />
|
||
|
||
<Spinner
|
||
android:id="@+id/spinner_fps"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="4dp"
|
||
android:backgroundTint="#80FFFFFF" />
|
||
|
||
<Button
|
||
android:id="@+id/btn_disconnect_control"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="8dp"
|
||
android:backgroundTint="#E53935"
|
||
android:text="断开连接"
|
||
android:textColor="@android:color/white" />
|
||
|
||
<Switch
|
||
android:id="@+id/switch_stream_mode"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="6dp"
|
||
android:text="自编码串流"
|
||
android:textColor="@android:color/white"
|
||
android:textSize="12sp" />
|
||
|
||
<TextView
|
||
android:id="@+id/tv_stream_mode"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="2dp"
|
||
android:text="串流: WebRTC"
|
||
android:textColor="@android:color/white"
|
||
android:textSize="12sp" />
|
||
|
||
<Switch
|
||
android:id="@+id/switch_record"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="6dp"
|
||
android:enabled="false"
|
||
android:text="录制屏幕"
|
||
android:textColor="@android:color/white"
|
||
android:textSize="12sp" />
|
||
|
||
<TextView
|
||
android:id="@+id/tv_record_status"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginTop="2dp"
|
||
android:text="未录制"
|
||
android:textColor="@android:color/white"
|
||
android:textSize="12sp" />
|
||
|
||
</LinearLayout>
|
||
|
||
</FrameLayout>
|
||
|
||
</FrameLayout>
|
||
</layout>
|