L'intégration de votre application au hub Photo

L'intégration de votre application au hub Photo

Fréquentant quelques développeurs iphone (pas d’inquiétude, je me soigne), ces derniers se plaignent régulièrement de ne pas avoir la possibilité d’associer leurs applications comme flickr, facebook ou foodreporter avec le type images. Impossible donc pour eux de prendre une photo, puis de faire “envoyez vers picasa” par exemple. Malgré le peu de documentations, cette possibilité existe avec Windows Phone 7, et juste pour les dégoûter nos développeurs iPommé, il y a exactement deux façon de le faire. Lorsque vous prenez une photo ou que vous regardez une image dans le hub photo, un menu “…” est visible en bas ou à droite. En cliquant dessus, vous avez accès à différents menu, dont “partager” et “supplémentaire”. Nous réservons les applications sociales au premier menu, alors que les applications permettant la retouche ou le traitement de photos trouveront plus leurs places dans le second. Vous trouverez dans la suite de cet article comment se greffer à ces menus.

Ajouter son application au menu “supplémentaire”

Le menu “supplémentaire” n’est affiché que si une application l’utilise déjà, ne soyez donc pas surpris si vous ne le voyez pas. Créez un fichier XML nommé “Extras.xml” et placez-le à la base de votre projet.

 

<?xml version=1.0 encoding=utf-8 ?>
<Extras>
<PhotosExtrasApplication>
<Enabled>true</Enabled>
</PhotosExtrasApplication>
</Extras>

Faites attention d’enregistrer votre fichier en utf-8, sinon changez l’entête. Dans les propriétés de ce fichier, pensez à bien sélectionner “Toujours copier” pour la propriété “copier dans le répertoire de sortie”.

Ajouter votre application au menu “partager…”

De la même façon, il va falloir ajouter un fichier xml à la base de votre projet. Le point positif : même pas besoin de le remplir cette fois-ci, un fichier vide suffira. Point négatif, vous n’arriverez jamais à retenir son nom par coeur, sauf évidemment si vous connaissez aussi les 69 premières décimales de Pi. Donc, il suffit de créer le fichier “E0F0E49A-3EB1-4970-B780-45DA41EC7C28.xml” (j’avais prévenu) et comme précédemment, mettre la propriété “copier dans le répertoire de sortie” à “Toujours copier”. Si vous souhaitez vraiment le remplir, voici un exemple :


<?xml version=1.0 encoding=utf-8 ?>
<share>
Il y a 16 types de personnes : ceux qui nomment leurs fichiers en hexa, et les autres
</share>

 

Et voilà !

Tester sur mon téléphone

Il ne vous sera pas possible d’accéder au hub Photo via l’émulateur ce dernier en étant dépourvu. Pour aller dans le hub photo sans être obligé de débrancher le câble à chaque fois (à cause de la synchronisation Zune), il vous faudra passer par l’outils WPConnect, qui est disponible dans le répertoire ‘tools/WPConnect’ du SDK. Si vous n’êtes pas familier avec cet outils, ce dernier remplace la connexion Zune tout en vous laissant la main sur les médias locaux. Pour l’utiliser, il faut attendre que Zune affiche votre téléphone, fermer Zune, attendre quelques secondes, puis lancer l’outils.

Débogage

Malheureusement il n’existe pas de solution pour déboguer votre application en passant par visual studio, en effet, quand vous lancerez l’application via le menu ‘partager’ ou ‘supplémentaire’, le windows phone 7 va relancer une instance de votre application, ce qui aura pour conséquence de couper votre connexion de débogage. La seule méthode sera la méthode empirique à base de MessageBox.Show.

Comment récupérer la photo dans mon application

Dans votre page principal (souvent mainpage.xaml), ajoutez la fonction suivante :

protected override void OnNavigatedTo(NavigationEventArgs e) {
  base.OnNavigatedTo(e);
  String id="token"; //pour le menu Extra
  String id="FileId"; //pour le menu Partager, supprimez la mention inutile
  var queryStrings = this.NavigationContext.QueryString;
  if (queryStrings.ContainsKey(id))
  {
    MediaLibrary library = new MediaLibrary();
    Picture picture = library.GetPictureFromToken(queryStrings[id]);
    BitmapImage bitmap = new BitmapImage();
    bitmap.SetSource(picture.GetImage());
  }
 }

Il vous reste plus qu’à afficher l’image ou faire un traitement dessus, selon vos besoins.

Comments are closed.