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 :

Tutoriel DVP position géographique


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut Tutoriel DVP position géographique
    Bonsoir,

    comme conseillé dans le thread sur les tutos, je post un message car j'ai un problème avec le tutoriel pour récupérer les positions géographiques.

    Le code :
    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
    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
     
    package noresi.inter;
     
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.widget.Toast;
     
    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapController;
    import com.google.android.maps.MapView;
    import com.google.android.maps.MyLocationOverlay;
     
    public class PositionGeo extends MapActivity implements LocationListener
    {
     
    	private MapView	mapView = null;
    	private LocationManager lm = null;
    	private double lat	= 0;
    	private double lng	= 0;
    	private MapController	mc	= null;
    	private MyLocationOverlay myLocation = new MyLocationOverlay(getApplicationContext(), mapView);
     
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.positiongeographique);          
            mapView = (MapView) this.findViewById(R.id.mapView);
            mapView.setBuiltInZoomControls(true);
     
            lm = (LocationManager) this.getSystemService(LOCATION_SERVICE);
          	lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this);
          	lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, this);
     
          	mc = mapView.getController();
          	mc.setZoom(12);
    	}
     
    	@Override
    	protected boolean isRouteDisplayed()
    	{
    		return false;
    	}
     
    	@Override
    	public boolean onKeyDown(int keyCode, KeyEvent event)
    	{
    		if (keyCode == KeyEvent.KEYCODE_S)
    		{
    			mapView.setSatellite(!mapView.isSatellite());
    			return true;
    		}
    		return super.onKeyDown(keyCode, event);
    	}
     
     
    	public void onLocationChanged(Location location)
    	{
    		lat = location.getLatitude();
    		lng = location.getLongitude();
    		mapView.getOverlays().add(myLocation);
    		myLocation.disableMyLocation();
    		Toast.makeText(getBaseContext(),
    				"Location change to : Latitude = " + lat + " Longitude = " + lng,
    				Toast.LENGTH_SHORT).show();
    		GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
    		mc.animateTo(p);
    		mc.setCenter(p);
    	}
     
     
    	public void onProviderDisabled(String provider)
    	{
    		// TODO Auto-generated method stub
     
    	}
     
     
    	public void onProviderEnabled(String provider)
    	{
    		// TODO Auto-generated method stub
     
    	}
     
     
    	public void onStatusChanged(String provider, int status, Bundle extras)
    	{
    		// TODO Auto-generated method stub
     
    	}
    }
    mon fichier manifest :
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="noresi.inter"
        android:versionCode="1"
        android:versionName="1.0" >
     
     <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10" android:maxSdkVersion="10"/>
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-feature android:name="android.hardware.camera" />
     <uses-feature android:name="android.hardware.camera.autofocus" />
     
        <application
            android:icon="@drawable/cocci_02"
            android:label="@string/app_name" >
            <activity
                android:name=".NoresiActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
     
            </activity>
     
            <activity android:name=".Ecran_creation"></activity>
            <activity android:name=".Ecran_rechercher"></activity>
            <activity android:name=".Ecran_consulter"></activity>
            <activity android:name=".Ecran_visualiser_base"></activity>
            <activity android:name=".JsonParserMainActivity"></activity>
            <activity android:name=".Ecran_recherche"></activity>
            <activity android:name=".PositionGeo"></activity>
            <uses-library android:name="com.google.android.maps"/>
       </application>
     
    </manifest>
    et le message d'erreur (mon vieil ami nullPointerException) :


    06-07 19:38:41.812: E/AndroidRuntime(625): FATAL EXCEPTION: main
    06-07 19:38:41.812: E/AndroidRuntime(625): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{noresi.inter/noresi.inter.PositionGeo}: java.lang.NullPointerException
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.app.ActivityThread.access$600(ActivityThread.java:123)
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.os.Handler.dispatchMessage(Handler.java:99)
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.os.Looper.loop(Looper.java:137)
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.app.ActivityThread.main(ActivityThread.java:4424)
    06-07 19:38:41.812: E/AndroidRuntime(625): at java.lang.reflect.Method.invokeNative(Native Method)
    06-07 19:38:41.812: E/AndroidRuntime(625): at java.lang.reflect.Method.invoke(Method.java:511)
    06-07 19:38:41.812: E/AndroidRuntime(625): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-07 19:38:41.812: E/AndroidRuntime(625): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-07 19:38:41.812: E/AndroidRuntime(625): at dalvik.system.NativeStart.main(Native Method)
    06-07 19:38:41.812: E/AndroidRuntime(625): Caused by: java.lang.NullPointerException
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101)
    06-07 19:38:41.812: E/AndroidRuntime(625): at noresi.inter.PositionGeo.<init>(PositionGeo.java:24)
    06-07 19:38:41.812: E/AndroidRuntime(625): at java.lang.Class.newInstanceImpl(Native Method)
    06-07 19:38:41.812: E/AndroidRuntime(625): at java.lang.Class.newInstance(Class.java:1319)
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
    06-07 19:38:41.812: E/AndroidRuntime(625): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
    06-07 19:38:41.812: E/AndroidRuntime(625): ... 11 more
    Normalement, j'ai bien suivi le tutoriel, j'ai récupéré la clef GMap également donc je sèche un peu la.

    Désolé d'ouvrir un sujet dès que j'ai un problème :s
    J'ai peur d'apprendre que c'est une erreur tout con mais bon.

    Merci

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Les NPE (NullPointerException) sont des erreurs faciles à régler la majeure partie du temps.

    Ton message d'erreur indique qu'elle se trouve :
    at noresi.inter.PositionGeo.<init>(PositionGeo.java:24)
    Ce qui signifie que, à cette ligne là (classe PositionJava, ligne 24), tu as une variable non-initialisée (donc à null) sur laquelle est fait un traitement quelconque. Vérifie donc ce qui se trouve à cette ligne, regarde ce qui est null à l'aide du débuggueur si ça ne te saute pas aux yeux, et tu devrais la résoudre
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private MapView	mapView = null;
    	private LocationManager lm = null;
    	private double lat	= 0;
    	private double lng	= 0;
    	private MapController	mc	= null;
    	private MyLocationOverlay myLocation = new  MyLocationOverlay(getApplicationContext(), mapView);
    A en croire ton code, ta variable mapview est null, ton erreur viens surement de là.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    Effectivement, le mapView semble être un mapView dans le fichier xml.
    J'ai peut être oublié le XML pour l'affichage en fait

    J'essaye de corriger ça et je reviens vous voir. Merci !


    Edit : a première vue, j'ai bien le mapView dans mon XML, je regarderais ça plus en détail cette après midi.

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Il est dans le XML, d'accord, mais est-ce que la variable de ta classe référence ce XML ?
    Actuellement : non.

    Il te suffit de l'initialiser simplement, en faisant un mapView = (MapView) findViewById(R.id.idDeLaMapView);, tu vois l'idée
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    Et pourtant j'ai ça dans mon code ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mapView = (MapView) this.findViewById(R.id.mapView);
    Donc normalement ça devrait être bon, sinon j'aurais une erreur ici qui me dirait qu'il ne connaît pas mapView, non ?

Discussions similaires

  1. Trouver et comparer des positions géographiques
    Par noussa2011 dans le forum Langage
    Réponses: 1
    Dernier message: 19/11/2012, 15h06
  2. Trouver et comparer des positions géographiques
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2012, 12h55
  3. Les futurs tutoriels Java sur DVP ?
    Par Ricky81 dans le forum Débats
    Réponses: 65
    Dernier message: 06/01/2012, 02h33
  4. [MySQL] Recherche de ligne en fonctions de la position géographique
    Par rastacouaire dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 20/05/2009, 11h31

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