Dans ce tuto je vais utiliser l’api de Wikitude pour développer ma propre application de réalité augmentée. Cette application de réalité augmentée affichera des lieux à visiter avec des définitions prises sur wikipedia.
D’abord, télécharger l’api de test wikitude ici et dézipper le. Créer votre projet dans eclipse et importer votre librairie. Pour cela dans propriété du projet sélectionner->Jaba build Path-> onglet Librairie ->Add external Jars.
Dans mon interface xml je crée un bouton de lancement de mon application de réalité augmentée.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button android:text="lancement"
android:id="@+id/Button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout> |
Dans la méthode oncreate de mon application, je lance mon inten de réalité augmentée avec ma méthode startARViewBasic()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button) findViewById(R.id.Button1);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// je lance mon inten de réalité augmenté
startARViewBasic();
}
});
} |
Pour ouvrir mon client de réalité augmentée je procède en 3 méthodes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | /**
* j'ouvre ma vue réalité augmenté
**/
private void startARViewBasic() {
// Creation d'un intent basic AR
WikitudeARIntent intent = prepareIntent();
// Titre de mon applicaiton
intent.addTitleText("Ma AR application");
// lancement de mon activity
try {
lecontext.startActivity(intent);
}
// erreur si l'application wikitude n'est pas installer sur votre téléphone
catch (ActivityNotFoundException e) {
Toast.makeText(this, "Rien trouvé "+e.getMessage(),
Toast.LENGTH_SHORT).show();
email.setText(e.getMessage()+"/"+intent.toString());
//intent.toString()
}
} |
la méthode prepareIntent() qui collectionne les POI( point à afficher dans mon application AR)
1 2 3 4 5 6 7 8 9 10 11 12 13 | /**
* prepares a Wikitude AR Intent (e.g. adds the POIs to the view)
*
* @return the prepared intent
*/
private WikitudeARIntent prepareIntent() {
// create the intent
WikitudeARIntent intent = new WikitudeARIntent(this.getApplication(),
null, null);
//add the POIs
this.addPois(intent);
return intent;
} |
Et la dernière méthode addPois la plus intéressante, est celle dans laquelle je vais renseigner nos différentes positions cartographiques que je récupère sur Google Maps.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | /**
* adds hard-coded POIs to the intent
*
* @param intent
* the intent
*/
private void addPois(WikitudeARIntent intent) {
// mon point 1 le castillet de perpignan
WikitudePOI poi1 = new WikitudePOI(42.700664, 2.894377, 1, "Castillet Perpignan",
"Le Castillet ou Castellet (en catalan) est un monument de la ville de Perpignan qui fut tour à tour porte de la ville et prison d'Etat. Aujourd'hui il abrite le Musée Catalan des Arts et Traditions Populaires (La Casa Pairal).");
// mon point 2 le palais de rois de marjorque à perpignan
WikitudePOI poi2 = new WikitudePOI(
42.697532,
2.893424,
1,
"Palais des Rois de Majorque",
"e palais des Rois de Majorque est un palais-forteresse de style gothique situé à Perpignan. Cet édifice fut achevé en 1309");
// mon point 3 la cas musicale a perpignan
WikitudePOI poi3 = new WikitudePOI(
42.699128,
2.90019,
1,
"Casa Musicale",
"La Casa musicale, est un espace entièrement dédié à la pratique de la musique et de la danse sous toutes ses formes.");
// mon point 5 le musée de tautavel dans les PO
WikitudePOI poi4 = new WikitudePOI(
42.843046,
2.750473,
1,
"Musée de Tautavel",
"Inauguré en 1992, le nouveau Musée de Tautavel, Centre Européen de Préhistoire, est un formidable outil au service de la vulgarisation des sciences rattachées à l'archéologie et particulièrement à la préhistoire sur les périodes du quaternaire méditerranéen");
//ma collection de point
Collection<WikitudePOI> pois = new ArrayList<WikitudePOI>();
pois.add(poi1);
pois.add(poi2);
pois.add(poi3);
pois.add(poi4);
intent.addPOIs(pois);
} |
N’oubliez pas d’installer d’abord l’application wikitude sur votre téléphone.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | package org.com.projetar;
import java.util.ArrayList;
import java.util.Collection;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import org.openintents.intents.WikitudeARIntent;
import org.openintents.intents.WikitudePOI;
public class ProjetAR extends Activity {
private TextView email;
Context lecontext = this;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button) findViewById(R.id.Button1);
email = (TextView) findViewById(R.id.mail);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startARViewBasic();
}
});
}
/**
* starts the basic AR view
**/
private void startARViewBasic() {
// Create the basic intent
WikitudeARIntent intent = prepareIntent();
// Optionally add a title
intent.addTitleText("My first AR application");
// And launch the intent
try {
lecontext.startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "Rien trouvé "+e.getMessage(),
Toast.LENGTH_SHORT).show();
email.setText(e.getMessage()+"/"+intent.toString());
//intent.toString()
}
}
/**
* prepares a Wikitude AR Intent (e.g. adds the POIs to the view)
*
* @return the prepared intent
*/
private WikitudeARIntent prepareIntent() {
// create the intent
WikitudeARIntent intent = new WikitudeARIntent(this.getApplication(),
null, null);
//add the POIs
this.addPois(intent);
return intent;
}
/**
* adds hard-coded POIs to the intent
*
* @param intent
* the intent
*/
private void addPois(WikitudeARIntent intent) {
WikitudePOI poi1 = new WikitudePOI(42.700664, 2.894377, 1, "Castillet Perpignan",
"Le Castillet ou Castellet (en catalan) est un monument de la ville de Perpignan qui fut tour à tour porte de la ville et prison d'Etat. Aujourd'hui il abrite le Musée Catalan des Arts et Traditions Populaires (La Casa Pairal).");
WikitudePOI poi2 = new WikitudePOI(
42.697532,
2.893424,
1,
"Palais des Rois de Majorque",
"e palais des Rois de Majorque est un palais-forteresse de style gothique situé à Perpignan. Cet édifice fut achevé en 1309");
WikitudePOI poi3 = new WikitudePOI(
42.699128,
2.90019,
1,
"Casa Musicale",
"La Casa musicale, est un espace entièrement dédié à la pratique de la musique et de la danse sous toutes ses formes.");
WikitudePOI poi4 = new WikitudePOI(
42.843046,
2.750473,
1,
"Musée de Tautavel",
"Inauguré en 1992, le nouveau Musée de Tautavel, Centre Européen de Préhistoire, est un formidable outil au service de la vulgarisation des sciences rattachées à l'archéologie et particulièrement à la préhistoire sur les périodes du quaternaire méditerranéen");
Collection<WikitudePOI> pois = new ArrayList<WikitudePOI>();
pois.add(poi1);
pois.add(poi2);
pois.add(poi3);
pois.add(poi4);
intent.addPOIs(pois);
}
} |
.
Il est temps de mettre à profit les tutoriels d’Android France:
Passez à la vitesse supérieure et investissez quelques dizaines d’euros pour acquérir les connaissances qui vous feront gagner de l’argent avec vos applications rendez-vous sur notre boutique Android-france pour ces formations en vidéo





















