In Windows Phone è da sempre possibile condividere contenuti multimediali attraverso social network o app di terze parti che si sono integrate nel sistema. La condivisione è possibile attraverso l'hub foto, che permette di selezionare una foto e di scegliere il mezzo di condivisione.
Una mancanza presente nelle versioni 7.x, però, è la possibilità di utilizzare questa funzionalità anche in app di terze parti. Pensiamo ad un'app alternativa di visualizzazione foto, locali o remote: è utile permettere all'utente di convidere un'immagine di suo interesse.
In Windows Phone 8 viene in aiuto la classe ShareMediaTask la quale semplicemente permette di prendere un'immagine e farla condividere attraverso il sistema integrato. L'unica cosa che richiede è il percorso al file, che deve obbligatoriamente risiedere nella picture library. Possiamo usare il CameraCaptureTask per ottere un'immagine e l'OriginalFileName come risultato, oppure possiamo utilizzare la classe PictureLibrary per salvare l'immagine e passarla poi al task. In questo script mostriamo questa possibilità.
// Recupero il riferimento all'immagine dalla cartella dell'app
StorageFolder assetsFolder = await Package.Current.InstalledLocation.GetFolderAsync("assets");
StorageFile file = await assetsFolder.GetFileAsync("test.png");
// Apro in lettura il file
using (var r = await file.OpenReadAsync())
{
// Salvo nella picture library
var picture = new MediaLibrary().SavePicture("test.png", r.AsStreamForRead());
// Condivido l'immagine
ShareMediaTask share = new ShareMediaTask();
share.FilePath = picture.GetPath();
share.Show();
}Come possiamo vedere, nell'esempio recuperiamo l'immagine dalla cartella dell'applicazione, ma questa potrebbe anche provenire da internet. Ad ogni modo, ottenuto lo Stream dell'immagine, lo persisistiamo nella picture library. A questo punto abbiamo il percorso del file invocando il metodo GetPath (namespace Microsoft.Xna.Framework.Media.PhoneExtensions), che possiamo poi passare al task di condivisione dell'immagine. Ricordiamo che per scrivere nella media library è necessario richiedere il permesso ID_CAP_MEDIALIB_PHOTO.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Combinare Container Queries e Media Queries
Gestire progetti NPM in .NET Aspire
Arricchire l'interfaccia di .NET Aspire
Anonimizzare i dati sensibili nei log di Azure Front Door
Configurare automaticamente un webhook in Azure DevOps
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
Importare repository da Bitbucket a GitHub Enterprise Cloud
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Utilizzare Locust con Azure Load Testing
Interagire con Azure DevOps tramite MCP Server
Scrivere selettori CSS più semplici ed efficienti con :is()
Ottimizzare le pull con Artifact Cache di Azure Container Registry


