2011-03-23 3 views
0

J'ai une application de travail sur l'émulateur, mais quand j'essaie sur mon téléphone, ce n'est pas le cas. Sur l'émulateur, j'envoyer une position fausse au téléphone et recevoir sans problèmes avec ce code:GPS ne fonctionne pas sur mon téléphone Android

private class GPSListener implements LocationListener{ 
    private ProgressDialog waitingDialog; 
    public GPSListener(Context c) { 
     this.waitingDialog = ProgressDialog.show(c, "", c.getString(R.string.sWaitingMessage), true); 
    } 
    @Override 
    public void onLocationChanged(Location loc){ 
     int longitude = (int) Math.round(loc.getLongitude() * 1000000); 
     int latitude = (int) Math.round(loc.getLatitude() * 1000000); 
     this.waitingDialog.dismiss(); 
     GeoPoint currentLocation = new GeoPoint(latitude, longitude); 
     GPSPosition.this.whenPositionFound(currentLocation); 
    } 
    @Override 
    public void onProviderDisabled(String provider){} 
    @Override 
    public void onProviderEnabled(String provider){} 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) {} 
} 

Cependant, lorsque je tente sur mon téléphone, OnLocationChanged() est jamais appelé. activer la recherche GPS avec ceci:

LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    GPSListener gpsListner = new GPSListener(c); 
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsListner); 

et voici mes journaux, plein de ceci:

03-23 14:04:28.411: VERBOSE/GpsLocationProvider(148): SV count: 0 ephemerisMask: 0 almanacMask: ffffffff 
03-23 14:04:28.411: DEBUG/RPC(148): written RPC packet size: [24] 
03-23 14:04:28.421: DEBUG/RPC(148): read RPC packet 
03-23 14:04:28.431: DEBUG/RPC(148): read RPC packet size: [284] 
03-23 14:04:28.431: VERBOSE/libgps(148): DeferredActionThread pthread_cond_wait returned 
03-23 14:04:28.431: DEBUG/RPC(148): written RPC packet size: [24] 
03-23 14:04:28.431: DEBUG/RPC(148): read RPC packet 
03-23 14:04:28.431: DEBUG/RPC(148): read RPC packet size: [284] 
03-23 14:04:28.431: VERBOSE/libgps(148): DeferredActionThread pthread_cond_wait returned 
03-23 14:04:28.431: DEBUG/RPC(148): written RPC packet size: [24] 
03-23 14:04:28.441: DEBUG/RPC(148): read RPC packet 
03-23 14:04:28.441: DEBUG/RPC(148): read RPC packet size: [284] 
03-23 14:04:28.441: VERBOSE/libgps(148): DeferredActionThread pthread_cond_wait returned 
03-23 14:04:28.441: DEBUG/RPC(148): written RPC packet size: [24] 
03-23 14:04:28.451: DEBUG/RPC(148): read RPC packet 
03-23 14:04:28.451: DEBUG/RPC(148): read RPC packet size: [284] 

Qu'est-ce que je fais mal? J'ai essayé à l'intérieur/dehors, Google Map me trouve très bien et rapidement même dans ma maison.

+1

Le GPS est-il activé sur l'appareil? –

+0

oui, le signal se déclenche sur la "barre supérieure" comme sur l'émulateur lorsque j'envoie un emplacement fictif. Le GPS fonctionne très bien avec mon téléphone sur google maps. – Swan

+0

Avez-vous essayé avec un critère? parce que peut-être le dernier LocationProvider était un autre que votre GPS. – papachan

Répondre

0

La détection correcte des coordonnées GPS est toujours un problème dans Android. Après avoir essayé beaucoup de choses, j'ai finalement vu comment le Android camera app intégrait les coordonnées dans l'image cliquée. La meilleure chose à faire est de vous inscrire à la fois pour NETWORK_PROVIDER et GPS_PROVIDER et garder minDistance à 0 lorsque vous demandez des mises à jour de localisation.

Cela prend généralement du temps pour obtenir une position GPS, donc si quelque chose dans votre activité dépend de l'emplacement, vérifiez par exemple un emplacement toutes les 250ms. Pour obtenir l'emplacement, vérifiez d'abord si vous avez un correctif du GPS et ensuite du fournisseur de réseau.

Questions connexes