From 82459c708c3451424c1a9f0c7ce34a3b9da4595b Mon Sep 17 00:00:00 2001 From: lanterngamescn Date: Thu, 25 Jun 2026 08:38:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=AA=E5=B1=8F=E6=94=B9=E4=B8=BA=20auto=5Fr?= =?UTF-8?q?otation=5Flandscape=EF=BC=9A=E6=A8=AA=E5=B1=8F=E4=B8=A4?= =?UTF-8?q?=E6=9C=9D=E5=90=91=E8=B7=9F=E9=9A=8F=E4=BC=A0=E6=84=9F=E5=99=A8?= =?UTF-8?q?=E6=97=8B=E8=BD=AC=EF=BC=8C=E4=B8=8D=E8=BF=9B=E7=AB=96=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - module.json5:landscape → auto_rotation_landscape(横屏正/反向 180° 跟随重力 感应自动旋转,但不进入竖屏),build 校验取值合法、安装启动通过 - 同步契约 §7 与框架 §7.4:'不跟随传感器' 修正为 '横屏两朝向内跟随旋转' - H5 显式方向控制(含竖屏)仍由 setPreferredOrientation 保留,零改动不变 Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/设计文档/TSGame_HarmonyOS框架设计与开发指南.md | 4 ++-- docs/设计文档/TSGame_原生与H5接口契约总规范.md | 4 ++-- entry/src/main/module.json5 | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/设计文档/TSGame_HarmonyOS框架设计与开发指南.md b/docs/设计文档/TSGame_HarmonyOS框架设计与开发指南.md index f998063..26b24a6 100644 --- a/docs/设计文档/TSGame_HarmonyOS框架设计与开发指南.md +++ b/docs/设计文档/TSGame_HarmonyOS框架设计与开发指南.md @@ -543,13 +543,13 @@ H5 以 `file://` 加载并请求本地/远程资源。HarmonyOS 侧采用官方" 本项目为**横屏项目**:应用**默认横屏、不跟随设备传感器自动旋转**;同时**遵守 H5 零改动铁律**,完整保留 H5 经方向接口显式切换(含竖屏)的能力,与原 Android 一致(《契约规范》§7 屏幕方向约束 / §8.4 / §11)。落地方式: -- **默认横屏**:`EntryAbility` 在 `module.json5` 配 `"orientation": "landscape"`(启动即横屏、不随重力感应自动转竖屏)。 +- **横屏自动旋转**:`EntryAbility` 在 `module.json5` 配 `"orientation": "auto_rotation_landscape"`(在横屏两朝向间跟随重力传感器自动旋转,但不进入竖屏)。 - **H5 动态切换(保留竖屏能力)**:方向接口收到请求时用窗口 API **动态覆盖**,不写死锁定—— - `AppSystemProvider` 的 `orientation` handler:`data === '1'` → 横屏,否则 → 竖屏(对齐 Android `setRequestedOrientation`); - 子游戏 `SwitchOverGameData`:按 `webtype`(`"3"` 横 / `"2"` 竖)设方向后再 `loadUrl`; - `GenericWebContainer`:按打开参数 `orientation`(`"1"` 竖 / 其他 横)设方向。 - **实现 API**:运行时 `window.Window.setPreferredOrientation(orientation: window.Orientation)` 动态切换,`window.Orientation` 取 `LANDSCAPE` / `PORTRAIT`(编码前用 `devecocli docs` 核对签名)。 -- **要点**:`module.json5` 的 `landscape` 提供"默认横屏 + 禁传感器自动转",运行时 `setPreferredOrientation` 提供"H5 显式切换"——二者叠加既满足横屏项目定位,又守住 H5 零改动。 +- **要点**:`module.json5` 的 `auto_rotation_landscape` 提供"横屏内跟随传感器旋转(不进竖屏)",运行时 `setPreferredOrientation` 提供"H5 显式切换"——二者叠加既满足横屏项目定位,又守住 H5 零改动。 --- diff --git a/docs/设计文档/TSGame_原生与H5接口契约总规范.md b/docs/设计文档/TSGame_原生与H5接口契约总规范.md index d8cc3e2..3c069bd 100644 --- a/docs/设计文档/TSGame_原生与H5接口契约总规范.md +++ b/docs/设计文档/TSGame_原生与H5接口契约总规范.md @@ -430,9 +430,9 @@ gameconfig 值 = "tsgames.daoqi88.cn-config_test-update_jsonv2_test" | UserAgent | **未自定义**(用平台默认) | H5 不依赖特定 UA | | Cookie | 未特殊配置 | — | | 远程调试 | 启用(开发期) | — | -| 屏幕方向 | **默认横屏**,不跟随设备传感器自动旋转 | 横屏项目;H5 仍可经方向接口显式切换(见下) | +| 屏幕方向 | **横屏**,在横屏两朝向间跟随传感器自动旋转,不进入竖屏 | 横屏项目;H5 仍可经方向接口显式切换(见下) | -> **🔴 屏幕方向约束(横屏项目)**:本项目为**横屏项目**,应用**默认横屏、不跟随设备重力传感器自动旋转**。 +> **🔴 屏幕方向约束(横屏项目)**:本项目为**横屏项目**,应用**固定横屏**——在横屏的两个朝向(正向 / 反向 180°)之间**跟随设备重力传感器自动旋转**,但**不进入竖屏**(HarmonyOS `auto_rotation_landscape`)。 > 但**遵守 H5 零改动铁律**:H5 经方向接口发起的显式切换**行为完全不变**,与原 Android 一致—— > - `orientation` handler(§8.4):`"1"` → 横屏,**非 `"1"` → 竖屏**(原生仍真实切竖屏,对齐 Android `setRequestedOrientation`); > - 子游戏 `SwitchOverGameData` 的 `webtype`(§11.1):`"3"` 横屏 / `"2"` 竖屏; diff --git a/entry/src/main/module.json5 b/entry/src/main/module.json5 index 9ef6653..aea28b6 100644 --- a/entry/src/main/module.json5 +++ b/entry/src/main/module.json5 @@ -14,7 +14,7 @@ { "name": "EntryAbility", "srcEntry": "./ets/entryability/EntryAbility.ets", - "orientation": "landscape", + "orientation": "auto_rotation_landscape", "description": "$string:EntryAbility_desc", "icon": "$media:layered_image", "label": "$string:EntryAbility_label",