Jetpack Window Manager untuk Unity

Jetpack Window Manager tersedia sebagai paket yang dapat disertakan dalam proyek Unity Anda. Sesuaikan sistem build gradle dan terapkan kelas aktivitas dasar kustom, lalu tambahkan kelas pembantu C# yang memanggil Java API asli.

API yang dapat dilipat dan layar ganda

Kode WindowManagerHelper.cs menyediakan metode ini yang mengekspos informasi yang disediakan oleh Jetpack Window Manager:

  • WindowManagerHelper.GetCurrentWindowMetricsBounds. Batas (kiri, atas, lebar, tinggi) dari seluruh area yang ditempati aplikasi.
  • WindowManagerHelper.IsSeparating. Apakah fitur lipat memisahkan area layar. Ini selalu TRUE ada di Surface Duo. Ini ada TRUE di beberapa perangkat lain yang dapat dilipat hanya ketika dilipat tetapi FALSE ketika datar.
  • WindowManagerHelper.Orientation. Orientasi fitur lipatan, jika ada. HORIZONTAL atau VERTICAL.
  • WindowManagerHelper.OcclusionType. Apakah fitur lipat mengaburkan konten. FULL atau NONE.
  • WindowManagerHelper.State. Keadaan lipatan. FLAT atau HALF_OPEN.
  • WindowManagerHelper.Bounds. Batas (kiri, atas, lebar, tinggi) fitur lipatan, jika ada.

Berikut adalah cuplikan layar sampel demonstrasi API yang menunjukkan informasi perangkat dari paket Jetpack Window Manager:

Screenshot shows Jetpack Window Manager properties showing in the Unity sample app.

Menerapkan Jetpack Window Manager di Unity

Ikuti langkah-langkah ini untuk menyesuaikan konfigurasi build aplikasi Android Anda dan menerapkan Jetpack Window Manager. Anda juga dapat meninjau kode dalam sampel ini.

  1. Di Unity, buka Edit>Pengaturan Proyek...>Pemain>(Android)>Pengaturan Penerbitan dan pilih opsi Build ini:

    Screenshot shows the Publishing Settings Build options list.

    Langkah ini menempatkan item baru di Aset/Plugin/Android proyek, yang kemudian disesuaikan untuk mendukung paket Window Manager.

  2. Perbarui mainTemplate.gradle untuk menyertakan Jetpack Window Manager dalam proyek, dengan menambahkan dependensi berikut:

    dependencies {
        implementation "androidx.window:window:1.0.0"
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61"
        implementation 'androidx.appcompat:appcompat:1.2.0'
        implementation 'androidx.core:core-ktx:1.3.2'
    }
    
  3. Perbarui file gradleTemplate.properties dengan menambahkan baris berikut:

    android.useAndroidX = true    
    
  4. Aplikasi ini memerlukan aktivitas kustom untuk mengimplementasikan fungsionalitas manajer jendela dan mengekspos informasi ke C#. Buat file FoldablePlayerActivity.java di folder yang sama Aset/Plugin/Android, lalu perbarui AndroidManifest.xml untuk mereferensikan kelas baru:

    <activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
    
  5. Tambahkan kelas lengkap dari FoldablePlayerActivity.java di GitHub.

  6. Salin kelas pembantu WindowManagerHelper.cs dari GitHub ke dalam proyek. Folder ini adalah Aset/SurfaceDuo/Plugins dalam sampel.

Aset/Plugin/Android sekarang berisi item-item ini, disesuaikan pada langkah-langkah di atas:

Screenshot shows Customized Android project configuration files in Unity.

File WindowManagerHelper.cs ada di folder Aset/SurfaceDuo/Plugins dalam sampel, tetapi kelas pembantu ini dapat ditemukan di mana saja dalam kode game Anda.

Setelah menerapkan perubahan tata letak berdasarkan adanya fitur lipat, Anda dapat menguji game di Surface Duo dan perangkat lain yang dapat dilipat yang mendukung Jetpack Window Manager.

Langkah berikutnya

Tinjau sampel ini.