问题:阶段 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)。 真机手势验收待手机重新连接后补。 |
||
|---|---|---|
| .. | ||
| app | ||
| .gitignore | ||
| build-android.ps1 | ||
| build.gradle.kts | ||
| gradle.properties | ||
| settings.gradle.kts | ||