Un robot parleur sous Android : l’application SpeechBot

July 6th, 2010 by jocelyn.thielois

Parmi les nombreuses fonctionnalités du SDK d’Android il existe un service de synthèse vocale qui vous permet de faire dire à votre téléphone ce que vous voulez dans plusieurs langues.
Les applications Android peuvent facilement tirer parti de cette API afin d’aider les personnes mal ou non voyantes, ou lire à voix haute un SMS qui arrive lorsque vous conduisez votre voiture par exemple.
Dans cet article nous allons nous intéresser à la mise en œuvre d’une petite application de robot parleur qui dit dans la langue choisie un message saisi au clavier.

Architecture logique

L’application est composée d’une activité architecture logique application Android SpeechBotprincipale proposant une IHM pour saisir le texte, et d’une activité secondaire accessible depuis un menu d’options, permettant de modifier les réglages de notre application.
Les constantes de l’application sont centralisées dans l’interface Constants, tandis que les fonctions de synthèse vocale sont encapsulées dans la classe Tts.
Des fichiers de ressources sont utilisés pour définir l’IHM de l’application (layout main.xml), le menu d’options (options_menu.xml) et les différentes options de réglages (settings.xml).
Tous les textes de l’application sont externalisés dans values/strings.xml, c’est la ressource utilisée par défaut; pour une version bilingue il suffit de créer une ressource values-fr/strings.xml avec les textes en français.
En somme, une organisation classique pour une application Android.

Manifeste de l’application :

< ?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.programmez.android.speechbot">
  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".App" android:label="@string/app_name">
      <intent -filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent>
    </activity>
    <activity android:name=".Settings"/>
  </application>
  <uses -sdk android:minSdkVersion="4" android:targetSdkVersion="7"/>
</manifest>

Activité principale et IHM

L’interface de l’application est constituée d’un titre, une invite à saisir, une zone d’édition et un bouton pour lancer la synthèse vocale.

L’activité principale est prise en charge par la classe App, qui affiche le IHM application android SpeechBotlayout et gère les interactions avec l’utilisateur :
• La première fois que l’utilisateur lance l’application un texte par défaut lui est proposé (« Bonjour !»)
• Chaque fois que le texte est modifié, il est sauvegardé et remplacera le texte par défaut pour les prochains lancements de l’application.
• Lorsque l’utilisateur clique sur le bouton « Parler », l’activité lance la synthèse vocale.
• Un menu d’options est accessible via la touche « menu » du téléphone, avec la possibilité d’accéder aux réglages ou quitter l’application. Read the rest of this entry »

Présentation disponible du cours du soir sur CouchDB

June 14th, 2010 by Grégory Paul

J’ai eu mercredi dernier l’occasion d’animer un cours du soir sur Apache CouchDB.
CouchDB est une base de donnée “NoSQL“, orientée document et dont la particularité est d’être très orienté vers le web (données au format JSON, accès REST donc via HTTP, écriture des vues en JavaScript). Ces différents points ont été abordés lors de cette soirée.

Si ce sujet vous intéresse, je vous invite à parcourir la présentation en ligne.
Utilisez les flèches de votre clavier pour naviguer dans cette présentation HTML (construite sous S5 d’Eric Meyer).

Retours sur la conférence Agile France

June 6th, 2010 by admin

Pour sa première édition sous le nom de “Agile France”, la conférence a affiché complet cette année en réunissant plus de 300 personnes battant ainsi son propre record.
Nous nous sommes donc tous réunis comme l’année dernière au chalet de la porte jaune pour assister aux présentations de la “conférence agile sur les méthodes agiles“.

Valtech a participé largement en tant que sponsor de l’événement, mais aussi par les multiples interventions de ses consultants. D’autres consultants ont aussi pu venir simplement assister à ce rendez-vous incontournable et ce fut appréciable.

L’impression générale est qu’il y avait beaucoup de contenu: les sessions se sont déroulées sur 6 salles (voir 7 par moment). Il y a eu de nombreux sujets sur Scrum, TDD et toutes les techniques de l’agilité, quelques sujets un peu plus techniques et pas mal de présentations sur la communication pour s’ouvrir l’esprit, à commencer par les deux keynotes.

Celle de de Bruno Sbille: PNL et Agile: les yeux, les oreilles et les sensations” nous a expliqué qu’il faut savoir parler aux auditifs, aux visuels et aux tactiles avec des canaux différents. Elle s’est terminée sur le triangle dramatique issu de l’analyse transactionnelle et la descriptions des jeux psychologiques auxquels peuvent se livrer les membres de l’équipe de manière plus ou moins consciente.

Le deuxième jour la keynote d’Esther Derby : Self-help for Self-organizing Teams nous a parlé de confiance et des moyens de l’acquérir et la conserver.

Voici quelques notes sur une partie des sessions animées par des consultants Valtech:

Commencer petit pour finir grand : L’art de la construction incrémentale par Etienne Charignon

“Quand vous arrivez chez un client, ce que vous connaissez du modèle métier du client, c’est un bonhomme têtard… Vous en connaissez autant qu’un enfant de 3 ans connaît son modèle corporel.”

