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 :

Location.getTime() ne fonctionne pas correctement ?


Sujet :

Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 120
    Points : 89
    Points
    89
    Par défaut Location.getTime() ne fonctionne pas correctement ?
    Bonjour,

    Je voudrais vous soumettre un problème que je rencontre avec le getTime() de location, car il me renvoie une date toujours égale à J-1 22h00.

    Comme je ne sais pas où trouver ce paramètre (question posée en début de semaine et restée sans réponse à ce jour), je ne sais pas si c'est ma programmation qui est fausse, où si c'est "normal".

    Ce qui m'embête le plus c'est d'avoir une heure fixe, car cela me bloque dans la suite du développement (et des tests) que je dois faire.

    Je vous mets ci-dessous le code que j'ai réalisé. Notez bien que j'ai mis le minimum qui devrait afficher un getTime(). Une fois que cela marchera je l'optimiserai pour ne pas user trop de batterie, faire appel au Network si le Gps n'est pas dispo, etc ...

    Je vous mets aussi en pièce jointe la totalité de ce mini-projet pour vous éviter d'avoir à tout réécrire et comme çà vous pourrez tester vous même et constater que cela ne marche pas correctement (enfin ce que j'ai fait). La seule chose que je ne vous joint pas c'est l'AVD que vous devrez créer. J'ai choisi de mon coté une AVD avec Nexus One (Target 4.4.2 / Api 19).

    Avant de vous mettre le code ci-après, je vous mets aussi une capture écran pour que vous constatiez par vous même un test que j'ai fait en début de journée (15/08 à 13h00, et pour lequel il me renvoi 14/08 à 22h00). Après le démarrage de l'application, on va dans Eclipse simuler un changement de localisation (Window > Show view > Other > Emulator control) et vous devrier avoir quelque chose qui ressemble à la capture vidéo ci-après :
    Nom : Localisation.Time-TEST001.png
