Archives mensuelles: juin 2014

3 articles

Hard reset et RoamingFolder sur Windows Phone 8.1

Windows Phone 8.1 PowerTools

Etant inscrit comme développeur Windows Phone, j’ai la possibilité de tester en avant première la version 8.1 de Windows Phone.

Jusqu’à aujourd’hui tout se passait bien avec la stabilité légendaire de l’OS Windows phone, je n’avais pas grand-chose à reprocher à cette nouvelle version Béta.

Avec Visual Studio 2013, il existe de nouvelles fonctionnalités pour Windows Phone 8.1 très utiles pour tracer le CPU, mémoire, consommation batterie…

Pour activer ce paquet, l’installation d’une mise à jour de Windows Phone 8.1 par Visual studio est nécessaire.

Le crash

Après cette dernière mise à jour, le téléphone redémarre. Surprise, la plupart des applications « Silverlight Windows Phone » se lancent et … se ferment après 3 secondes d’utilisation. Le téléphone est incroyablement lent et une application exemple qui consommait auparavant 20Mo occupe maintenant 200Mo !

A priori, je ne suis pas le seul à avoir ce problème :

WPPowertools8.1Issues

 

Après 18 mois d’utilisation de mon Lumia 920, je n’avais jamais eu besoin de le réinitialiser. J’ai plus de 250 applications et jeux (pour mes enfants) installés.

Je crains la réinstallation des applications qui s’annonce fastidieuse mais pas d’autre choix.

C’est avec un pincement au cœur que je me résous à faire le Hard Reset de mon Lumia.

La sauvegarde

Avant de lancer le Hard Reset :

  • Les photos, musiques et vidéos peuvent être sauvées avec une simple copie de fichier via la prise USB
  • Avec WP8.1, un backup de vos SMS, Applications et paramètres a été ajouté : Les paramètres et applications et SMS sont sauvegardés avec le menu Sauvegarde dans Paramètres.

Poursuivre la lecture

Isolated Storage et Images sous Windows Phone 8

Je vous propose un petit tour d’horizon sur le stockage d’images dans l’Isolated Storage.

Pour rappel, l’Isolated storage est l’emplacement réservé à votre application Windows Phone pour le stockage de fichiers.

Quelles sont les implémentations qui permettent de récupérer une image déjà stockée dans cet espace ? Quelles sont les méthodes les plus efficaces ?

L’implémentation classique (Windows Phone 7)

C’est l’implémentation standard « old school » : j’utilise GetUserStoreForApplication() et OpenFile pour lire un Stream. Le Stream est ensuite lu par le BitmapImage et renvoyé dans une Action.

public static void LoadImageFromStorage(string name, Action<BitmapImage> actionBitmap)
{
    using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
    {
        if (myIsolatedStorage != null && myIsolatedStorage.FileExists(name))
        {
            IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(name, FileMode.Open, FileAccess.Read);
            {
                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    BitmapImage bitmapSource = new BitmapImage();
                    bitmapSource.SetSource(fileStream);
                    if (actionBitmap != null)
                        actionBitmap(bitmapSource);
                });
            }
        }
    }
}

Remarque 1

BitmapImage nécessite de s’exécuter dans le ThreadUI principal, pour cela, on utilise

Deployment.Current.Dispatcher.BeginInvoke(() =>

Poursuivre la lecture

HTTP et images sous Windows Phone

Je continue avec l’affichage des Images et je vous propose cette fois de voir les implémentations possibles pour récupérer des images depuis le Web avec le protocole http.

L’implémentation classique :

public static void GethttpImage1(string urlImage, Action<BitmapImage> action)  
{
  var request = (HttpWebRequest)WebRequest.Create(urlImage);
  request.BeginGetResponse(result =>
  {
    using (var sr = request.EndGetResponse(result))
    {
        Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                var image = new BitmapImage();
                image.SetSource(sr.GetResponseStream());
                if (action != null)
                    action(image);
                sr.Close();
            });
    }
  }
}

urlImage contient l’url de l’image sous forme d’une châine de caractère : exemple : http://dev.bratched.fr/download/testimage1.png

La méthode utilise un WebRequest et lit la réponse de la requête sous forme d’un stream avec le request.EndGetResponse.

La partie

Deployment.Current.Dispatcher.BeginInvoke(() =>

est très importante car elle va permettre d’utiliser le BitmapImage dans le Thread Principal même lorsque la méthode est appelée dans un Thread tournant en tâche de fond.

Poursuivre la lecture