Condividi tramite


Conversione di Silverlight per Windows Phone a UWP per I/O, dispositivo e modello di app

L'argomento precedente era porting di XAML e UI.

Il codice che si integra con il dispositivo stesso e i suoi sensori comporta un input dall'utente e un output verso l'utente. Può anche comportare l'elaborazione dei dati. Tuttavia, questo codice non è generalmente considerato come il livello dell'interfaccia utente o il livello dati. Questo codice include l'integrazione con il controller di vibrazione, l'accelerometro, il giroscopio, il microfono e l'altoparlante (che si intersecano con il riconoscimento vocale e la sintesi vocale), la posizione geografica e le modalità di input, ad esempio tocco, mouse, tastiera e penna.

Ciclo di vita dell'applicazione (gestione della durata dei processi)

L'app Silverlight per Windows Phone contiene codice per salvare e ripristinare lo stato dell'applicazione e il suo stato di visualizzazione per supportare l'essere sospesa temporaneamente e successivamente riattivata. Il ciclo di vita delle app UWP (Universal Windows Platform) ha forti paralleli con quello delle app di Silverlight per Windows Phone, poiché sono entrambe progettate con lo stesso obiettivo di massimizzare le risorse disponibili per qualsiasi app che l'utente abbia scelto di avere in primo piano in qualsiasi momento. Si vedrà che il codice si adatterà facilmente al nuovo sistema.

Nota Premere il pulsante Indietro dell'hardware termina automaticamente un'app di Silverlight per Windows Phone. Premendo l'hardware pulsante Indietro su un dispositivo mobile non terminare automaticamente un'app UWP. Al contrario, viene sospeso e quindi può essere terminato. Tuttavia, questi dettagli sono trasparenti per un'app che risponde in modo appropriato agli eventi del ciclo di vita dell'applicazione.

Una "finestra di debounce" è il periodo di tempo tra l'inattività dell'app e il momento in cui il sistema genera l'evento di sospensione. Per un'app UWP, non è presente alcuna finestra di debounce; l'evento di sospensione viene generato non appena un'app diventa inattiva.

Per altre informazioni, vedi Ciclo di vita dell'app.

Macchina fotografica

Il codice di acquisizione della fotocamera di Silverlight per Windows Phone usa la Microsoft.Devices.Camera, Microsoft.Devices.PhotoCamerao classi Microsoft.Phone.Tasks.CameraCaptureTask. Per convertire il codice nella piattaforma UWP (Universal Windows Platform), puoi usare la classe MediaCapture. Nell'argomento CapturePhotoToStorageFileAsync è disponibile un esempio di codice. Questo metodo consente di acquisire una foto in un file di archiviazione e richiede che le funzionalità del microfono e della webcam del dispositivo siano impostate nel manifest del pacchetto dell'app.

Un'altra opzione è la classe CameraCaptureUI, che richiede anche le capacità del dispositivo microfono e webcam .

Le app Lens non sono supportate per le app UWP.

Rilevamento della piattaforma in cui è in esecuzione l'app

Il modo di pensare alle modifiche di destinazione delle app con Windows 10. Il nuovo modello concettuale è che un'app è destinata alla piattaforma UWP (Universal Windows Platform) ed eseguita in tutti i dispositivi Windows. Può quindi scegliere di accendere le funzionalità esclusive di specifiche famiglie di dispositivi. Se necessario, l'app ha anche la possibilità di limitarsi alla destinazione di una o più famiglie di dispositivi in modo specifico. Per altre info sulle famiglie di dispositivi e su come decidere la famiglia di dispositivi di destinazione, vedi Guida alle app UWP.

Nota È consigliabile non usare il sistema operativo o la famiglia di dispositivi per rilevare la presenza di funzionalità. L'identificazione del sistema operativo o della famiglia di dispositivi corrente non è in genere il modo migliore per determinare se è presente una particolare funzionalità del sistema operativo o della famiglia di dispositivi. Invece di rilevare il sistema operativo o la famiglia di dispositivi (e il numero di versione), verificare la presenza della funzionalità stessa (vedere Compilazione condizionale e codice adattivo). Se è necessario richiedere un particolare sistema operativo o famiglia di dispositivi, assicurarsi di usarlo come versione minima supportata, invece di progettare il test per tale versione.

Per personalizzare l'interfaccia utente dell'app in dispositivi diversi, sono disponibili diverse tecniche consigliate. Continua a usare gli elementi a ridimensionamento automatico e i pannelli di layout dinamico, come hai sempre fatto. Nel markup XAML, si continui a usare le dimensioni in pixel effettivi (precedentemente pixel di visualizzazione) affinché l'interfaccia utente possa adattarsi a diverse risoluzioni e fattori di scala (vedi Pixel di visualizzazione/effettivi, distanza di visualizzazione e fattori di scala.). Usare i trigger adattivi e i setter di Visual State Manager per adattare l'interfaccia utente alle dimensioni della finestra (vedi guida alle app UWP.).

