IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

réalité augmenté en mode paysage


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Par défaut réalité augmenté en mode paysage
    Bonjours a tous,

    je travail en ce moment sur une application de réalité augmentée et j'ai un problème avec l'utilisation de la caméra en mode landscape.

    en fait, lorsque je met l'application en mode portrait, j'ai bien les pois qui se dessinent bien et qui défilent en fonction de l'orientation du téléphone.

    par contre lorsque je passe en mode landscape, j'ai les pois quisortent du milieu de l'écran, et du coup ca crée un comportement bizarre.

    voici le code de ma méthode onDraw():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    @Override
    	protected void onDraw(Canvas canvas) {
     
    		for (int i = 0; i < Pois.size(); i++) {
    			data = Pois.get(i);
    			float customDistance = (float) (data.getDistance()*0.001);
    			float angle2 = CalculAngle.getAngle(MyLocationListener.getInstance(context).getLatitude(), 
    							MyLocationListener.getInstance(context).getLongitude(), data.getLat(), data.getLon());
     
    			if(angle<angle2 && angle2>0){
     
    				float left = (angle2-angle)*canvas.getWidth()/angle;
    				float top = canvas.getWidth()/(2*customDistance);
     
    				data.setPoiX((int)left);
    				data.setPoiY((int)top);
     
    				canvas.drawBitmap(imagePoi,left,top, p);
     
    	}
     
    		super.onDraw(canvas);
    	}

    si quelqu'un aurait une idée ca m'arrangerai car je suis vraiment bloqué.
    merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 57
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float top = canvas.getWidth()/(2*customDistance);
    Est-ce que Tu peux essayer avec canvas.getHeight()...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Par défaut
    Merci pour ta réponse, mais j'ai également testé avec ce que tu m'a proposé et ça fait toujours la même problème.

    Je ne vois vraiment pas d'où ça peut venir!!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 57
    Par défaut
    j'ai les pois quisortent du milieu de l'écran, et du coup ca crée un comportement bizarre.
    tu peux expliquer plus la phrase: Comportement bizarre.

    Attention:
    angle2 est différent en mode Landscape et Portrait

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Par défaut
    concernant le comportement bizarre, j'ai joint une capture du device pour mieux comprendre.
    en fait j'ai l'impression qu'il y'a une partie de l'écran qui ne se rafraichit pas.

    je te remercie d'être intéressé.
    Images attachées Images attachées  

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Par défaut
    bonjour,

    finalement j'ai trouvé la solution pour ce problème fou.
    en fait il faut tout simplement appelé l méthode invalidate() a la fin de méthode onDraw().

    voici le code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	@Override
    	protected void onDraw(Canvas canvas) {
     
     
    		for (int i = 0; i < Pois.size(); i++) {
    			data = Pois.get(i);
    			float customDistance = (float) (data.getDistance()*0.001);
    			float angle2 = CalculAngle.getAngle(MyLocationListener.getInstance(context).getLatitude(), 
    							MyLocationListener.getInstance(context).getLongitude(), data.getLat(), data.getLon());
     
    			if(angle<angle2 && angle2>0){
    				WindowManager w = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
     
    				Display d = w.getDefaultDisplay();
    				int width = d.getWidth();
    				int height = d.getHeight();
     
    				float left = (angle2-angle)*height/angle;
    				float top = width/(2*customDistance);
     
    				data.setPoiX((int)left);
    				data.setPoiY((int)top);
     
    				canvas.drawBitmap(imagePoi,left,top, p);
    				p.setTextSize((float) 9.5);
    				p.setStyle(Style.STROKE);
     
    				if(data.getTitle().length() < 17){
    					//canvas.drawText(data.getTitle(), left+35, canvas.getWidth()/(2*customDistance)+107, p);
    				}
     
    				else if(data.getTitle().length() > 21){
    					//canvas.drawText(data.getTitle(), left+10, canvas.getWidth()/(2*customDistance)+107, p);
    				}
     
    				else
    					//canvas.drawText(data.getTitle(), left+20, canvas.getWidth()/(2*customDistance)+107, p);
    //				if(data.getTitle().length() > 19){
    //					String custumTitle = data.getTitle().substring(0,16);
    //					canvas.drawText(custumTitle+"..", left, canvas.getWidth()/(2*customDistance)+75, p);
    //				}
    //				else
    //				canvas.drawText(data.getTitle(), left, canvas.getWidth()/2+75, p);
     
    				if(customDistance>1){
    					//canvas.drawText(" "+customDistance+"Km", left+50, canvas.getWidth()/(2*customDistance)+115 ,p);
    				}
    				//else
    					//canvas.drawText(" "+data.getDistance()+"m", left+50, canvas.getWidth()/(2*customDistance)+115 ,p);
     
    				canvas.save();
    				invalidate();
    			}
    		}
    merci encore maydenec.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Imprimer une page en mode paysage
    Par twizell dans le forum ASP
    Réponses: 2
    Dernier message: 13/09/2005, 22h01
  2. [REPORT 6] Impression en mode paysage
    Par anaon dans le forum Oracle
    Réponses: 2
    Dernier message: 31/08/2005, 01h01
  3. [CSS] Impression en mode paysage
    Par joquetino dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 25/08/2005, 11h54
  4. Mode paysage !!
    Par Shandler dans le forum MFC
    Réponses: 2
    Dernier message: 05/04/2005, 21h54
  5. imprimer fichier en mode paysage
    Par Le Veilleur dans le forum C++Builder
    Réponses: 13
    Dernier message: 10/02/2005, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo