在将微信小游戏项目配置为landscape横屏模式后,安卓上无论锁屏与否,都能左右横屏切换。但wx.onDeviceOrientationChange收不到任何回调。
https://developers.weixin.qq.com/minigame/dev/reference/configuration/app.html
框架类型 | 问题类型 | API/组件名称 | 终端类型 | 微信版本 | 基础库版本 |
---|---|---|---|---|---|
小游戏 | Bug | wx.onDeviceOrientationChange | 微信安卓客户端 | 8.0.16 | 2.21.1 |
3 个回答
今天(2023/10/25) 还是有此Bug
Android 锁屏情况下还是能左右横屏切换。`wx.onDeviceOrientationChange`收不到任何回调。
wx.getSystemInfoAsync:
{ "screenWidth":780, "cpuType":"vendor Kirin980", "phoneCalendarAuthorized":true, "windowHeight":360, "bluetoothEnabled":true, "errMsg":"getSystemInfoAsync:ok", "language":"zh_CN", "microphoneAuthorized":true, "fontSizeScaleFactor":1, "locationAuthorized":true, "notificationAuthorized":true, "model":"SEA-AL10", "statusBarHeight":27, "safeArea":{ "width":753, "right":780, "top":0, "left":27, "bottom":360, "height":360 }, "brand":"HUAWEI", "windowWidth":780, "locationEnabled":true, "benchmarkLevel":24, "screenHeight":360, "abi":"arm64-v8a", "version":"8.0.42", "cameraAuthorized":true, "deviceAbi":"arm64-v8a", "system":"Android 10", "memorySize":7606, "fontSizeSetting":16, "pixelRatio":3, "deviceOrientation":"landscape", "wifiEnabled":false, "screenTop":0, "platform":"android", "SDKVersion":"3.1.4", "enableDebug":true, "devicePixelRatio":3, "host":{ "env":"WeChat", "version":671099473 }, "mode":"default" }
https://developers.weixin.qq.com/minigame/dev/reference/configuration/app.html
deviceOrientation 的合法值
portrait, 竖屏。不随用户手机的旋转而旋转。
landscape, home 键在屏幕右侧的横屏。当用户的手机没有锁定屏幕方向时,横屏的方向会随着手机的旋转而旋转。
landscapeLeft, home 键在屏幕左侧的横屏 微信客户端 7.0.0
landscapeRight, home 键在屏幕右侧的横屏 微信客户端 7.0.0
wx.onDeviceOrientationChange
https://developers.weixin.qq.com/minigame/dev/api/device/orientation/wx.onDeviceOrientationChange.html
https://github.com/wechat-miniprogram/minigame-demo/blob/master/miniprogram/game.json
官方“小游戏示例”配置的是portrait模式,按文档说明,它应该固定竖屏,不会横竖屏切换、也不会左右横屏切换。
(按文档,小游戏只有在配置为landscape模式时才能左右横屏切换,其它情况都是固定屏幕方向)
iOS实测官方“小游戏示例”,1:
1.确保系统未锁屏,微信未打开。
2.手机平放桌面,打开微信,打开官方“小游戏示例”,进入“设备\横竖屏切换”
3.拿起手机,尝试将手机转换到横屏姿态,屏幕上出现“触发成功”提示,但屏幕保持竖屏。
4.继续尝试横竖屏切换或左右横屏切换,不再出现“触发成功”提示。
5.手机平放桌面,从小程序菜单选择“重新进入小程序”,重复3、4,结果一样。
(修改“小游戏示例”源码,将提示内容换成wx.onDeviceOrientationChange的返回值,发现上述“触发成功”提示出现时返回的屏幕方向是portrait)
测试过程出现了1次“触发成功”提示,严格来讲算bug,但问题不大
iOS实测官方“小游戏示例”,2:
1.确保系统已锁屏,微信未打开。
2.手机平放桌面,打开微信,打开官方“小游戏示例”,进入“设备\横竖屏切换”
3.拿起手机,尝试横竖屏切换或左右横屏切换,无任何提示,屏幕保持竖屏。
表现正常,符合预期
iOS实测配置为landscape的横屏小游戏:
锁屏时不能左右横屏切换,无转屏事件。表现正常,符合预期
不锁屏时,能左右横屏切换,能收到转屏事件。但存在bug:
.点击屏幕右上角微信胶囊菜单中"⦿"按钮回到微信,然后在微信小程序列表中点击小游戏,这时返回小游戏后屏幕会保持原样,但却会收到1次portrait转屏事件;
.上面返回小游戏后,偶尔会出现没有portrait转屏事件, 也不再有任何转屏事件的情形
Android实测官方“小游戏示例”,1:
1.确保系统未锁屏,微信未打开。
2.手机平放桌面,打开微信,打开官方“小游戏示例”,进入“设备\横竖屏切换”
3.拿起手机,尝试横竖屏切换或左右横屏切换,无任何提示,屏幕保持竖屏。
表现正常,符合预期
Android实测官方“小游戏示例”,2:
1.确保系统已锁屏,微信未打开。
2.手机平放桌面,打开微信,打开官方“小游戏示例”,进入“设备\横竖屏切换”
3.拿起手机,尝试横竖屏切换或左右横屏切换,无任何提示,屏幕保持竖屏。
表现正常,符合预期
Android实测配置为landscape的横屏小游戏:
不锁屏时,能左右横屏切换,收不到转屏事件。(应该能收到转屏事件)
锁屏时,仍能左右横屏切换,无转屏事件。(不应该能左右横屏切换)
存在bug.
我这边是在ios上打开官方的《小游戏示例》小游戏,能正常触发,安卓无法触发