从 Unity 访问 Surface Duo 上的双屏信息

注意

新的 Unity 项目应将 Jetpack 窗口管理器 用于可折叠设备功能。 它适用于 Surface Duo、Surface Duo 2 和其他制造商的设备。

下面介绍的 Microsoft 双屏 SDK 仅适用于 Microsoft Surface Duo 设备。

Microsoft 双屏 SDK 作为包提供,可以包含在 Unity 项目中。 自定义 gradle 生成系统,然后添加调用本机 Java API 的 C# 帮助程序类。

适用于 Surface Duo 的 Microsoft 双屏 SDK

SurfaceDuoScreenHelper.cs 代码提供了公开 Microsoft SDK for Surface Duo 提供的信息的方法:

  • DeviceHelper.IsDualScreenDevice. 在访问其他双屏 API 之前调用此方法。
  • ScreenHelper.GetCurrentRotation. 获取当前旋转值。 值 0 表示 0 度,1 表示 90 度,2 表示 180 度,3 表示 270 度。
  • ScreenHelper.IsDualMode. 应用是否跨两个屏幕。 视区部分被屏幕之间的差距遮盖。
  • ScreenHelper.GetScreenRectangles. 以像素为单位返回两个屏幕的尺寸。
  • ScreenHelper.GetHinge. 以像素为单位返回视区遮挡区域的维度。 如果应用未跨越,则返回零维。 由于它仅在单个屏幕上显示,因此不会遮盖任何内容。

Unity ScreenHelper 示例中查看这些方法的示例代码。 该示例显示设备信息,如以下屏幕截图所示:

Screenshot shows a Unity game sample screen data.

在 Unity 中实现 Microsoft 双屏 SDK

此集成的示例在 Unity 示例存储库的 2019-LTS-archive 分支 上可用。

  1. 更新 mainTemplate.gradle ,以下载 Surface Duo Android SDK:

    maven {
        url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
    }
    

    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61"
        implementation "com.microsoft.device:dualscreen-layout:0.9.0"
    }
    
  2. 将脚本 SurfaceDuoScreenHelper.cs 复制到游戏项目中。

  3. 使用此页面中列出的双屏方法增强双屏设备的游戏。

后续步骤

查看 Surface Duo 的 Unity 游戏示例