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 è sempreTRUE
in Surface Duo. Si trattaTRUE
di alcuni altri dispositivi piegabili solo quando vengono piegati, maFALSE
quando sono flat.WindowManagerHelper.Orientation
. Orientamento della funzionalità di riduzione, se presente.HORIZONTAL
oVERTICAL
.WindowManagerHelper.OcclusionType
. Indica se la funzionalità di riduzione oscura il contenuto.FULL
oNONE
.WindowManagerHelper.State
. Stato della piega.FLAT
oHALF_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:
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.
In Unity passare a Modifica>Project Impostazioni...>Giocatore>(Android)>Pubblicazione Impostazioni e selezionare queste opzioni di compilazione:
Questo passaggio inserisce nuovi elementi nel pacchetto asset/plug-in/Android del progetto, che vengono quindi personalizzati per supportare il pacchetto di Window Manager.
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' }
Aggiornare il file gradleTemplate.properties aggiungendo la riga seguente:
android.useAndroidX = true
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"
Aggiungere la classe completa da FoldablePlayerActivity.java in GitHub.
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:
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.