Jetpack Window Manager per Unity

Jetpack Window Manager è disponibile come pacchetto che può essere incluso nel progetto Unity. Personalizzare il sistema di compilazione gradle e implementare una classe di attività di base personalizzata e quindi aggiungere una classe helper C# che chiama l'API Java nativa.

API a doppio schermo e piegabile

Il codice WindowManagerHelper.cs fornisce questi metodi che espongono informazioni fornite da Jetpack Window Manager:

  • WindowManagerHelper.GetCurrentWindowMetricsBounds. Limiti (sinistro, superiore, larghezza, altezza) dell'intera area occupata dall'applicazione.
  • WindowManagerHelper.IsSeparating. Se la funzionalità di riduzione separa le aree dello schermo. Questo è sempre TRUE in Surface Duo. Si tratta TRUE di alcuni altri dispositivi piegabili solo quando vengono piegati, ma FALSE quando sono flat.
  • WindowManagerHelper.Orientation. Orientamento della funzionalità di riduzione, se presente. HORIZONTAL o VERTICAL.
  • WindowManagerHelper.OcclusionType. Indica se la funzionalità di riduzione oscura il contenuto. FULL o NONE.
  • WindowManagerHelper.State. Stato della piega. FLAT o HALF_OPEN.
  • WindowManagerHelper.Bounds. Limiti (sinistro, superiore, larghezza, altezza) della funzionalità di riduzione, se presente.

Ecco uno screenshot dell'esempio dimostrativo dell'API che mostra le informazioni sul dispositivo dal pacchetto Jetpack Window Manager:

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

Implementare Jetpack Window Manager in Unity

Seguire questa procedura per personalizzare la configurazione di compilazione dell'app Android e implementare Jetpack Window Manager. È anche possibile esaminare il codice in questo esempio.

  1. In Unity passare a Modifica>Project Impostazioni...>Giocatore>(Android)>Pubblicazione Impostazioni e selezionare queste opzioni di compilazione:

    Screenshot shows the Publishing Settings Build options list.

    Questo passaggio inserisce nuovi elementi nel pacchetto asset/plug-in/Android del progetto, che vengono quindi personalizzati per supportare il pacchetto di Window Manager.

  2. Aggiornare mainTemplate.gradle per includere Jetpack Window Manager nel progetto aggiungendo le dipendenze seguenti:

    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. Aggiornare il file gradleTemplate.properties aggiungendo la riga seguente:

    android.useAndroidX = true    
    
  4. L'app richiede un'attività personalizzata per implementare la funzionalità di gestione finestre ed esporre le informazioni in C#. Creare un file FoldablePlayerActivity.java nella stessa cartella Asset/Plug-in/Android e quindi aggiornare AndroidManifest.xml per fare riferimento alla nuova classe:

    <activity android:name="com.microsoft.device.dualscreen.unity.FoldablePlayerActivity"
    
  5. Aggiungere la classe completa da FoldablePlayerActivity.java in GitHub.

  6. Copiare la classe helper WindowManagerHelper.cs da GitHub nel progetto. La cartella è Assets/SurfaceDuo/Plugins nell'esempio.

Gli asset/plug-in/Android ora contengono questi elementi, personalizzati nei passaggi precedenti:

Screenshot shows Customized Android project configuration files in Unity.

Il file WindowManagerHelper.cs si trova nella cartella Assets/SurfaceDuo/Plugins nell'esempio, ma questa classe helper può trovarsi ovunque nel codice del gioco.

Dopo aver implementato modifiche al layout in base alla presenza di una funzionalità di riduzione, è possibile testare il gioco su Surface Duo e altri dispositivi piegabili che supportano Jetpack Window Manager.

Passaggi successivi

Esaminare questi esempi.