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 :

MyLocationOverlay : crash sur Samsung Spica


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut MyLocationOverlay : crash sur Samsung Spica
    Bonjour,

    Je suis un développeur débutant sur Android et je dois réaliser une application qui utilise entre autre la géolocalisation.
    Après plusieurs recherches sur le net j'ai trouvé un tutoriel simple, qui utilise les API de Google et en particulier la classe MyLocationOverlay qui permet d'afficher un dot façon Google Maps sur la carte:

    http://blogs.itemis.de/frey/2009/04/...ndroid-part-1/

    L'appli fonctionne correctement sous émulateur (Google API 1.5), en revanche elle crash sur la fonction enableMyLocation() lorsque j'essaye de la faire tourner sur mon Spica (Android 1.5) :

    Citation Envoyé par LogCat
    03-16 11:35:42.903: DEBUG/LocationMasfClient(1850): getNetworkLocation(): Returning cache location with accuracy 75.0
    03-16 11:35:43.478: DEBUG/dalvikvm(5233): GC freed 2449 objects / 177312 bytes in 136ms
    03-16 11:35:43.548: DEBUG/AndroidRuntime(5233): Shutting down VM
    03-16 11:35:43.548: WARN/dalvikvm(5233): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
    03-16 11:35:43.548: ERROR/AndroidRuntime(5233): Uncaught handler: thread main exiting due to uncaught exception
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at com.google.android.maps.MyLocationOverlay.getLocationDot(MyLocationOverlay.java:180)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at com.google.android.maps.MyLocationOverlay.drawMyLocation(MyLocationOverlay.java:561)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at com.google.android.maps.MyLocationOverlay.draw(MyLocationOverlay.java:511)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:45)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at com.google.android.maps.MapView.onDraw(MapView.java:471)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.View.draw(View.java:5838)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.View.draw(View.java:5841)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.widget.FrameLayout.draw(FrameLayout.java:352)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.View.draw(View.java:5841)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.widget.FrameLayout.draw(FrameLayout.java:352)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1898)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewRoot.draw(ViewRoot.java:1217)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.os.Handler.dispatchMessage(Handler.java:99)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.os.Looper.loop(Looper.java:123)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at android.app.ActivityThread.main(ActivityThread.java:3948)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at java.lang.reflect.Method.invokeNative(Native Method)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at java.lang.reflect.Method.invoke(Method.java:521)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): at dalvik.system.NativeStart.main(Native Method)
    Concernant l'état de mon téléphone, la géolocalisation fonctionne correctement sur des applis comme Google Maps.

    Quelqu'un aurait une idée du problème ? Merci d'avance

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut, je dirais que ton problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    at com.google.android.maps.MyLocationOverlay.getLocationDot(MyLocationOverlay.java:180)
    et que cela vient d'une erreur de Cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    03-16 11:35:43.563: ERROR/AndroidRuntime(5233): java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable
    Donc si tu pouvais nous montrer le code de cette méthode, on pourrait t'aider à résoudre le soucis.

    Bon courage

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut
    J'utilise uniquement du code Google tout fait. Le lien de l'API : http://code.google.com/intl/fr-FR/an...nce/index.html -> Class MyLocationOverlay
    J'en déduit que la méthode qui pose problème est private.

    Sinon la seule chose que j'ai changé du tuto en lien plus haut c'est la mapKey qu'il faut obligatoirement personnaliser pour pouvoir utiliser cette API. Mais le problème ne viens pas de la.

    Quelqu'un pourrais essayer de faire tourner cette appli sur un téléphone ? Spica ou autre.

    Merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut
    Après une recherche plus poussée, le problème viendrait du code de Google.
    Sur un forum Motorola un petit malin a proposé de contourner le problème en implémentant la fonction buggée.

    J'ai testé ça marche nickel

  5. #5
    Membre averti
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Bonjour à tous,

    est-ce que l'un de vous peut m'indiquer plus clairement comment contrer ce probleme?

    Je ne suis pas familier completement avec le Java, je ne fais que suivre des tutos et les adapter à ma sauce...

    2. Extend the MyLocationOverlay class and draw method and manually position the icon.

    - Another user has provided a Fixed class that you can implement
    Inside your MyLocationOverlay
    You can put a try catch around the super() call.
    Tout ceci n'est pas facile à comprendre pour un débutant...


    Merci à vous.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Par défaut
    Au lieu d'utiliser la classe MyLocationOverlay dans ton projet, utilise MyFixedLocationOverlay.java proposé en téléchargement sur le forum motorola en lien plus haut (et prend aussi l'image png du nouveau dot tant qu'à faire)

    C'est une extension de la classe original : elle attrape l'exception générée par le bug si il a lieu (grâce au try-catch), et implémente une solution alternative pour redessiner un dot sur ta carte.
    Regarde cette classe pour plus de détail.

    Bon courage

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

Discussions similaires

  1. Crash sur Samsung
    Par Manu0086 dans le forum Android
    Réponses: 1
    Dernier message: 19/06/2013, 10h39
  2. installer jeux java via bluetooth sur samsung
    Par bil_home dans le forum Java ME
    Réponses: 7
    Dernier message: 26/02/2007, 14h55
  3. Réponses: 8
    Dernier message: 06/09/2006, 17h36
  4. Pb d'execution sur Samsung GSHX100
    Par olivier66 dans le forum Java ME
    Réponses: 2
    Dernier message: 25/07/2006, 17h36
  5. [Disques Durs] Prévenir un crash sur un disque dur
    Par Furius dans le forum Composants
    Réponses: 6
    Dernier message: 07/01/2006, 17h04

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