收藏
回答

横屏切换时wx.onDeviceOrientationChange收不到转屏事件

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 Bug wx.onDeviceOrientationChange 微信安卓客户端 8.0.16 2.21.1

在将微信小游戏项目配置为landscape横屏模式后,安卓上无论锁屏与否,都能左右横屏切换。但wx.onDeviceOrientationChange收不到任何回调。

https://developers.weixin.qq.com/minigame/dev/reference/configuration/app.html

https://developers.weixin.qq.com/minigame/dev/api/device/orientation/wx.onDeviceOrientationChange.html

最后一次编辑于  2021-12-03
回答关注问题邀请回答
收藏

3 个回答

  • 2023-10-25

    今天(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"
    }
    
    2023-10-25
    有用
    回复
  • HM365X
    HM365X
    2021-12-03

    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.

    2021-12-03
    有用
    回复
  • Forever
    Forever
    2021-12-02

    我这边是在ios上打开官方的《小游戏示例》小游戏,能正常触发,安卓无法触发

    2021-12-02
    有用
    回复 4
    • HM365X
      HM365X
      2021-12-03
      已回复更新
      2021-12-03
      回复
    • Forever
      Forever
      2021-12-03回复HM365X
      相关开发人员说 portrait 下 如果能够正常触发的话这一个bug,因为ios只触发了一次后就无法触发第二次,我们后续进行修复,修复后的的真实效果是只有在 landscape 下才能旋转屏幕,即横屏->横屏(小游戏右上角的胶囊的位置会发生变化),无法竖屏->横屏,
      2021-12-03
      回复
    • HM365X
      HM365X
      2021-12-14回复Forever
      再次更新,找到一个iOS下的bug。
      2021-12-14
      回复
    • 大西瓜
      大西瓜
      2022-03-15
      目前ipad还有问题,当game.json设置landscape时仅可以触发一次deviceOrientation回调,当设置为portrait时可以触发多次
      2022-03-15
      回复
登录 后发表内容