remote/apps/android-viewer
郑博文 5047618c01 feat(android): 触摸映射 + letterbox 显示(阶段 2a 代码部分)
问题:阶段 1 的 SurfaceView 用 MATCH_PARENT,2560x1440 的视频被拉进
1080x2400 竖屏,画面变形。变形状态下手指位置与远端指针不再一一对应,
触摸映射无从谈起。所以两者必须一起做。

新增 RemoteSurfaceView
- onMeasure 按视频宽高比 letterbox:视图尺寸 = 画面尺寸,黑边不属于视图,
  触摸天然只在画面内产生事件,坐标归一化到 0..=65535 才准确
- 手势:单指轻点=左键、单指拖动=左键拖拽、双指轻点=右键、双指滑动=滚轮
- 刻意不做「手指即光标」的绝对跟随:手指会完全挡住目标,精细操作不可用
- 边界处理:进入拖拽后落下第二指,先抬起左键再切双指手势,
  否则远端会留下一个被按住未释放的按键

协议侧(不改线格式,只加只读查询)
- viewer-core::Session 记录 AuthOk 的桌面尺寸,新增 desktop_size()
- android-ffi 新增 nativeDesktopSize(handle) -> i64(高32=宽,低32=高)
- RustBridge.desktopSize() 拆包
- 尺寸必须在建解码器之前拿到:等首帧再改视图尺寸会触发重新测量,
  把刚创建的解码器 surface 打掉

MainActivity
- 接入 RemoteSurfaceView.Listener;连接成功后先取尺寸设宽高比,再起解码线程
- 返回键 = 断开(不退出 App,便于重连);去掉阶段 1 的双击断开
  (双击现在语义上是「两次左键点击」,会和远端交互冲突)

验证:cargo build --workspace 通过;cargo test 全绿(common 20 + viewer-core 3)。
真机手势验收待手机重新连接后补。
2026-10-30 09:51:38 +08:00
..
app feat(android): 触摸映射 + letterbox 显示(阶段 2a 代码部分) 2026-10-30 09:51:38 +08:00
.gitignore feat(android): 阶段 1 安卓主控 App 工程(已真机验收出画面) 2026-10-29 19:59:43 +08:00
build-android.ps1 feat(android): 阶段 1 安卓主控 App 工程(已真机验收出画面) 2026-10-29 19:59:43 +08:00
build.gradle.kts feat(android): 阶段 1 安卓主控 App 工程(已真机验收出画面) 2026-10-29 19:59:43 +08:00
gradle.properties feat(android): 阶段 1 安卓主控 App 工程(已真机验收出画面) 2026-10-29 19:59:43 +08:00
settings.gradle.kts feat(android): 阶段 1 安卓主控 App 工程(已真机验收出画面) 2026-10-29 19:59:43 +08:00