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 Studio Java Discussion :

Android Studio : mon app s'ouvre et se referme aussitôt


Sujet :

Android Studio Java

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Par défaut Android Studio : mon app s'ouvre et se referme aussitôt
    Bonjour,

    Je suis nouveau sur ce site et très peu habitué des forums, veuillez pardonner ma maladresse.
    Je n'ai pas trouvé d'aide suffisante et comme je débute (genre vraiment !) en programmation sur Android Studio, je préfère poser ma question (quitte à être ridicule ^^)

    Voilà j'ai codé une application sur Android Studio qui est censée me donner les relevés de l'accéléromètre, la vitesse et la position (par intégration grossière) de mon smartphone. Cependant quand je run l'application sur mon smartphone, elle s'ouvre et se referme tout de suite. Je ne m'y connais pas du tout dans le fond (mais je connais le C et le C++) donc je n'ai pas vraiment d'idée de l'endroit où je dois chercher pour résoudre ce problème.
    Android Studio ne détecte pas d'erreur ou de warning.

    J'ai déjà fait une application qui donne les données gyroscopique (accéléromètre et magnétomètre) du smartphone, et celle-là fonctionne. Je me demande si ça a un lien avec un "layout_constraint" ou "layout_relative"... (c'est la différence que j'ai remarqué entre mes deux applications..)

    Je glisse le code de mon main_Activity ici et le layout en dessous :

    Code : 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
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    package com.example.gargaud.position;
     
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.icu.text.DecimalFormat;
    import android.os.Build;
    import android.os.Bundle;
    import android.support.annotation.RequiresApi;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.TextView;
     
    import static java.lang.System.currentTimeMillis;
     
     
    public class MainActivity extends AppCompatActivity implements SensorEventListener {
     
     
        private SensorManager SM;
        Sensor accel;
     
        float[] Acc;
        float AccP[] = new float[3];
        long TimeP;
        long Time = currentTimeMillis();
        float Vitesse[] = new float[3];
        float VitP[] = new float[3];
        float Position[] = new float[3];
     
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            SM = (SensorManager)getSystemService(SENSOR_SERVICE);
            accel = SM.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
            AccP = null;
            TimeP = 0;
            Vitesse = null;
            VitP = null;
            Position = null;
        }
     
     
        @RequiresApi(api = Build.VERSION_CODES.N)
        protected void onResume() {
            super.onResume();
            SM.registerListener(this, accel, SensorManager.SENSOR_DELAY_UI);
     
            TextView xText, yText, zText;
            TextView axText, ayText, azText;
            TextView vxText, vyText, vzText;
     
            // Calcul de la vitesse
     
            Vitesse[0] = Vitesse[0] + SimpsonRule.integrate((double)TimeP,(double)Time,AccP[0],Acc[0]);
            Vitesse[1] = Vitesse[1] + SimpsonRule.integrate((double)TimeP,(double)Time,AccP[1],Acc[1]);
            Vitesse[2] = Vitesse[2] + SimpsonRule.integrate((double)TimeP,(double)Time,AccP[2],Acc[2]);
     
            // Calcul de la position
     
            Position[0] = Position[0] + SimpsonRule.integrate((double)TimeP,(double)Time,VitP[0],Vitesse[0]);
            Position[1] = Position[1] + SimpsonRule.integrate((double)TimeP,(double)Time,VitP[1],Vitesse[1]);
            Position[2] = Position[2] + SimpsonRule.integrate((double)TimeP,(double)Time,VitP[2],Vitesse[2]);
     
            // Assigner le text
            xText = (TextView) findViewById(R.id.xText);
            yText = (TextView) findViewById(R.id.yText);
            zText = (TextView) findViewById(R.id.zText);
     
            axText = (TextView) findViewById(R.id.axText);
            ayText = (TextView) findViewById(R.id.ayText);
            azText = (TextView) findViewById(R.id.azText);
            vxText = (TextView) findViewById(R.id.vxText);
            vyText = (TextView) findViewById(R.id.vyText);
            vzText = (TextView) findViewById(R.id.vzText);
     
            DecimalFormat f = new DecimalFormat();
            f.setMaximumFractionDigits(2);
     
            xText.setText(f.format(Position[0]));
            yText.setText(f.format(Position[1]));
            zText.setText(f.format(Position[2]));
     
            axText.setText(f.format(Acc[0]));
            ayText.setText(f.format(Acc[1]));
            azText.setText(f.format(Acc[2]));
            vxText.setText(f.format(Vitesse[0]));
            vyText.setText(f.format(Vitesse[1]));
            vzText.setText(f.format(Vitesse[2]));
        }
     
     
        protected void onPause() {
            super.onPause();
            SM.unregisterListener(this);
            AccP = Acc;
            VitP = Vitesse;
            TimeP = currentTimeMillis();
        }
     
     
        public void onAccuracyChanged(Sensor sensor, int accuracy) {  }
     
     
        public void onSensorChanged(SensorEvent event) {
     
            if (event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION)
                Acc = event.values;
            Time = currentTimeMillis();
        }
     
    }
     
     
    class SimpsonRule {
     
        /**********************************************************************
         * Standard normal distribution density function.
         * Replace with any sufficiently smooth function.
         **********************************************************************/
        /*public static double f(double x) {
            return Math.exp(- x * x / 2) / Math.sqrt(2 * Math.PI);
        }*/
     
        /**********************************************************************
         * Integrate f from a to b using Simpson's rule.
         * Increase N for more precision.
         **********************************************************************/
        public static float integrate(double a, double b, float fa, float fb) {
     
            float h = (float)(b - a);
     
            float sum = (float)0.5*(fa + fb);
     
            /*// 4/3 terms
            for (int i = 1; i < N - 1; i += 2) {
                double x = a + h * i;
                sum += 4.0 / 3.0 * f(x);
            }
     
            // 2/3 terms
            for (int i = 2; i < N - 1; i += 2) {
                double x = a + h * i;
                sum += 2.0 / 3.0 * f(x);
            }*/
     
            return sum * h;
        }
    }
    Code : 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
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingTop="10dp"
        tools:context="com.example.gargaud.position.MainActivity">
     
        <TextView
            android:id="@+id/Accelx"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Acceleration en x :"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="10dp" />
        <TextView
            android:id="@+id/Accely"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Acceleration en y :"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="40dp" />
        <TextView
            android:id="@+id/Accelz"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Acceleration en z :"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="70dp" />
     
        <TextView
            android:id="@+id/axText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/Accelx"
            android:layout_centerHorizontal="true"/>
        <TextView
            android:id="@+id/ayText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/Accely"
            android:layout_centerHorizontal="true"/>
        <TextView
            android:id="@+id/azText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/Accelz"
            android:layout_centerHorizontal="true"/>
     
     
     
     
        <TextView
            android:id="@+id/Vitx"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Vitesse en x :"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="400dp" />
        <TextView
            android:id="@+id/Vity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Vitesse en y :"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="430dp" />
        <TextView
            android:id="@+id/Vitz"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Vitesse en z :"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="460dp" />
     
        <TextView
            android:id="@+id/vxText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/Vitx"
            android:layout_centerHorizontal="true"/>
        <TextView
            android:id="@+id/vyText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/Vity"
            android:layout_centerHorizontal="true"/>
        <TextView
            android:id="@+id/vzText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/Vitz"
            android:layout_centerHorizontal="true"/>
     
     
     
        <TextView
            android:id="@+id/Posx"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Position en x :"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="200dp" />
        <TextView
            android:id="@+id/Posy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Position en y :"
            android:layout_centerVertical="true"
            android:layout_alignParentLeft="true" />
        <TextView
            android:id="@+id/Posz"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Position en z :"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="260dp"/>
     
        <TextView
            android:id="@+id/xText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/Posx"
            android:layout_centerHorizontal="true"/>
        <TextView
            android:id="@+id/yText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/Posy"
            android:layout_centerHorizontal="true"/>
        <TextView
            android:id="@+id/zText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/Posz"
            android:layout_centerHorizontal="true"/>
    </RelativeLayout>
    PS : Veuillez me pardonner si mon Main est en désordre (il va peut-être faire peur à certains ^^).

    Je vous remercie d'avance pour l'aide que vous m'apporterez.

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Si ton application s'ouvre et se ferme, tu dois sans doute avoir un crash, et qui dit crash, dit stacktrace. Tu verras celle-ci dans la fenêtre LogCat de ton IDE.

    Ne manipulant quasiment jamais de tableau, je pense que ton problème vient de leur mise à null dans la méthode onCreate. Tu dois avoir une NullPointerException sur la ligne 56, je pense (ainsi que toutes les suivantes une fois que tu auras corrigé celle-ci).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre très actif Avatar de jmonga
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 175
    Par défaut
    Je peux simplement ajouter à ce Hizin a dit.

    Au niveau de ta déclaration le premier tableau n'a pas de taille.

    les autres tableaux manquent d'initialisation.

    Et tes je ne vois pas ou ils sont remplis

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur mobile iOS / Android
    Inscrit en
    Décembre 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur mobile iOS / Android
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 259
    Par défaut
    Le problème viendrait peut-être dans ta méthode onCreate :

    Tu initialises toutes tes variables à null et donc pas d'allocation, tu as sans doute une erreur de type java.lang.NullPointerException.
    Sois tu supprimes ces initialisations à null dans la méthode onCreate vue que toute tes variables sont tout de même initialisées lors de la déclaration.
    Sois tu les mets à null lors de la déclaration et les initialiser dans la méthode onCreate.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

    N'oubliez pas de consulter les FAQ Swift, Android
    Tutoriel : Développer une application multilingue sous iOS

  5. #5
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Par défaut
    Je vous remercie pour ces réponses. Effectivement, en retirant ces initialisations, l'application se lance. (je pensais qu'il fallait les initialiser à 0 pour éviter que mes variables prennent des valeurs aléatoires, comme c'est le cas en C)

    Jmonga, je n'ai pas saisi ta dernière phrase : "Et tes je ne vois pas ou ils sont remplis".

    Cependant, je ne comprends pas pourquoi les valeurs restent fixées à "0". J'attendais au moins les valeurs de l'accélération... ^^
    Pouvez-vous encore m'aider un peu ?

  6. #6
    Membre très actif Avatar de jmonga
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 175
    Par défaut
    C'est juste que je ne voyais pas comment tu ajoutais tes données dans tes tableaux

Discussions similaires

  1. [Android studio] Mon ImageView pivote seule quand je la mets !
    Par brucebr dans le forum Android Studio
    Réponses: 2
    Dernier message: 17/06/2015, 14h04
  2. Android Studio ne détecte pas mon téléphone
    Par CLeBeR dans le forum Android Studio
    Réponses: 12
    Dernier message: 03/04/2015, 05h15
  3. Quelle base de données pour mon app Android
    Par Emy1992 dans le forum Android
    Réponses: 1
    Dernier message: 15/07/2013, 01h45
  4. Android instance unique de mon app
    Par n2engineer5 dans le forum Android
    Réponses: 9
    Dernier message: 25/04/2012, 09h09
  5. csc.exe qui s'ouvre et se referme aussitôt
    Par dad72 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 28/12/2009, 11h27

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