Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur d'execution incomprehensible

Service

Sujet résolu
    13 mai 2013 à 11:54:02

    Salut a toute la communauté SDZ. je suis confronte a une erreur d’exécution que je ne comprends puisque je débute dans le domaine . mon application ne me renvoi pas les coordonnées demandées. voici l'erreur en question :

    [2013-05-13 09:29:29 - MonPremierService] ------------------------------
    [2013-05-13 09:29:29 - MonPremierService] Android Launch!
    [2013-05-13 09:29:29 - MonPremierService] adb is running normally.
    [2013-05-13 09:29:29 - MonPremierService] Performing com.locartion.service.HomeActivity activity launch
    [2013-05-13 09:29:30 - MonPremierService] Automatic Target Mode: launching new emulator with compatible AVD 'andoid'
    [2013-05-13 09:29:30 - MonPremierService] Launching a new emulator with Virtual Device 'andoid'
    [2013-05-13 09:29:40 - Emulator] Failed to create Context 0x3005
    [2013-05-13 09:29:40 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 09:29:40 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 09:29:40 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 09:29:40 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 09:29:40 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 09:29:40 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 09:29:40 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 09:29:40 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 09:29:40 - Emulator] emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.
    [2013-05-13 09:29:43 - MonPremierService] New emulator found: emulator-5554
    [2013-05-13 09:29:43 - MonPremierService] Waiting for HOME ('android.process.acore') to be launched...
    [2013-05-13 09:30:48 - MonPremierService] HOME is up on device 'emulator-5554'
    [2013-05-13 09:30:48 - MonPremierService] Uploading MonPremierService.apk onto device 'emulator-5554'
    [2013-05-13 09:30:59 - MonPremierService] Failed to install MonPremierService.apk on device 'emulator-5554': timeout
    [2013-05-13 09:30:59 - MonPremierService] Launch canceled!
    [2013-05-13 10:08:44 - MonPremierService] ------------------------------
    [2013-05-13 10:08:44 - MonPremierService] Android Launch!
    [2013-05-13 10:08:44 - MonPremierService] adb is running normally.
    [2013-05-13 10:08:44 - MonPremierService] Performing com.locartion.service.HomeActivity activity launch
    [2013-05-13 10:08:45 - MonPremierService] Automatic Target Mode: launching new emulator with compatible AVD 'andoid'
    [2013-05-13 10:08:45 - MonPremierService] Launching a new emulator with Virtual Device 'andoid'
    [2013-05-13 10:08:55 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 10:08:55 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 10:08:55 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 10:08:55 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 10:08:55 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 10:08:55 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 10:08:55 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 10:08:55 - Emulator] Failed to create Context 0x3005
    [2013-05-13 10:08:55 - Emulator] emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.
    [2013-05-13 10:08:55 - Emulator] could not get wglGetExtensionsStringARB
    [2013-05-13 10:08:57 - MonPremierService] New emulator found: emulator-5554
    [2013-05-13 10:08:57 - MonPremierService] Waiting for HOME ('android.process.acore') to be launched...
    [2013-05-13 10:09:42 - MonPremierService] HOME is up on device 'emulator-5554'
    [2013-05-13 10:09:42 - MonPremierService] Uploading MonPremierService.apk onto device 'emulator-5554'
    [2013-05-13 10:09:43 - MonPremierService] Installing MonPremierService.apk...
    [2013-05-13 10:10:02 - MonPremierService] Success!
    [2013-05-13 10:10:03 - MonPremierService] Starting activity com.locartion.service.HomeActivity on device emulator-5554
    [2013-05-13 10:10:06 - MonPremierService] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.locartion.service/.HomeActivity }

    voici le code de ma classe service :

    package com.locartion.service;
    
    import android.app.Service;
    import android.content.Context;
    import android.content.Intent;
    import android.location.Criteria;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.widget.Toast;
    
    
    public class MonPremierService extends Service {
    	
    
    	  Criteria criteria  = null  ;
    	  
    	  
    	 private  LocationManager            locationMgr             = null;
    	 private  LocationListener       onLocationChange    = new LocationListener()
    	 {
    	 @Override
    	 public void onStatusChanged(String provider, int status, Bundle extras)
    	 {
    	 }
    	 
    	@Override
    	 public void onProviderEnabled(String provider)
    	 {
    	 }
    	 
    	@Override
    	 public void onProviderDisabled(String provider)
    	 {
    	 }
    	 
    	@Override
    	 public void onLocationChanged(Location location)
    	 {
    	 
    	 Double latitude = location.getLatitude();
    	 Double longitude = location.getLongitude();
    	 Double altitude = location.getAltitude() ;
    	 Float precision = location.getAccuracy() ;
    	 
    Toast.makeText(getBaseContext(),"Voici les coordonnées de votre téléphone : " +  latitude + "  "   +   longitude,   Toast.LENGTH_LONG).show();
    Toast.makeText(getBaseContext(),"Voici les coordonnes de votre telephone :   " +  altitude + "  "   +   precision , Toast.LENGTH_LONG).show();
    
    
    	 }
    	
    	 };
    	 
    	@Override
    	 public IBinder onBind(Intent arg0)
    	 {
    	 return null;
    	 }
    	 
    	@Override
    	 public void onCreate()
    	 {
    		
    	locationMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    		
    	 criteria = new Criteria() ;
    	 criteria.setAccuracy(Criteria.ACCURACY_FINE) ;
    	 criteria.setAltitudeRequired(true);
    	 criteria.setBearingRequired(true);
    	 criteria.setCostAllowed(false);
    	 criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
    	 criteria.setSpeedRequired(true);
    	 
    	 
    	 locationMgr.requestLocationUpdates(locationMgr.getBestProvider(criteria, true) ,100, 1, onLocationChange);
    	 locationMgr.requestLocationUpdates(locationMgr.getBestProvider(criteria, true), 100, 1,onLocationChange);
    	 super.onCreate();
    	 
    	 }
    	 
    	@Override
    	 public int onStartCommand(Intent intent, int flags, int startId)
    	 {
    	 
    	return super.onStartCommand(intent, flags, startId);
    	 }
    	 
    	@Override
    	 public void onDestroy()
    	 {
    	 super.onDestroy();
    	 locationMgr.removeUpdates(onLocationChange);
    	 }
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
    A Vaincre sans péril on finit par triompher sans gloire  ->  le Cid de corneille
      13 mai 2013 à 12:30:23

      Verifie les permissions dans ton manifest

      <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>
      • Partager sur Facebook
      • Partager sur Twitter
        13 mai 2013 à 13:21:11

        vo

        ici mon fichier Manifest

        <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.locartion.service"
            android:versionCode="1"
            android:versionName="1.0" >
        
            <uses-sdk
                android:minSdkVersion="7"
                android:targetSdkVersion="17" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_GPS" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
        <uses-permission android:name="android.permission.LOCATION" />
        <uses-permission android:name="android.permission.INTERNET"/>
        
            <application
                android:allowBackup="true"
                android:icon="@drawable/ic_launcher"
                android:label="@string/app_name"
                android:theme="@style/AppTheme" >
                <activity
                    android:name="com.locartion.service.HomeActivity"
                    android:label="@string/app_name" >
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN" />
        
                        <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
                </activity>
                 <service android:name="com.locartion.service.MonPremierService"/>
            </application>
        
        
        
        </manifest>
        j'aimerai avoir les coordonnées du téléphone sur l’émulateur

        • Partager sur Facebook
        • Partager sur Twitter
        A Vaincre sans péril on finit par triompher sans gloire  ->  le Cid de corneille
          13 mai 2013 à 14:19:48

          Vo

          ila comment j'ai fait inspires toi en

          public class LocationListenerService extends Service implements LocationListener{
          
          	private static final String LOGTAG = "LocationListenerService";
          	
          	private LocationManager manager;
          	private Location location;
          	private final IBinder binder = new TrackerBinder();
          	
          	// Si on veut stocker toutes les locations : ArrayList<Location> storedLocation = new ArrayList<Location>();
          	
          	private boolean isTracking = false;
          	
          	public Location getLocation(){
          		return location;
          	}
          	
          	
          	@Override
          	public void onCreate(){
          		manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
          		Log.i(LOGTAG, "Tracking Service Running...");
          	}
          	
          	@Override
              public void onDestroy() {
                  manager.removeUpdates(this);
                  Log.i(LOGTAG, "Tracking Service Stopped...");
              }
          	
          	/**
          	 * On commence le tracking
          	 */
          	
          	public void startTracking(){
          		//On verifie si le GPS est allume sinon cela n'a aucun sens
          		if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER))
          			return;
          		Toast.makeText(this, "Debut du tracking", Toast.LENGTH_SHORT).show();
          		manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 0f, this);
          		isTracking = true;
          	}
          	
          	/**
          	 * On stoppe le tracking
          	 */
          	
          	public void stopTracking(){
          		
          		Toast.makeText(this, "Fin du tracking", Toast.LENGTH_SHORT).show();
          		manager.removeUpdates(this);
          		isTracking = false;
          	}
          	
          	public boolean isTracking(){
          		return isTracking;
          	}
          	
          	@Override
          	public IBinder onBind(Intent intent) {
          		// TODO Auto-generated method stub
          		return binder;
          	}
          
          	
          	
          	/**
               * Appelé lorsque l'emplacement a changé.
               *
               * @param location un nouvel emplacement, defini comme un objet Location.
               */
          	
          	@Override
          	public void onLocationChanged(Location location) {
          		// TODO Auto-generated method stub
          		this.location = location;
          	}
          
          	/**
               *  Appelée lors d'un changement d'état de fournisseur. Cette méthode est appelée quand un fournisseur
               *  est incapable de chercher un endroit ou si le fournisseur 
               *  est récemment devenu disponible après une période d'indisponibilité.
               *
               * @param le nom du fournisseur d'emplacement associé à cette mise à jour.
               * 
               * @param status {@link LocationProvider#OUT_OF_SERVICE} si le fournisseur est hors service, 
               * ce qui ne devrait pas changer dans un avenir proche ;{@link LocationProvider#TEMPORARILY_UNAVAILABLE} 
               * si le fournisseur est temporairement indisponible mais devrait être disponible sous peu;
               * et {@link LocationProvider#AVAILABLE} si le fournisseur est actuellement disponible.
               * 
               * @param extras un Bundle option qui contiendra les variables d'état spécifiques du fournisseur.
               *
               */
          	
          	@Override
          	public void onProviderDisabled(String provider) {
          		// TODO Auto-generated method stub
          		location = null;
          	}
          
          	/**
               * Appelé lorsque le prestataire est activé par l'utilisateur.
               *
               * @param provider le nom du fournisseur d'emplacement associé à cette mise à jour.
               */
          	
          	@Override
          	public void onProviderEnabled(String provider) {
          		// TODO Auto-generated method stub
          		
          	}
          
          	/**
               * Appelé lorsque le fournisseur est désactivée par l'utilisateur. 
               * Si requestLocationUpdates est appelée sur un fournisseur déjà désactivé,
               *  cette méthode est appelée immédiatement.
               *
               * @param provider le nom du fournisseur d'emplacement associé à cette mise à jour.
               */
          	
          	
          	@Override
          	public void onStatusChanged(String provider, int status, Bundle extras) {
          		// TODO Auto-generated method stub
          		if(status == LocationProvider.OUT_OF_SERVICE || status == LocationProvider.TEMPORARILY_UNAVAILABLE)
          		{
          			location = null;
          		}
          	}
          
          	/**
          	 * La plupart des développeurs ne vont pas implémenter cette classe directement, 
          	 * en utilisant plutôt l'outil AIDL pour décrire l'interface désirée, 
          	 * présentant qu'elle génère la sous-classe Binder approprié. 
          	 * Vous pouvez, toutefois, tirer directement de Binder pour mettre en œuvre votre propre protocole
          	 * RPC personnalisé ou tout simplement instancier un objet Binder brut directement pour 
          	 * l'utiliser comme un jeton qui peut être partagée entre les processus.
          	 */
          	
          	public class TrackerBinder extends Binder{
          		public LocationListenerService getService(){
          			return LocationListenerService.this;
          		}
          	}
          	
          }
          


          Et dans l'activity

          //onCreate 
          serviceIntent = new Intent(this, LocationListenerService.class);
          		 getApplicationContext().startService(serviceIntent);
          		 getApplicationContext().bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE);
          
          
          @Override
          	public void onStop(){
          		super.onStop();
          		if(listenerService !=null){
          			listenerService.stopTracking();
          			if(!listenerService.isTracking()) {
          	            getApplicationContext().stopService(serviceIntent);
          	        }
          	        getApplicationContext().unbindService(serviceConnection);
          
          		}
                  finish();
          	}
          
          /**
          	 * Interface pour surveiller l'état d'un service applicatif
          	 */
          	
          	private ServiceConnection serviceConnection = new ServiceConnection() {
                  
          		/**
          		 * Appelé lorsque la connexion au service a été mis en place, 
          		 * avec le IBinder du canal de communication au service.
          		 * 
          		 * @param className le ComponentName du service qui a ete connecte 
          		 * @param service Le IBinder du canal de communication du service, 
          		 *        que vous pouvez maintenant faire des appels dessus.
          		 */
          		public void onServiceConnected(ComponentName className, IBinder service) {
                      listenerService = ((LocationListenerService.TrackerBinder)service).getService();
                      listenerService.startTracking();
                     
                  }
          		
          		/**
          		 * Appelé lorsqu'une connexion au service a été perdue. Cela se produit généralement lorsque le
          		 * processus qui héberge le service s'est écrasé ou a été tué. Cela ne supprime pas le 
          		 * ServiceConnection lui-même - cette liaison pour le service restera actif, et vous recevrez un 
          		 * appel au moment où le service est de nouveau en run.
          		 * 
          		 * @param className le ComponentName du service qui a ete deconnecte
          		 */
          		
                  public void onServiceDisconnected(ComponentName className) {
                      listenerService = null;
                  }



          • Partager sur Facebook
          • Partager sur Twitter
            13 mai 2013 à 15:32:54

            Merci . je vais essayer d’épouser ta logique de développement même si je ne suis encore qu'un débutant
            • Partager sur Facebook
            • Partager sur Twitter
            A Vaincre sans péril on finit par triompher sans gloire  ->  le Cid de corneille

            erreur d'execution incomprehensible

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown