Récupérer sa liste de TAG Shazam

Le store Amazon a proposé récemment quelques logiciels habituellement payants gratuitement. J’ai donc profité de cette occasion pour récupérer Shazam Encore, la version non bridée de Shazam. Cependant, étant deux applications différentes, la liste des titres que j’avais précédemment « Shazamés » n’est pas transférée. N’ayant plus un téléphone rooté pour l’instant, j’ai décidé de m’en passer mais il est possible de tout transférer en suivant cette procédure :

A l’aide de son téléphone rooté (obligatoire pour accéder à ce fichier), il faut prendre le fichier library.db situé à l’emplacement : /data/data/com.shazam.android/databases/

On peut ensuite le déposer dans le dossier de base de données de Shazam Encore situé en : /data/data/com.shazam.encore/databases/

On peut aussi vouloir récupérer sa liste de TAG pour l’exploiter sur son PC. Le site Arcane Sanctum a déjà fait un tuto très bien expliqué sur la question. Il est disponible à cette adresse : http://arcanesanctum.net/2012/07/11/how-to-dump-the-android-shazam-tag-list-database-to-a-readable-file/

Désactiver les synthèses vocales sous Jelly Bean

Sur le Samsung Galaxy S III (mais s’adapte sur Jelly Bean de manière globale), lorsque toute les options classiques pour désactiver la synthèse vocale n’ont pas fonctionné, (Paramètres -> Langue et saisie -> Sortie de synthèse vocale -> désactiver le Profil voiture par exemple ou Paramètres -> Accessibilité -> Services -> Désactiver Talkback), il est possible de résoudre définitivement le problème en allant dans Paramètres -> Gestionnaire d’applications -> Tout. Une fois là, commencer par Supprimer les données des applications Moteur de synthèse vocale Google et Samsung TTS. Si cela ne fonctionne toujours pas, alors Désactiver ces applications.

Activer la synchronisation de son compte Google sur Android 4.1.2

Avec la version 4.1.2 d’Android (sur Samsung Galaxy S III et Samsung Galaxy S II avec certitude), l’ajout d’un compte Google ne suffit pas à sa synchronisation automatique. De surcroît, aucune case à cocher n’est disponible dans la partie « Comptes » pour activer cette synchronisation.

En fait, ces coches apparaissent lorsque la synchronisation automatique des données est activée. Cette option n’est pas dans la partie « Comptes » mais dans la partie « Utilisation des données« . Une fois dans cette partie, il suffit d’accéder aux options et d’activer la coche « Synchroniser les données« . On peut ensuite retourner régler les paramètres à synchroniser dans la partie « Comptes« .

Hard Reset Android avec ADB

Je possède une tablette Android avec un firmware de développement sur lequel j’ai essayé de mettre les Google Apps afin de profiter du Play Store. Le problème que j’ai rencontré est que les paquets que j’avais téléchargé n’étaient pas compatible avec la version d’Android qui tourne sur ma tablette (4.0.4) et après une redémarrage, j’ai eu le droit à une tablette qui rebootait à l’infini.

Impossible donc de passer par la remise aux configurations d’usine depuis l’écran de paramètres. Après quelques essaies, j’ai trouvé la solution qui a fonctionné.

ADB (Android Debug Bridge) est l’utilitaire fournit avec le SDK Android pour agir sur un matériel connecté à l’ordinateur directement. Il est presque possible de tout faire depuis lui à l’aide de simples lignes de commandes.

J’ai donc éteint ma tablette puis l’ai branchée à mon ordinateur. Celle ci a commencé à démarrer tout en se connectant à l’ordinateur même si la boucle infinie s’est remise en place.

Je suis allé dans le dossier d’installation de mon SDK Android (Pour moi C:\Program Files (x86)\Android\android-sdk), et suis allé cherché ADB dans le dossier platform-tools. D’ici, j’ai pu taper

adb.exe shell

