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
Creare una libreria CSS universale: Nav menu
Rendere le variabili read-only in una pipeline di Azure DevOps
Integrazione di Copilot in .NET Aspire
Configurare lo startup di applicazioni server e client con .NET Aspire
Gestire codice JavaScript con code splitting e lazy loading
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Supportare la sessione affinity di Azure App Service con Application Gateway
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Configurare OpenAI in .NET Aspire
Eliminare una project wiki di Azure DevOps
Configurare automaticamente un webhook in Azure DevOps
Eliminare record doppi in Sql Server