XP/TDD avec des technologies “legacy” par Pascal Ognibene :
beaucoup trop de participant

Pascal nous a fait un retour d’expérience sur la mise en place de TDD dans des environnements C++ dans le monde des télécoms ou sur des logiciels spécifiques.

C’est une bataille difficile qui doit se préparer avec soin et il faut savoir que cela aura un coût car la mise en place demande encore beaucoup de scripting spécifique.

La difficulté vient du retard dans le portage des outils du monde Java dans le monde du C++, d’obstacles à surmonter liés à la technologie (par exemple, les éditions de liens en C++ qui peuvent ralentir considérable le rythme) , mais surtout la dette technique particulière de l’application qui fait que ses composants ne sont souvent pas testables isolément.

Jeu de Rôle Scrum par Yannick Ameur :

Une présentation toujours très animée et pédagogique.

6 participants à la session constitue une équipe projet  pour construire un château. Yannick est le client.

Les participants ont un rôle dans le projet décrit sur une carte et comme dans tout vrai projet certains joueront un rôle non contributif, voire négatif. Et bien sûr le client ne sait pas ce qu’il veut non plus. Une fois le château construit, il veut finalement autre chose.

Le but de l’expérience est de montrer moment l’équipe arrive à répondre à la problématique malgré tous ces écueils en mode cascade et en mode Agile.

Transformation Agile à grande échelle par Gilles Mantel

Comme le note Ayeba dans son retour sur Agile France, Gilles Mantel a présenté la transformation vers l’agilité chez un client (qui n’est pas Renault), un processus long et progressif emmagasinant régulièrement les succès.

Personas : une dose d’expérience utilisateur pour vos projets agiles par Jean-Claude Grosjean

Jean-Claude a présenté l’approche centrée sur les personas, ces utilisateurs types qui aident à la conception.
Cyrille Deruel
semble avoir aimé !

Test Driven Requirement avec Robot Framework par Maxime Lemanissier

Maxime et Eric ont simulé une réunion TDR entre le product owner et un développeur, afin de présenter comment les spécifications sont capturées dans cette démarche. L’outil Robot Framework a été utilisé pour saisir les spécifications sous la forme de scénarios de test et en utilisant le vocabulaire métier (domain specific language). Les mots-clés composant ce vocabulaire ont ensuite été implémentés à l’aide d’instructions du driver de test (en l’occurrence Selenium – appli web). Présentation très technique, Maxime a réussi à montrer toute la chaîne TDR, de la mise au point des spécifications jusqu’à l’exécution avec succès des tests automatisés / spécifications exécutables.

Nous remercions les organisateurs de cette belle édition 2010 :
Sébastien Douche, Yannick Ameur, Agata Sobik, Pascal Pratmarty, Thibault Bouchet, Jonathan Scher

Vivement l’édition 2011 !

par Claude Falguière, Eric Le Merdy, Etienne Charignon, Yannick Ameur

L’actu .NET

May 30th, 2010 by Cédric Rup

Un point sur une actualité .NET particulièrement dense ces derniers jours :

.NET

After Work 3D sous Android – Paris la Défense

May 27th, 2010 by Valtech France

Une soirée conviviale organisée par Valtech sur le thème de la 3D sous Android vous attend à Paris la Défense le 16 juin 2010.

Android est un système d’exploitation Open Source proposé par Google. Aujourd’hui, Android connaît une croissance très forte, qui lui permettra dans deux ans d’être l’un des systèmes dominants sur le marché très disputé de la mobilité.

Après une présentation et un peu de pratique, les consultants, les formateurs et les managers de Valtech Training répondront à toutes vos questions sur les postes ouverts, les profils recherchés, la gestion de carrières, les types de missions proposées par Valtech.

Vous souhaitez participer à cet After Work propice aux échanges, réservez vite votre place pour cet évènement qui aura lieu le 16 juin 2010 de 18h30 à 21h30.

Cloud Computing – Toulouse

May 26th, 2010 by Valtech France

Retrouvez Valtech autour d’une présentation sur les nouvelles architectures du Cloud Computing à Toulouse le 22 Juin 2010.

Le Cloud Computing est désormais prêt pour s’inviter dans les entreprises et changer l’informatique. Tous les grands acteurs se positionnent sur ce créneau: Amazon, Microsoft, Google, Sun, IBM et beaucoup d’autres.

Vous souhaitez vous positionner sur ce même créneau  via ce changement informatique, Valtech Technology vous propose un tour d’horizon sur les nouvelles opportunités offertes par le Cloud.Vous souhaitez échanger et poser toutes vos questions à l’équipe de Valtech Toulouse qui a élaboré ce séminaire à partir de cas concrets rencontrés en entreprises, réservez vite votre place pour ce séminaire qui aura lieu le 22 Juin 2010 de 08h30 à 12h00.

Smartphone – Toulouse

May 25th, 2010 by Valtech France

