Aller au contenu

Actualisation du GPS


Invité

Recommended Posts

Bonjour à tous,

Je suis actuellement en train de développer une petite application (usage privé, ne vous en faites pas une m**** pareille ne verra pas le jour sur le Market), qui me permet de récupérer les valeurs des différents capteurs qui m'intéressent (Accéléromètre, boussole, proximité et GPS). Cependant, j'ai un petit problème avec le GPS dont la valeur ne s'actualise pas sauf quand l'orientation de l'écran change [dans le sens où l'on passe de portrait à paysage et vice-versa] (donc j'imagine que cela relance l'activité, enfin je sais pas, j'imagine que y'a un truc qui change). Bref. Voici mon programme:



package com.pIndus.sensors;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;

public class Sensors extends Activity implements SensorEventListener{

SensorManager sm;
LocationManager lm;
LocationListener ls;
   @Override
   public void onCreate(Bundle savedInstanceState) 
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       sm = (SensorManager) getSystemService(SENSOR_SERVICE);
       lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

       boolean accelSupported = sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_FASTEST);

       if(!accelSupported)
       {
       	sm.unregisterListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));
       	((TextView)findViewById(R.id.acc)).setText("Accéléromètre non disponible");
       }

       boolean compassSupported = sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_FASTEST);

       if(!compassSupported)
       {
       	sm.unregisterListener(this, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION));
       	((TextView)findViewById(R.id.compass)).setText("Boussole non disponible");
       }

       boolean proxySupported = sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_PROXIMITY),SensorManager.SENSOR_DELAY_FASTEST);

       if(!proxySupported)
       {
       	sm.unregisterListener(this, sm.getDefaultSensor(Sensor.TYPE_PROXIMITY));
       	((TextView)findViewById(R.id.proxy)).setText("Capteur de proximité non disponible");
       }

       ls = new MyLocationListener();


       lm.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, ls);

   }

   @Override
   public void onStop()
   {
   	super.onStop();
   	lm.removeUpdates(ls);
   	sm.unregisterListener(this);
   }

   @Override
   public void onPause()
   {
   	super.onStop();
   	lm.removeUpdates(ls);
   	sm.unregisterListener(this);
   }



@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) 
{
	// TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) 
{
	switch(event.sensor.getType())
	{
		case Sensor.TYPE_ACCELEROMETER:
			onAccelChanged(event);
		break;

		case Sensor.TYPE_ORIENTATION:
			onCompassChanged(event);
		break;

		case Sensor.TYPE_PROXIMITY:
			onProxyChanged(event);
		break;	
	}

}

public void onAccelChanged(SensorEvent event)
{
	float aX,aY,aZ;

	aX = event.values[0];
	aY = event.values[1];
	aZ = event.values[2];

    ((TextView)findViewById(R.id.axeX)).setText("Axe X : " + aX);
	((TextView)findViewById(R.id.axeY)).setText("Axe Y : " + aY);
	((TextView)findViewById(R.id.axeZ)).setText("Axe Z : " + aZ);

}

public void onCompassChanged(SensorEvent event)
{
	float azimuth,pitch,roll;

	azimuth = event.values[0];
	pitch = event.values[1];
	roll = event.values[2];

	((TextView)findViewById(R.id.azimuth)).setText("Azimuth : " + azimuth);
	((TextView)findViewById(R.id.pitch)).setText("Pitch : " + pitch);
	((TextView)findViewById(R.id.roll)).setText("Roll : " + roll);
}

public void onProxyChanged(SensorEvent event)
{
	float x;

	x = event.values[0];

	((TextView)findViewById(R.id.prox)).setText("Proximité : " + x);

}

public class MyLocationListener implements LocationListener

{

	@Override
	public void onLocationChanged(Location location) {
		double longitude, lattitude;

		longitude = location.getLongitude();
		lattitude = location.getLatitude();

		((TextView)findViewById(R.id.longi)).setText("Longitude : " + longitude);
		((TextView)findViewById(R.id.latti)).setText("Lattitude : " + lattitude);

		 lm.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, ls);


	}

	@Override
	public void onProviderDisabled(String provider) {

		((TextView)findViewById(R.id.warnGPS)).setText("GPS Desactivé");

	}

	@Override
	public void onProviderEnabled(String provider) {
		((TextView)findViewById(R.id.warnGPS)).setText("GPS Activé");

	}

	@Override
	public void onStatusChanged(String provider, int status, Bundle extras) {
		// TODO Auto-generated method stub

	}

}

}

Vu qu'il n'y a pas d'actualisation, je pense avoir oublié de faire un requestLocationUpdates quelque part, mais je ne vois vraiment pas où... Une idée peut être ?

Merci d'avance et bonne journée !

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...