afin de rentrer dans le mode de commande d’ADB et agir sur ma tablette. Une erreur « Device Not Found » peut avoir lieu, Pour la corriger, désinstaller le pilote de connexion du matériel puis le débrancher et le rebrancher.

Un fois connecté sur le périphérique visé, il suffit de taper

recovery --wipe_data

pour que la tablette soit vidée et remise à 0. Un autre cas peut survenir. La première fois, ma tablette a simplement réussi à fini de booter en me marquant un message « Mode Sécurisé » en bas à gauche. Ce fut cependant suffisant pour accéder aux paramètres et demander un factory reset normalement. Je ne suis cependant pas sûr que ce soit le wipe data qui m’ait fait passer dans ce mode. C’est peut-être un appuie long sur le bouton de volume – qui en est le responsable mais je ne compte pas refaire planter ma tablette pour vérifier donc dans le doute essayez.

En tout cas vous retrouverez une tablette comme neuve et vous pourrez installer Google Play depuis les bons paquets compatibles.

Résoudre le « R cannot be resolved »

Sous Eclipse, lors de développements Android, un problème que j’ai rencontré assez souvent est l’erreur « R cannot be resolved« .

Ceci est souvent dû à une mauvaise importation de classe au début du code où au lieu d’importer la classe R générée dans le package du projet, l’IDE essaye d’importer la classe android.R

Pour corriger ça, il suffit de changer l’import android.R en supprimant la ligne correspondante puis en organisant les imports à l’aide du raccourcis Ctrl + Shift + o

Si impatiemment vous aviez supprimé R en vous disant qu’il allait le re-générer  c’est en relançant le projet qu’Eclipse devrait s’en charger.

Gérer ses formats de date sous Android

Tout programmeur a un jour été confronté à l’affreuse tâche de devoir gérer un format de date dans l’un de ses programmes. Des outils existent mais ne conviennent pas toujours aux besoin ou au format que l’on souhaite mettre en place et on en arrive souvent à se dire qu’avec un peu de tolérance, l’utilisateur ne devrait pas avoir besoin de sa foutue date.

Heureusement les développeurs Android ont pris le taureau par les cornes et nous ont donné le SimpleDateFormat.

Cette classe nous permet de traiter des données de date dans le format que l’on souhaite sans se heurter à des problèmes de fonctions deprecated ou à des librairies maison souvent aussi compréhensibles qu’inefficaces.

byte[] to String

Beaucoup de développement ces temps ci et donc pas mal de petites découvertes.

Sur le projet Hook, nous avions à traiter les images que nous envoyions comme des tableaux de Byte afin de le encoder en Base64. Ici, pas de fonction dans le JDK natif, mais une classe Base64 des plus efficaces dans le SDK Android. Cependant, de l’autre côté, pour les stocker, il nous fallait récupérer les tableaux, et les convertir en String. Ceci est déjà mâché en Java puisqu’il existe un constructeur de String prenant en paramétré un byte[]. Il est même possible de préciser l’encodage stocké dans la chaîne de caractère.

Week End Be My App du 5 au 7 Octobre 2012

Je parle assez peu de moi dans mon blog et en tout cas si je le fais c’est pour donner un contexte à une résolution de problème que j’ai eu. Voilà l’article qui marque un changement vu qu’aucun problème ne va être résolu dans cet article. Je ne compte pas devenir un rédacteur de skyblog pour autant mais mon point de vue a quelque peu évolué.

L’évènement qui me fait sortir de ma discrétion à propos de ma vie est un évènement qui m’a réellement marqué et que je recommande à tout développeur / designer / marketer / hacker / IT fan est Be My App. Du vendredi 19H au Dimanche 22H (bien que nous ayons dû partir, plus tôt à cause du trajet Paris – Clermont-Ferrand qui n’est pas anodin), un weekend entier de développement sur le thème du NFC.