Affichages : 291
Taille : 19,4 Ko

    Code AndroidManifest.xml : 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
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.localisation"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk
            android:minSdkVersion="17"
            android:targetSdkVersion="17" />
     
            <uses-permission 
            android:name="android.permission.INTERNET" />
    	<uses-permission 
    	    android:name="android.permission.ACCESS_FINE_LOCATION" />
    	<uses-permission
    	    android:name="android.permission.ACCESS_COARSE_LOCATION" />
     
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
     
    </manifest>
    Code MainActivity.java : 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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    package com.example.localisation;
     
    import java.sql.Date;
    import java.text.SimpleDateFormat;
    import java.util.Locale;
    import java.util.TimeZone;
     
    import android.app.Activity;
    import android.location.Location;
    import android.location.LocationManager;
    import android.location.LocationListener;
    import android.os.Bundle;
    import android.text.format.DateFormat;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Button;
    import android.widget.TextView;
    import android.view.View;
    import android.view.View.OnClickListener;
     
    public class MainActivity extends Activity implements LocationListener{
     
    	// GpsStatus.Listener, GpsStatus.NmeaListener
     
    	double dLat, dLgt;
     
    	Long lTime;
    	String sTime;
     
    	Date dDate, dTime;
     
    	private LocationManager lm;
     
    	// The minimum distance to change Updates in meters
        private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
     
        // The minimum time between updates in milliseconds
        private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
     
    		btnClick_MainActivity();
    	}
     
    	@Override
    	public void onResume(){
    		super.onResume();
     
    		// Begin by this one
    		TextView tvTrace = (TextView) findViewById(R.id.textView1);
    		tvTrace.setText("We are onResume");
     
    		lm = (LocationManager) getSystemService(LOCATION_SERVICE);
     
    		// A utiliser avec le telephone
    		// lm.requestLocationUpdates(bestLocationProvider, 15000, 100.0f, this);
     
    		// A utiliser avec l'émulateur
    		// lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 4000, 100.0f, this);
    		if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
    			lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 4000, 0, this);
    		}else{
    			tvTrace.setText("onResume: le GPS_PROVIDER n'est pas dispo");
    		}
     
    	}
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
     
    	public void btnClick_MainActivity(){
     
    		Button boutonQ = (Button) findViewById(R.id.btnQuitter);
    		boutonQ.setOnClickListener(new OnClickListener(){
     
    			@Override
    			public void onClick(View v){
    				finish();
    				System.exit(0);
    			}
     
    		});	
     
    		Button boutonI = (Button) findViewById(R.id.btnTime);
    		boutonI.setOnClickListener(new OnClickListener(){
     
    			@Override
    			public void onClick(View v){
    				TextView tvTrace = (TextView) findViewById(R.id.textView1);
    				tvTrace.setText("Time : " + sTime);		
    			}			
    		});	
    	}
     
    	@Override
    	public void onLocationChanged(Location aNewLocation){
     
    		dLat = (double) (aNewLocation.getLatitude());
    		dLgt = (double) (aNewLocation.getLongitude());
    		Long lTime = aNewLocation.getTime();
     
    		dDate = new Date(lTime);
    		SimpleDateFormat mSdf = new SimpleDateFormat("dd:MM:yyyy HH:mm:ss", Locale.FRENCH);
    		// GMT, UTC, CEST, Europe/Paris, GMT+02
    		mSdf.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
    		sTime = mSdf.format(dDate);
     
    		TextView tvTrace = (TextView) findViewById(R.id.textView1);
    		tvTrace.setText("onLocationChanged.sTime : " + sTime.toString());
    	}
     
    	@Override
    	public void onProviderDisabled(String provider){		
    	}
    	@Override
    	public void onProviderEnabled(String provider){		
    	}
    	@Override
    	public void onStatusChanged(String provider, int status, Bundle exras){		
    	}
     
    	@Override
    	public boolean onOptionsItemSelected(MenuItem item) {
    		// Handle action bar item clicks here. The action bar will
    		// automatically handle clicks on the Home/Up button, so long
    		// as you specify a parent activity in AndroidManifest.xml.
    		int id = item.getItemId();
    		if (id == R.id.action_settings) {
    			return true;
    		}
    		return super.onOptionsItemSelected(item);
    	}
    }
    Code Activity_main.xml : 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
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.localisation.MainActivity" >
     
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
     
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Bonjour à tous" />
        </LinearLayout>
     
        <Button
            android:id="@+id/btnTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:text="Time" />
     
        <Button
            android:id="@+id/btnQuitter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/btnTime"
            android:layout_centerHorizontal="true"
            android:text="Quitter" />
     
    </RelativeLayout>
    Code Strings.xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
     
        <string name="app_name">Localisation</string>
        <string name="hello_world">Hello world!</string>
        <string name="action_settings">Settings</string>
        <string name="textView1">Bonjour à tous</string>
        <string name="btnTime">Time</string>
        <string name="btnQuitter">Quitter</string>
     
    </resources>

    Merci par avance à ceux qui prendront le temps de regarder ce problème et de mettre le doigt sur ce que j'aurai mal programmé.

    -- EDIT --
    J'ajoute une capture pour que vous puissiez voir ce que j'ai mis dans l'AVD avec laquelle j'ai fait mes tests.
    Nom : AVD-Settings-362.png
Affichages : 272
Taille : 53,0 Ko
    Fichiers attachés Fichiers attachés
    "En essayant continuellement, on finit par réussir.
    Donc plus ça rate, plus on a de chances que ça marche."

    Les Shadocks

Discussions similaires

  1. Réponses: 18
    Dernier message: 19/04/2007, 17h42
  2. [MySQL] Mon code ne fonctionne pas correctement
    Par bebas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/02/2007, 13h27
  3. [Internet Explorer] window.location.replace ne fonctionne pas
    Par Gat- dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/02/2007, 13h15
  4. Le débogage ne fonctionne pas correctement
    Par BNS dans le forum Visual C++
    Réponses: 4
    Dernier message: 13/07/2006, 13h59
  5. Réponses: 13
    Dernier message: 31/08/2005, 14h03

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