Tuttavia, se si ha uno scenario in cui è inevitabile rilevare la famiglia di dispositivi, è possibile farlo. In questo esempio, usiamo la classe AnalyticsVersionInfo per passare a una pagina personalizzata per la famiglia di dispositivi mobili, se appropriato, nonché garantire il reindirizzamento a una pagina predefinita in caso contrario.

   if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
        rootFrame.Navigate(typeof(MainPageMobile), e.Arguments);
    else
        rootFrame.Navigate(typeof(MainPage), e.Arguments);

L'app può anche determinare la famiglia del dispositivo su cui è in esecuzione dai fattori di selezione delle risorse in uso. L'esempio seguente illustra come eseguire questa operazione in modo imperativo e l'argomento ResourceContext.QualifierValues descrive il caso d'uso più tipico per la classe nel caricamento di risorse specifiche della famiglia di dispositivi in base al fattore della famiglia di dispositivi.

var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
string deviceFamilyName;
bool isDeviceFamilyNameKnown = qualifiers.TryGetValue("DeviceFamily", out deviceFamilyName);

Inoltre, vedere anche la compilazione condizionale e il codice adattivo.

Stato del dispositivo

Un'app di Silverlight per Windows Phone può usare la classe Microsoft.Phone.Info.DeviceStatus per ottenere informazioni sul dispositivo in cui è in esecuzione l'app. Anche se non esiste un equivalente UWP diretto per lo spazio dei nomi Microsoft.Phone.Info, ecco alcune proprietà ed eventi che puoi usare in un'app UWP al posto delle chiamate ai membri della classe DeviceStatus.

Windows Phone Silverlight UWP (Piattaforma Universale Windows)
proprietà ApplicationCurrentMemoryUsage e ApplicationCurrentMemoryUsageLimit le proprietà di MemoryManager.AppMemoryUsage e di AppMemoryUsageLimit
proprietà ApplicationPeakMemoryUsage Usare gli strumenti di profilatura della memoria in Visual Studio. Per altre informazioni, vedere Misurare l'utilizzo della memoria.
DeviceFirmwareVersion proprietà proprietà EasClientDeviceInformation.SystemFirmwareVersion (solo famiglia di dispositivi desktop)
proprietà DeviceHardwareVersion proprietà EasClientDeviceInformation.SystemHardwareVersion (solo per la famiglia di dispositivi desktop)
proprietà DeviceManufacturer proprietà di EasClientDeviceInformation.SystemManufacturer (solo per la famiglia di dispositivi desktop)
DeviceName proprietà Proprietà EasClientDeviceInformation.SystemProductName (solo per la famiglia di dispositivi desktop)
Proprietà di DeviceTotalMemory Nessun equivalente
proprietà IsKeyboardDeployed Nessun equivalente. Questa proprietà fornisce informazioni sulle tastiere hardware per i dispositivi mobili, che non vengono comunemente usate.
proprietà IsKeyboardPresent Nessun equivalente. Questa proprietà fornisce informazioni sulle tastiere hardware per i dispositivi mobili, che non vengono comunemente usate.
evento KeyboardDeployedChanged Nessun equivalente. Questa proprietà fornisce informazioni sulle tastiere hardware per i dispositivi mobili, che non vengono comunemente usate.
proprietà di PowerSource Nessun equivalente
evento PowerSourceChanged Gestire l'evento RemainingChargePercentChanged (solo famiglia di dispositivi mobili). L'evento viene generato quando il valore della proprietà RemainingChargePercent (solo famiglia di dispositivi mobili) diminuisce di 1%.

Posizione

Quando un'app che dichiara la funzionalità Location nel manifesto del pacchetto dell'app viene eseguita in Windows 10, il sistema richiederà all'utente finale il consenso. Pertanto, se l'app visualizza una richiesta di consenso personalizzata o se fornisce un interruttore on-off, è necessario rimuoverlo in modo che all'utente finale venga richiesto il consenso solo una volta.

Orientamento

L'app UWP equivalente alle proprietà PhoneApplicationPage.SupportedOrientations e Orientation è l'elemento uap:InitialRotationPreference nel manifesto del pacchetto dell'applicazione. Selezionare la scheda Application se non è già selezionata e selezionare una o più caselle di controllo sotto Rotazioni supportate per registrare le preferenze.

È tuttavia consigliabile progettare l'interfaccia utente dell'app UWP in modo da avere un aspetto ottimale indipendentemente dall'orientamento del dispositivo e dalle dimensioni dello schermo. In porting per fattori di forma e esperienza utente, che è il tema trattato subito dopo il prossimo.

L'argomento successivo è porting dei livelli business e dei dati.