Be My App a, d’après ce que j’ai pu voir, des partenaires et une organisation aux petits oignons. Pas moins que JCDecaux, Orange, Intel, BeGeek, FrAndroid, Programmez, FrenchWeb, le Forum des services mobiles sans contact, le blog Avec ou sans contact, Fred Zone, Le blog des nouvelles technologies comme partenaires. Pour ce qui est de l’organisation, un timing parfait, une équipe connaissant son métier et des intervenants tout aussi qualifiés. Tout était fait pour que l’on puisse avoir tout le matériel, les outils et les connaissances à disposition pour travailler. Pour ce qui était des locaux, l’évènement s’est passé à l’IESA multimédia. De la place pour tout le monde, même si les organisateurs eux même n’en attendaient pas autant. Le seul petit détail négatif que l’on peut trouver était la profondeur des tables et leur inclinaison qui bien que très certainement pratique pour des feuilles de papier, s’avéraient un peu juste pour des laptops (d’autant plus pour les 17″). On faisait fie de ce détail assez rapidement cependant.

La première soirée a commencé avec ce que l’on appelait les « pitches » qui correspondent à la présentation des différentes idées proposées par les « porteurs d’idées« . 37 présentations ont été faites à ce moment là et chaque idée était votée par un jury de 5 « mentors« . Ces votes étaient finalement à titre indicatifs et n’influaient pas sur la suite. Ce qui influait était leur délibération qui a eu lieu après et au cours de laquelle 7 projets ont été choisis pour être en compétition pour le prix final. Durant cette délibération, un jeu servant au rattrapage d’une idée était organisé et correspondait à une sorte de sélection du publique. Chaque porteur d’idée allait tenter de collecter des jetons qui avaient été remis à chaque développeur lors de leur arrivé. Les jetons récoltés étaient ainsi comptés et les résultats remis aux mentors. 1 projet supplémentaire était ainsi rattrapé. Une fois les idées sélectionnées lançées, il était possible de rejoindre l’un des groupes ou, comme mes amis et moi avons décider de le faire portés par un très bon designer intéressé par notre idée, de développer son idée en tant que team dissidente.

Les hostilités étaient alors lancées pour une durée de 48H. A nous d’organiser notre temps comme nous le souhaitons pour nous reposer (fort peu) ou nous ravitailler (fort bien et fourni par les organisateurs de surcroît, nous évitant ainsi d’avoir à quitter les lieux et de risquer de nous perdre ou de perdre du temps) pendant le temps imparti. Deux petites pauses étaient prévues le samedi pour, à la mi-journée, faire un checkpoint vidéo puis, en fin d’après-midi, pour faire une sorte d’entrainement à la présentation du lendemain.

Au cours des 48H de code, de nombreuses personnes, plus compétentes les unes que les autres dans leurs domaines, sont venues nous aider à forger notre projet, à trouver les points d’attaque marketing, à étoffer l’idée de base que nous avions afin de, petit à petit, la voir vivre. L’aspect recherche d’un business model systématique a été une grande découverte pour moi. En effet, la plupart des idées que j’ai amené à maturité n’étaient destinées qu’à mon usage personnel ou à être diffusées de manière open source et sans attente de rétribution financière. La manière de monétiser une application mobile était une recherche particulièrement intéressante. D’ailleurs, Be My App va organiser des conférences à ce sujet le Mardi 16 Octobre et je regrette déjà de ne pas pouvoir y participer (Be My App Comment monétiser votre application mobile ?)

Un autre checkpoint vidéo était organisé le dimanche à la mi journée avant l’arrêt du code à 18H. Une légère pause (la plupart du temps la finalisation des slides de présentation) jusqu’à 19H était octroyée puis les présentations finales avaient lieux. Ces présentations étaient faites devant tous les membres du jury et donc étaient intéressantes même pour les team dissidentes puisqu’elles permettaient potentiellement de se faire repérer. En effet, en plus des mentors de la première sélection, un certain nombre de membres liés aux différents sponsors venaient participer aux choix. Ayant dû partir après notre présentation, je n’ai pas tous les détails de la fin des décisions mais ce qui était annoncé était le passage de toutes les team sélectionnées puis le vote des jury pour choisir les gagnants.

