WinRT: catturare una foto e salvarla nel roaming folder
Con qualche riga di C# è possibile utilizzare la webcam o la fotocamera del nostro PC/tablet/ultrabook e salvarla all’interno della cartella roaming, che viene automaticamente sincronizzata tra tutti i vostri device Windows 8.
Il codice è piuttosto semplice.
StorageFolder folder =
Windows.Storage.ApplicationData.Current.RoamingFolder;
CameraCaptureUI dialog = new CameraCaptureUI();
Qui sopra ho istanziato due oggetti che ci serviranno nel codice.
private async void Button_Click_1( object sender, Windows.UI.Xaml.RoutedEventArgs e) { var file = await dialog. CaptureFileAsync(CameraCaptureUIMode.Photo); if (file != null) { string filename = string.Concat (Guid.NewGuid().ToString(), file.FileType); await file.MoveAsync(folder, filename); } }
La prima cosa che faccio è invocare il metodo CaptureFileAsync. Questo metodo avvia la fotocamera del device, e vi permette di catturare una foto od un video. Se concludete l’operazione con successo (ovvero: se non annullate l’operazione), il vostro file media viene salvato in una cartella temporanea che – stando a ciò che ho letto in giro sul Internet – può venir ripulita dal sistema.
La prima cosa che faccio quindi è spostare il file nella cartella roaming, rinominando il file, dandogli un nome univoco – nel mio caso genero un nuovo Guid, voi potete applicare qualsiasi logica vi venga in mente.
Questo approccio ha diversi vantaggi:
- salvandola nel roaming folder, le vostro foto/video vengono sincronizzate tra tutti i vostri device Windows 8 (ovviamente se fate login con il vostro Microsoft Account)
- Se avete MediaElement o Image nel codice XAML, potete far riferimento alle immagini salvate nel roaming folder tramite l’url “ms-appdata:///roaming/nomefile”. Facile e veloce, senza troppi fronzoli
Detto questo, ricordatevi solamente nelle Capabilities della vostra app per abilitare la webcam.