Come abilitare solo la modalità orizzontale in un’app UWP?

Ho già specificato in manifest come Landscape e LandscapeFlipped, so che questa è solo una preferenza e per di più ho aggiunto il codice seguente in App.xaml.cs OnLaunched. Tuttavia, se testato su un tablet, l’app torna in modalità verticale.

DisplayInformation.AutoRotationPreferences = DisplayOrientations.Landscape | DisplayOrientations.LandscapeFlipped; 

C’è anche un modo alternativo di testare questo in un simulatore invece di un tablet / dispositivo reale?

Grazie in anticipo.

Dal momento che il mio commento ti ha aiutato ad andare ad aggiungerlo come risposta

Riferimento

Soluzione

 [DllImport("user32.dll", EntryPoint = "#2507")] extern static bool SetAutoRotation(bool bEnable); SetAutoRotation(false); 

Innanzitutto una nota: il DisplayInformation.AutoRotationPreferences fornisce più o meno le stesse funzionalità della funzione SetDisplayAutoRotationPreferences di Win32, tranne per il fatto che DisplayInformation è per UWP e Win32 è per applicazioni Win32 (ad esempio con HWND). Non è ansible utilizzare l’API UWP per le app Win32 e viceversa.

L’API UWP è progettata per funzionare solo quando il dispositivo è in modalità Tablet su Windows 10. L’utente deve inoltre triggersre la rotazione automatica e il dispositivo deve disporre di un accelerometro. In generale, la tua app deve essere anche la finestra in primo piano affinché funzioni.

Ora che conosci tutti i requisiti dell’API (che sono soggetti a modifiche, tra l’altro – questa è una “preferenza” di orientamento dopotutto), non funziona ancora come previsto? L’intenzione è che l’utente abbia ancora il controllo dell’esperienza.

In alcuni casi, ho visto sviluppatori tentare di utilizzare questa API per dispositivi OEM personalizzati che eseguono una singola app in modalità kiosk per tutto il tempo. L’API è stata progettata per scenari di app normali, non per scenari kiosk. Se si dispone di uno scenario come questo, idealmente si può semplicemente descrivere la configurazione hardware che si vuole guidare (come un normale dispositivo OEM – ad es. Si scrive tabelle e firmware ACPI) e il sistema operativo utilizzerà l’orientamento corretto. Se stai semplicemente creando un dispositivo one-off, potresti prendere in considerazione l’impostazione della rotazione dello schermo utilizzando SetDisplayConfig da un’app Win32 all’avvio piuttosto che fare affidamento sulla rotazione automatica.

Hai utilizzato l’API corretta per forzare l’orientamento nell’app UWP, ma puoi fare riferimento all’enumerazione DisplayOrientations ufficiale, nella parte relativa alle osservazioni:

In genere le applicazioni utilizzano questa proprietà per tradurre la lettura di un accelerometro o per tradurre gli eventi del pulsante fisico in base alla rotazione dello schermo corrente.

Significa, questi funzionano ma solo se il dispositivo ha un accelerometro, sul computer portatile anche il simulatore, non hanno alcun effetto.

C’è anche un modo alternativo di testare questo in un simulatore invece di un tablet / dispositivo reale?

No, il simulatore non è adatto, puoi testarlo sull’emulatore Mobile o Mobile.