En résumé, ce weekend était une expérience particulièrement géniale. L’ambiance était extrêmement chaleureuse et le contact avec les gens était très facile. Ça se sentait que tout le monde était là pour rencontrer des gens et s’éclater. Cela a été aussi l’occasion de voir naître des projets particulièrement prometteurs que l’on verra peut-être en place et prendre en notoriété au fil du temps.

En ce qui concerne ma team, nous avons eu l’occasion de commencer, et presque finir mais maintenant que les 48H sont passées nous pouvons prendre le temps de faire les choses bien, notre projet nommé Hook (NFCard lors de la présentation du Vendredi). Vous pouvez suivre l’avancement de cette application sur les pages facebook et twitter créées à cet effet.

En tout cas comme dit au début, je recommande à toute personne ayant la possibilité de se rendre à ces évènements Be My App d’y aller et j’espère réellement pouvoir y retourner dès que possible. Je félicite encore les organisateurs pour leur travail et la vivacité qu’ils ont su amener à tout le weekend.

PS : Les photos de l’event

Installer le SDK Android sous Windows avec l’installateur

Lorsque j’ai souhaité installer le dernier SDK Android sous Windows, un problème est survenu. En effet, le SDK était incapable de trouver le JDK pourtant déjà installé. Les recherches sur internet donnaient comme solution de procéder en appuyant sur retour puis suivant. Cela avait l’air de fonctionner avec beaucoup de personnes. Cependant, ceci ne m’a pas permis de résoudre mon problème.

J’aurais pu contourner ceci en dé-zippant juste la version compressée mais je voulais la version de l’installateur.

La solution a finalement été d’ajouter une variable d’environnement JAVA_HOME. Pour ce faire, il suffit de faire un clic droit sur Ordinateur -> Propriétés -> (Sur la gauche) Paramètres Système avancés -> (En bas) Bouton « Variables d’environnement … » -> (En bas) Bouton « Nouvelle… » -> Nom de la variable : JAVA_HOME et valeur de la variable : Adresse de l’emplacement du JDK.

Une fois cette variable ajoutée, relancer l’installateur et tout se passera bien.

On peut aussi, si l’on veut, ajouter l’emplacement du SDK Android au Path global de Windows afin d’accéder aux commandes directement depuis la console. Il suffit de faire pareil qu’au dessus sauf qu’on modifie la variable nommée « Path« , et on y ajoute à la fin l’emplacement de l’installation précédé d’un point-virgule.

Connecter son téléphone android sur Linux

J’ai tenté de connecter mon Samsung Galaxy S II à mon Ubuntu mais je n’obtenais que des erreurs de connexion et de montage. Je ne pouvais ainsi notamment pas accéder à mes photos afin de les récupérer. Après quelques recherches, j’ai appris que Google avait choisi d’utiliser le MTP (Media Transfert Protocol) à la place de l’USB Mass Storage afin de palier à des problèmes de montage/démontage de partition. Ubuntu a beau gérer nativement le MTP sur le papier, il n’a pas l’air de bien fonctionner avec les périphériques Android.

Plusieurs personnes (ici ou ici) décrivent des procédures à suivre afin de connecter ce genre de périphériques. Cependant, après un essai infructueux, j’ai décidé de voir s’il n’était pas possible de se connecter autrement.

En effet, j’ai juste cherché à retrouver l’ancienne option d’USB Mass Storage en me disant qu’avant il était possible de l’activer avec de simples options comme le debug développeur. Il ne m’a pas fallut longtemps pour trouver dans Paramètres -> Plus … -> Utilitaires USB le stockage de masse USB. On retrouve ainsi l’ancien format de connexion et tous les problèmes disparaissent.