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.

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.

Flash d’un téléphone Nexus One et Fastboot

J’ai passé le Nexus One de mon petit frère, qui jusqu’ici était en firmware officiel, en Cyanogen Mod V7.

Pour ce faire, comme le veut la procédure, il m’a fallut activer la possibilité d’installer des ROM alternatives. Ainsi, il me fallait utiliser le logiciel Fastboot. Celui ci n’est plus dans le dossier tools du SDK mais dans le dossier plateform-tools. En tout cas il est dans le SDK et donc il n’est pas nécessaire de le télécharger en plus.

Autre fait à savoir sur le Nexus One, pour lancer le bootloader, il faut allumer le téléphone en maintenant la boule de joystick appuyée.