L’apparition de l’IPhone a secoué le monde des télécoms et accéléré la convergence entre informatique et téléphonie. Nouveau marché, nouveaux enjeux, nouvelles problématiques…face à ce bouleversement les entreprises doivent réagir et s’adapter, le risque de devenir moins « mobile-ready » que ses concurrents s’agrandissant de jour en jour.

Valtech vous propose un éclairage des différentes problématiques et solutions pour entrer de plein pied dans l’ère mobile à travers ce séminaire Smartphone.

Vous souhaitez échanger et poser toutes vos questions à l’équipe Valtech Technology qui a élaboré ce séminaire à partir de cas concrets en entreprises, réservez vite votre place pour cette présentation qui aura lieu le 15 Juin 2010 de 08h30 à 12h00.

Conférence Agile France (ex XP Days) : les sessions Valtech

May 18th, 2010 by Eric Le Merdy

Cette année, les XP Days sont renommés en Conférence Agile France.
Voici les six conférences qui seront animées par des consultants de Valtech:

  1. Commencer petit pour finir grand : L’art de la construction incrémentale
    par Etienne Charignon, le 31 mai à 10h00 résumé>>>

  2. TDR par Robot Framework
    par Maxime Lemanissier, le 31 mai à 14h30 résumé>>>

  3. Scrum Game
    par Yannick Ameur, le 1 juin à 11h30 résumé>>>

  4. Transformation Agile à grande échelle
    par Gilles Mantel, le 1 juin à 14h30 résumé>>>

  5. XP/TDD avec des technologies “legacy”
    par Pascal Ognibene, le 1 juin à 14h30 résumé>>>

  6. Personas : une dose d’expérience utilisateur pour vos projets agiles
    par Jean-Claude Grosjean, le 1 juin à 15h00 résumé>>>

De nombreux autres consultants Valtech seront présents pendant ces deux jours. Nous vous réservons d’ailleurs une petite surprise à l’affiche ;-) .

L’actu .NET de début mai

May 11th, 2010 by Cédric Rup

Quelques liens utiles pour suivre l’actualité de la plateforme .NET et des outils qui l’entourent :

.NET

  • Voici deux vidéos  portant sur ASP.NET MVC prises lors des DevDays 2010 à la Hague :
    • La première est une introduction très didactique insistant sur les mécanismes mis en oeuvre et les différences “philosophiques” par rapport à ASP.NET classique.
    • La deuxième présente des trucs et astuces avancés (notamment basé sur le T4, le générateur de code présent dans Visual Studio depuis la version 2008).

    A visionner pour avoir une meilleure connaissance de ce framework qui monte  et des outils associés, mais également pour les excellentes prestations de l’orateur, Scott Hanselman.

  • Scott Guthrie nous présente l’Extension Manager de Visual Studio 2010, qui permet au développeurs d’enrichir leur environnement de développement en quelques clics, ainsi que les PowerCommands qui proposent quelques raccourcis pratiques.
  • Voici un petit tour d’horizon des outils de build pour la plateforme. Intéressant pour ceux qui sont allergiques à MSBuild !

Beaucoup de nouvelles versions fleurissent en ce début de printemps :

A bientôt pour plus d’actus !

Détecteur d’événements sous Android : l’application BigBrother

May 6th, 2010 by jocelyn.thielois

Le SDK d’Android propose un modèle de composants et des APIs pour gérer différents dispositifs qui font la particularité des plateformes mobiles : connectivité, capteurs, téléphonie, multimédia …
Dans cet article nous allons nous intéresser à la détection d’événements liés à la téléphonie et la géolocalisation.

Un modèle de composants adapté

L’activité est le premier composant essentiel permettant Anatomie de l'applicationde gérer le cycle de vie d’une application et l’interactivité avec l’utilisateur ; mais qu’en est-il lorsqu’on souhaite exécuter un traitement en tâche de fond, qui démarre automatiquement, et qui doit réagir à des événements externes comme un appel téléphonique ? Le framework propose pour cela des composants de type service et receiver qui utilisent des intentions (Intent) pour collaborer.

Les services : pour des traitements en tâche de fond

Le service peut être vu comme une activité à longue durée de vie (potentiellement infinie), en tâche de fond, et privée d’IHM; il est implémenté par une classe qui doit étendre android.app.Service.
Démarrage du service : à la différence d’une activité, l’utilisateur ne dispose pas de raccourci dans son bureau, il faudra donc démarrer le service explicitement de manière programmatique (souvent depuis une activité).
Les services d’une application doivent être déclarés dans son manifeste :

  <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity .../>
    <service android:name=".Service" />
  </application>

Un service peut, comme une activité, enregistrer des écouteurs spécialisés (listeners) pour obtenir des informations sur un capteur particulier, il est alors responsable du désenregistrement des listeners.

Receiver : un déclencheur léger

Le receiver est un composant susceptible de recevoir des intentions exprimées par le système Android ou d’autres applications. Les intentions symbolisent des requêtes (ou souhaits) et sont orchestrées par le framework ; cela offre un cadre simple et générique qui fait penser au style d’architecture REST (ou au Web), et confère un niveau d’abstraction intéressant pour faciliter l’intégration de composants. Read the rest of this entry »