03 novembre 2009 à 17 h 21 min
Bonjour,
Dans votre exemple, est ce que les hard-coded POIs se retrouvent au final dans la base communautaire ou est ce que qu’il ne servent qu’à l’affichage en local sur le telephone?
Merci
03 novembre 2009 à 17 h 35 min
@Vincent Madelain je pense qu’il reste en local sur le téléphone
08 novembre 2009 à 15 h 36 min
Bonjour,
en regardant votre code, je me suis aperçu que vous avez oublier de mentionner une partie du code :
dans la déclaration des variables globales il y a “private TextView email;”
vous l’implémentez dans la méthode “void onCreate (…)” par la ligne
” email = (TextView) findViewById(R.id.mail);”.
Comment définit on la méthode “mail” dans le code xml.
C’est vrai que je peux tout aussi bien me passer de cette méthode, car je vois pas la suite qu’elle ne sert que lorsque Wikitude n’est pas installé, mais c’est aussi par curiosité que je vous pose cette question.
Merci d’avance
Samuel
09 novembre 2009 à 8 h 43 min
@samuel pineau pour le moment dans se code elle ne sert à rien
09 novembre 2009 à 16 h 10 min
Bonjour,
Une fois mon application développée en suivant ce tutoriel, j’ai, en cliquant sur le bouton “lancement” crée, le message d’erreur suivant : “Désolé ! Fermeture soudaine de l’application projetar (du processus org.com.projetar). Merci de réessayer.”
J’ai pourtant suivi ce tutoriel avec attention et il ne me semble pas avoir commis d’erreur, pourrais-je avoir de l’aide à ce sujet ?
Merci d’avance.
09 novembre 2009 à 16 h 13 min
@Romain est ce que tu as installé sur ton téléphone l’application wikitude
09 novembre 2009 à 16 h 31 min
Alors non, car j’ai aussi eu une erreur en essayant d’installer Wikitude (la suivante : “Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY]“).
Parallèlement à cette erreur, je voulais avancer sur ce tutoriel tout en sachant que je serais forcément bloqué tôt ou tard mais je pensais que j’aurais eu l’erreur de ce code :
catch (ActivityNotFoundException e) {
Toast.makeText(this, “Rien trouvé “+e.getMessage(),
Toast.LENGTH_SHORT).show();
email.setText(e.getMessage()+”/”+intent.toString());
//intent.toString()
}
Quoi qu’il en soit je suis bloqué et je ne sais vers quelle direction chercher.
Merci de ton aide.
10 novembre 2009 à 9 h 44 min
Voilà, j’ai pu corriger mon erreur précédente. Cette fois l’erreur est la suivante lors du lancement de l’application :
“Rien trouvé No Activity found to handle Intent { act=org.openIntents.action.AR_VIEW (has extras) }
Cela est bien plus proche de l’erreur que j’attendais dû à l’absence de Wikitude. Je vais, cette fois, chercher à corriger mon erreur lors de cette installation.
Merci.
16 novembre 2009 à 13 h 54 min
J’ai tester ça marche. Par contre je sais pas si c’est l’application, mais c’est archi archi lent sur mon HTC Magic. S’en ai même pas utilisable contrairement à Layar.
Dommage, j’attendrai une nouvelle version avant de m’y mettre.
19 janvier 2010 à 16 h 45 min
Bonjour,
J’ai pu développer ma propre application de réalité augmentée avec l’API Wikitude et grâce à ce tutoriel.
Cependant, je me demandais s’il était possible de supprimer l’inscription “Beta” à l’écran et jusqu’à quel point cette API était exploitable ? J’entends par cette question quelles sont les fonctionnalités offertes par cette API en dehors de cette possibilité de hard-codage des POI ? Est-il possible d’effectuer des appels vers une base de données privée, par exemple ?
19 janvier 2010 à 17 h 13 min
@Romain pour enlever l’inscription beta il faudrait contacter wikitude quite fournira une api et toutes les fonctionnalités supplementaires pour une utilisation en production.
07 février 2010 à 21 h 10 min
Bonjour,
J’aimerais savoir comment vous avez fait pour installer Wikitude sur l’émulateur ?
Car j’ai la même erreur que Romain, c’est à dire : « Rien trouvé No Activity found to handle Intent { act=org.openIntents.action.AR_VIEW (has extras) }
Merci !
07 février 2010 à 21 h 47 min
Salut,
Au risque de te décevoir, personnellement, je n’ai toujours pas résolu ce problème avec l’émulateur. J’ai fini par créer mon application de réalité augmentée basée sur l’API Wikitude, sur un HTC Dream (G1) (sous Android 1.5) et le résultat est tout à fait satisfaisant.
De plus, créer une application de ce type sur l’émulateur n’est pas vraiment probant étant donné que tu n’as pas, de base sur l’émulateur, la gestion de la caméra et du positionnement GPS.
En espérant que tu réussisses tout de même à résoudre ton problème et répondre à tes besoins.
08 février 2010 à 13 h 04 min
Le positonnement GPS se fait avec telnet et geo fix
Moi j’installe des Wikitude sur l’émulateur mais soit il trouve pas la classe comme ci-dessus, soit il me dit de le mettre à jour… !
Je vais tenter de poursuivre ou je vais me tourner vers Layar.
08 février 2010 à 13 h 27 min
Si quelqu’un peut m’éclairer sur un point avec Layar. Si j’ai bien compris pour développer avec Layar, il faut créer un webservice répondant avec nos POI et rajouter cette couche sur Layar ?
Ensuite si la couche est approuvée, celle-ci est mise sur le réseau Layar et accessible depuis les clients finaux avec Layar.
Mais comment les développeurs sont ils rémunérés ? Ne peut on pas faire son propre Layar pour faire son produit avec sa couche de AR ?
09 février 2010 à 0 h 34 min
@Romain
As tu trouvé un moyen pour forcer l’utilisateur à installer Wikimedia dans ton application ?
16 février 2010 à 17 h 47 min
Bonjour,
Développant une API sur Wikitude 4, je prépare une liste de POIs que je personnalise avant le lancement de Wikitude. Tous sont bien pris en compte. Mon problème se situe au niveau de l’actualisation de ces POIs. Les méthodes intent.addPOI() ou intent.removePOI() ne semble avoir aucun effet une fois Wikitude lancé. Ma question : Existe-t-il une méthode pour rafraichir les POIs ?
Merci.
12 avril 2010 à 18 h 17 min
bonjour a à tous.
je pense qu’avec les spécialistes qu’il y a dans ce post , vous pourrez m’aider si vous si le voulez.
voila je vois que par mal de personne s’interressé à la création PUR ET DUR d’un appli basé sur une api et donc soumis ensuite à l’approbation d’APPLE,si j’ai bien compris.
pour ma part j’ai juste besoin de créer un calque(je pense utilisé WIKITUDE qui est aussi compatible avec le 3 G contrairement à LAYAR)j’ai quasiment réussi en créant un fichier KML sur google earth qui regroupe les POI mais je ne vois pas comment ajouter a ces points les info pour le lien “WWW” et “I” ou créer un lien vers une Video.c’est si simple ave wikitude .ME..
merci beaucoup d’avance car c’zst trés urgent et vous aiderez un jeune entrepreneur
07 mai 2010 à 17 h 20 min
Bonjour,
J’ai cette erreur lorsque je veux installer une appli sur l’emulateur :
Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY]
Quelqu’un peut m’aider ?
Merci d’avance,
Stéphane
07 mai 2010 à 17 h 31 min
@sluce as tu installé l’application wikitude
07 mai 2010 à 17 h 42 min
Non c’est une autre application que quelqu’un m’a passé et qui tourne pour lui.
Je me suis permis de poster ici car c’est le seul article qui ressort sur Google avec cette erreur. Désolé si je suis un peu hors sujet mais ça fais 2 jours que je suis bloqué
18 juin 2010 à 12 h 42 min
bonjour
voila je veux installer wikitude sur mon tel mais quand je télécharge l api sur wikitude.org et je dizipe il ya erreur
je bloque comment faire ??merciiiiiiiiiiiiii
09 mai 2011 à 16 h 32 min
Bonjour,
Après avoir suivi ce tuto à la règle et après son implémentation sur mon téléphone je reçois le message:
l’application n’est pas installé sur votre téléphone (ce qui est faux).
Je pense que cela est dû à une erreur de “permission”. voici la ligne en lien direct avec mon erreur selon moi…
ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0×10000000 cmp=appli.wikitude.test/.wiki } from null (pid=12826, uid=2000) requires null
Quelqu’un pourrait – il m’aider au plus vite SVP ???
09 mai 2011 à 16 h 37 min
@AlexKid tu a mis les bonnes autorisation fichier manifest dans ton application accès internet,accès à la caméra etc ..
10 mai 2011 à 10 h 43 min
Bonjour,
J’ai réussi à fixer le problème. Merci Guy pour le conseil.
J’ai maintenant une autre question.
Apres avoir demandé sur le site de wikitude une clé pour enlevé le BETA WIKITUDE, l’appli m’indique que ma clé est mauvaise alors que non ! Doit on attendre un certain délai avant de pouvoir voir son univers ?
07 juin 2011 à 0 h 24 min
Est ce qu’il y’a un moyen quelconque de testé l’exemple sans android. Avec le tollkit par exemple ?