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 :

Exécuter asynctask de façon synchrone ou alors faire une temporisation


Sujet :

Android

  1. #21
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Je reformule : tout le code qui dépend directement du retour de l'asyncTask doit être mis dans populate(). Le reste tu peux le laisser dans onCreate()
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  2. #22
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Je reformule : tout le code qui dépend directement du retour de l'asyncTask doit être mis dans populate(). Le reste tu peux le laisser dans onCreate()
    Oui mais alors quel est l'interet de faire une interface etc.. Alors que faire un retour dans un setter via le onPostExecute nous permettrait d'exécuter la méthode voulu une fois l'async task terminé ...

  3. #23
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Mais le tuto developpez.com n'a jamais parlé d'interface. Ce n'est pas obligatoire.

    Et oui, le setter() dont tu parles c'est populate() !!
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Mais le tuto developpez.com n'a jamais parlé d'interface. Ce n'est pas obligatoire.

    Et oui, le setter() dont tu parles c'est populate() !!
    Au final c'est se que je fais depuis le début.. mais ça m'arrange pas pour faire des test.. tel que stocker les coordonnées dans une liste si l'envoi n'a pas pu se faire...

    Ah peut étre que finalement je peux stocker dans une liste en mettant un try catch dans l'asyncTask et vérifier que si il y a eu une erreur d'envoi alors je stock les coordonnées dans une liste ?

    Ok alors je vais le faire sans interface..

  5. #25
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Mais le tuto developpez.com n'a jamais parlé d'interface. Ce n'est pas obligatoire.

    Et oui, le setter() dont tu parles c'est populate() !!
    J'ai mis tout en place et je m'aperçois que depuis 20 minutes je cherche m'on erreur et je ne sais pas pourquoi mais cela vient de mon Toast --'.

    Je ne comprend pas du tout pourquoi dès lorsqu'il arrive au Toast il crash..

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void setRetourRequetePostIdNum(JSONObject resulta)
        {
            /*try {
                retvalId= resulta.getString("id");
                retvalTel= resulta.getString("tel");
     
            } catch (JSONException e) {
                e.printStackTrace();
            }*/
            Toast.makeText(getApplicationContext(),"ID et Num envoyé", Toast.LENGTH_LONG).show();
        }

  6. #26
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Bizarre. setRetourRequetePostIdNum() est bien une méthode de ta classe Activity ?
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #27
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Bizarre. setRetourRequetePostIdNum() est bien une méthode de ta classe Activity ?
    Oui voici le code du AscynTask :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Override
        public void onPostExecute(JSONObject result) {
            objParent.setRetourRequetePostIdNum(result); //Assigning call back interfacethrough constructor
        }
    et voici l'erreur :
    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
    05-25 20:47:27.191    3034-3050/com.example.iris1.sdrp_top_1 D/OpenGLRenderer﹕ Render dirty regions requested: true
    05-25 20:47:27.210    3034-3034/com.example.iris1.sdrp_top_1 D/﹕ HostConnection::get() New Host Connection established 0xa68b3150, tid 3034
    05-25 20:47:27.304    3034-3034/com.example.iris1.sdrp_top_1 D/Atlas﹕ Validating map...
    05-25 20:47:27.396    3034-3050/com.example.iris1.sdrp_top_1 D/﹕ HostConnection::get() New Host Connection established 0xa68b3630, tid 3050
    05-25 20:47:27.529    3034-3050/com.example.iris1.sdrp_top_1 I/OpenGLRenderer﹕ Initialized EGL, version 1.4
    05-25 20:47:27.547    3034-3050/com.example.iris1.sdrp_top_1 D/OpenGLRenderer﹕ Enabling debug mode 0
    05-25 20:47:27.578    3034-3050/com.example.iris1.sdrp_top_1 W/EGL_emulation﹕ eglSurfaceAttrib not implemented
    05-25 20:47:27.578    3034-3050/com.example.iris1.sdrp_top_1 W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa68aa360, error=EGL_SUCCESS
    05-25 20:47:27.735    3034-3050/com.example.iris1.sdrp_top_1 W/EGL_emulation﹕ eglSurfaceAttrib not implemented
    05-25 20:47:27.735    3034-3050/com.example.iris1.sdrp_top_1 W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa68aa380, error=EGL_SUCCESS
    05-25 20:47:28.109    3034-3034/com.example.iris1.sdrp_top_1 D/AndroidRuntime﹕ Shutting down VM
    05-25 20:47:28.109    3034-3034/com.example.iris1.sdrp_top_1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
        Process: com.example.iris1.sdrp_top_1, PID: 3034
        java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
                at android.widget.Toast.<init>(Toast.java:101)
                at android.widget.Toast.makeText(Toast.java:250)
                at com.example.iris1.sdrp_top_1.MainActivity.setRetourRequetePostIdNum(MainActivity.java:192)
                at com.example.iris1.sdrp_top_1.MyAsyncTaskPostIdNum.onPostExecute(MyAsyncTaskPostIdNum.java:41)
                at com.example.iris1.sdrp_top_1.MyAsyncTaskPostIdNum.onPostExecute(MyAsyncTaskPostIdNum.java:22)
                at android.os.AsyncTask.finish(AsyncTask.java:632)
                at android.os.AsyncTask.access$600(AsyncTask.java:177)
                at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    05-25 20:47:30.672    3034-3034/com.example.iris1.sdrp_top_1 I/Process﹕ Sending signal. PID: 3034 SIG: 9

  8. #28
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Il y a quelque chose que tu ne m'as pas montré dans le code de setRetourRequetePostIdNum(). C'est pas possible autrement...
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  9. #29
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Il y a quelque chose que tu ne m'as pas montré dans le code de setRetourRequetePostIdNum(). C'est pas possible autrement...
    si :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void setRetourRequetePostIdNum(JSONObject resulta)
        {
            /*try {
                retvalId= resulta.getString("id");
                retvalTel= resulta.getString("tel");
     
            } catch (JSONException e) {
                e.printStackTrace();
            }*/
            Toast.makeText(getBaseContext(),"ID et Num envoyé", Toast.LENGTH_LONG).show();
        }

  10. #30
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Essayes this.getApplicationContext() à la place de getBaseContext()
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  11. #31
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Essayes this.getApplicationContext() à la place de getBaseContext()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Toast.makeText(this.getApplicationContext(),"ID et Num envoyé", Toast.LENGTH_LONG).show();
    ça crash...

  12. #32
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Postes le code entier de ton Asyntask et de ton Activity sur le forum stp. Il y a qqchose qui m'échappe
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  13. #33
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Postes le code entier de ton Asyntask et de ton Activity sur le forum stp. Il y a qqchose qui m'échappe
    AsyncTask :

    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
    public class MyAsyncTaskPostIdNum extends AsyncTask<String, JSONObject, JSONObject> {
     
     
        InputStream inputStream = null;
        String result="";
        String adresseUrlPost;
        String responseBody;
        HttpResponse response;
        JSONObject myObject;
        String content;
        MainActivity objParent = new MainActivity();//Call back
     
        public JSONObject doInBackground(String... params) {
            // TODO Auto-generated method stub
            return postData(params[0], params[1]);
        }
     
        @Override
        public void onPostExecute(JSONObject result) {
            objParent.setRetourRequetePostIdNum(result); //Assigning call back interfacethrough constructor
        }
     
        public JSONObject postData(String telephoneP, String mdpP) {
     
            try {
                //Composition de l'adresse url avec la valeur de l'edit text et du num de téléphone récupéré
                adresseUrlPost="http://10.0.2.2:10446/api/PersoSurveille";
     
                // 1. create HttpClient
                HttpClient httpclient = new DefaultHttpClient();
     
                // 2. make POST request to the given URL
                HttpPost httpPost = new HttpPost(adresseUrlPost);
     
                String json = "";
     
                // 3. build jsonObject
                JSONObject jsonObject = new JSONObject();
                jsonObject.accumulate("telephone", telephoneP);
                jsonObject.accumulate("password", mdpP);
     
     
                // 4. convert JSONObject to JSON to String
                json = jsonObject.toString();
     
                // ** Alternative way to convert Person object to JSON string usin Jackson Lib
                // ObjectMapper mapper = new ObjectMapper();
                // json = mapper.writeValueAsString(person);
     
                // 5. set json to StringEntity
                StringEntity se = new StringEntity(json);
     
                // 6. set httpPost Entity
                httpPost.setEntity(se);
     
                // 7. Set some headers to inform server about the type of the content
                httpPost.setHeader("Accept", "application/json");
                httpPost.setHeader("Content-type", "application/json");
     
                // 8. Execute POST request to the given URL
                HttpResponse httpResponse = httpclient.execute(httpPost);
     
                // 9. receive response as inputStream
                inputStream = httpResponse.getEntity().getContent();
     
                // 10. convert inputstream to string
                if (inputStream != null)
                    result = convertInputStreamToString(inputStream);
                else
                    result = "probleme, ne fonctionne pas";
     
            } catch (Exception e) {
                Log.d("InputStream", e.getLocalizedMessage());
            }
            //11. convertion string en JSONObject
            try {
                myObject = new JSONObject(result);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            // 12. return result
            return myObject;
        }
     
        private static String convertInputStreamToString(InputStream inputStream) throws IOException {
            BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
            String line = "";
            String result="";
            int i=0;
     
            while((line = bufferedReader.readLine()) != null)
            {
                result += line;
            }
            inputStream.close();
            return result;
     
        }
    }

    Activity :

    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
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    public class MainActivity extends Activity {
     
        static Intent intent;
     
        //Définition d'un instance de LocationManager
        LocationManager monLocationManager;
     
        //Récupération du fournisseur de contenu GPS
        private String monLocationProvider = LocationManager.GPS_PROVIDER;
     
     
        String[]menutitles;  TypedArray menuIcons;
        // nav drawer title
        private CharSequence mDrawerTitle;
        private CharSequence mTitle;
        private DrawerLayout mDrawerLayout;
        private ListView mDrawerList;
        private ActionBarDrawerToggle mDrawerToggle;
        private List<DescriptionFragment> rowItems;
        private FragmentsAdapte adapter;
     
        TelephonyManager tm;
     
        static String numTel;
        static String date;
        static String valNumResponsable;
     
        static String retval="";
        static String retvalTel="";
        static String retvalId="";
     
     
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
     
            ///////////////////////////////////////////
            /////////// Partie interface /////////////
            //////////////////////////////////////////
            mTitle = mDrawerTitle = getTitle();
            menutitles = getResources().getStringArray(R.array.titles);
            menuIcons = getResources().obtainTypedArray(R.array.icons);
            mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
            mDrawerList = (ListView) findViewById(R.id.slider_list);
     
            rowItems = new ArrayList<DescriptionFragment>();
     
            for (int i = 0; i < menutitles.length; i++) {
                DescriptionFragment items = new DescriptionFragment(menutitles[i], menuIcons.getResourceId(i, -1));
                rowItems.add(items);
            }
     
            menuIcons.recycle();
            adapter = new FragmentsAdapte(getApplicationContext(), rowItems);
            mDrawerList.setAdapter(adapter);
            mDrawerList.setOnItemClickListener(new SlideitemListener());
     
            // enabling action bar app icon and behaving it as toggle button
            //probleme ici
     
            getActionBar().setDisplayHomeAsUpEnabled(true);
     
            getActionBar().setHomeButtonEnabled(true);
     
            //avec ActionBarDrawerToggle version 7
            mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.string.app_name, R.string.app_name){
                public void onDrawerClosed(View view) {
                    getActionBar().setTitle(mTitle);
                    invalidateOptionsMenu();
                }
     
                public void onDrawerOpened(View view) {
                    getActionBar().setTitle(mDrawerTitle);
                    invalidateOptionsMenu();
                }
            };
            mDrawerLayout.setDrawerListener(mDrawerToggle);
            if (savedInstanceState == null) {
                // on first time display view for first nav item
                updateDisplay(0);
            }
            //////////////////////
            // PARTIE INTELIGENTE
            //////////////////////
     
     
            //Recherche du n° de téléphone
            //Récupération du numéro de téléphone lié au smartphone
            tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
            numTel=tm.getLine1Number();
            //Modifie le numéro de téléphone
            numTel=transfoNum(numTel);
     
            /** Récupère le locationManager qui gère la localisation */
            monLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            //Test si le GPS est activé ou non
            verifGPS();
     
            //appel de la fonction dateDuJour
            date = this.dateJour();
     
     
     
        }
        /**
         * Exécuté lorsque l'activité devient visible à l'utilisateur.
         *
         * La fonction onStart() est suivie de la fonction onResume().
         */
        @Override
        protected void onStart() {
            super.onStart();
     
            Toast.makeText(getApplicationContext(),"Start", Toast.LENGTH_LONG).show();
     
            MyAsyncTaskPostIdNum objPostIdNum = new MyAsyncTaskPostIdNum();
            //execution de la requete post pour obtenir l'id et le numéro du repsonsable
            objPostIdNum.execute(numTel, "xxxxx");
     
            // Lance explicitement le service MyService
           // intent = new Intent(this, Service_GPS.class);
            //startService(intent);
     
        }
     
        public void setRetourRequetePost(JSONObject result)
        {
            try {
                retval=result.getString("val");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            Toast.makeText(this.getApplicationContext(),"Coordonnées envoyées", Toast.LENGTH_LONG).show();
        }
     
        public void setRetourRequetePostIdNum(JSONObject resulta)
        {
            /*try {
                retvalId= resulta.getString("id");
                retvalTel= resulta.getString("tel");
     
            } catch (JSONException e) {
                e.printStackTrace();
            }*/
            Toast.makeText(this.getApplicationContext(),"ID et Num envoyé", Toast.LENGTH_LONG).show();
        }
     
        public void verifGPS()
        {
            /** Test si le gps est activé ou non */
            if (!monLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                /** on lance notre activity (qui est une dialog) */
                Intent localIntent = new Intent(this, PermissionGps.class);
                localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(localIntent);
            }
        }
     
        public static String dateJour() {
            // Récupére une instance du Calandrier
            Calendar calendrier = Calendar.getInstance();
     
            SimpleDateFormat fdate = new SimpleDateFormat("yyyy/MM/dd kk:mm:ss");
     
            return ( fdate.format(calendrier.getTime()));
        }
     
        public String transfoNum(String numero)
        {
            //+336 alors
            if (numero.charAt(0)=='+')
            {
                numero=numero.substring(1,12); // num = à num avec  le + en moins
     
            }
            return numero;
        }
     
        public static void miseAjourCoordonnees(Location location)
        {
            Service_GPS.latitude = location.getLatitude();
            Service_GPS.longitude = location.getLongitude();
     
        }
     
        public void envoiSMSAlerte(int message ){
     
            //decoupIDNum = objGet.getval().split(" ");
     
            //Toast affichage num de téléphone récupéré
     
            String Newligne = System.getProperty("line.separator"); // ligne d'espace
            String gps="";
            //Composition du message qui sera envoyé à la personne résponsable
     
            if (message ==0) {
                gps = "Vous recevez une ALERTE du " + tm.getLine1Number() + " ses coordonnées GPS sont : " + Newligne +
                        " Longitude : " + Service_GPS.longitude + Newligne + " Latitude : " + Service_GPS.latitude;
            }
            else if (message == 1)
            {
                gps = "ALERTE !!! "+Newligne+"La personne que vous surveillez qui pour numéro :" + tm.getLine1Number() + " est SORTIE de ça ZONE et " +
                        "ses coordonnées GPS actuelles sont : " + Newligne +
                        " Longitude : " + Service_GPS.longitude + Newligne + " Latitude : " + Service_GPS.latitude;
            }
     
            //Si le numéro est supérieur à 4 caractères et que le message n'est pas vide on lance la procédure d'envoi
            if(tm.getLine1Number().length()>= 4 && gps.length() > 0){
                //Grâce à l'objet de gestion de SMS (SmsManager) que l'on récupère via la méthode static getDefault()
                //On envoie le SMS à l'aide de la méthode sendTextMessage
                SmsManager.getDefault().sendTextMessage(valNumResponsable, null, gps, null, null);
                Toast.makeText(getApplicationContext(), "Message envoyé", Toast.LENGTH_SHORT).show();
     
            }else {
                //On affiche un petit message d'erreur dans un Toast
                Toast.makeText(getApplicationContext(), "Enter le numero et/ou le message", Toast.LENGTH_SHORT).show();
            }
     
        }
        public void clikBtnAlerte(View v)
        {
            //Envoi sms alerte
            envoiSMSAlerte(0);
        }
        public void clikOuSuisJe(View v)
        {
            Uri uri = Uri.parse("geo:"+ Double.toString(Service_GPS.latitude)+","+Double.toString(Service_GPS.longitude));
            startActivity(new Intent(Intent.ACTION_VIEW,uri));
        }
     
        /**
         * Exécuté que l'activité arrêtée via un "stop" redémarre.
         *
         * La fonction onRestart() est suivie de la fonction onStart().
         */
        @Override
        protected void onRestart() {
            super.onRestart();
            Toast.makeText(getApplicationContext(),"Restart", Toast.LENGTH_LONG).show();
     
        }
     
        /**
         * Exécutée a chaque passage en premier plan de l'activité.
         * Ou bien, si l'activité passe à nouveau en premier (si une autre activité était passé en premier plan entre temps).
         *
         * La fonction onResume() est suivie de l'exécution de l'activité.
         */
        @Override
        protected void onResume() {
            super.onResume();
     
            Toast.makeText(getApplicationContext(),"Resume", Toast.LENGTH_LONG).show();
     
        }
     
        /**
         * La fonction onPause() est suivie :
         * - d'un onResume() si l'activité passe à nouveau en premier plan
         * - d'un onStop() si elle devient invisible à l'utilisateur
         *
         * L'exécution de la fonction onPause() doit être rapide,
         * car la prochaine activité ne démarrera pas tant que l'exécution
         * de la fonction onPause() n'est pas terminée.
         */
        @Override
        protected void onPause() {
            super.onPause();
     
            Toast.makeText(getApplicationContext(),"Pause", Toast.LENGTH_LONG).show();
        }
     
        /**
         * La fonction onStop() est exécutée :
         * - lorsque l'activité n'est plus en premier plan
         * - ou bien lorsque l'activité va être détruite
         *
         * Cette fonction est suivie :
         * - de la fonction onRestart() si l'activité passe à nouveau en premier plan
         * - de la fonction onDestroy() lorsque l'activité se termine ou bien lorsque le système décide de l'arrêter
         */
        @Override
        protected void onStop() {
            super.onStop();
     
            Toast.makeText(getApplicationContext(),"Stop", Toast.LENGTH_LONG).show();
     
        }
     
        /**
         * Cette fonction est exécutée lorsque l'activité se termine ou bien lorsque
         * le système décide de l'arrêter.
         *
         * La fonction onCreate() devra à nouveau être exécutée pour obtenir à nouveau l'activité.
         */
        @Override
        protected void onDestroy() {
            super.onDestroy();
     
            Toast.makeText(getApplicationContext(),"Destroy", Toast.LENGTH_LONG).show();
        }
     
     
    //Handling ListView Item click listener
     
    //Create a inner class called SlideitemListener , Inside the MainActivity class ,
    //and override onItemClick method inside this method call updateDisplay()
    //method by passing position as a parameter to it and then inside updateDisplay
    //by knowing  the position clicked ,we are replacing the current fragment with
    //the respective fragment associated with the items of listview .
    //you can find the updateDisplay method inside the MainActivity class .
    class SlideitemListener implements ListView.OnItemClickListener {
     
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {                  updateDisplay(position);
        }
     
    }
        private void updateDisplay(int position) {
            Fragment fragment = null;
            switch (position) {
                case 0:
                    fragment = new HomeFragment();
                    break;
                case 1:
                    fragment = new ParametresFragment();
                    break;
                case 2:
                    fragment = new InfosFragment();
                    break;
                default:
                    break;
            }
            if (fragment != null) {
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
                // update selected item and title, then close the drawer
                setTitle(menutitles[position]);
                mDrawerLayout.closeDrawer(mDrawerList);
            }
            else {
                // error in creating fragment
                Log.e("MainActivity", "Error in creating fragment");
            }
        }
        @Override
        public void setTitle(CharSequence title) {
            mTitle = title;
            //getActionBar().setTitle(mTitle);
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // toggle nav drawer on selecting action bar app icon/title
            if (mDrawerToggle.onOptionsItemSelected(item)) {
                return true;
            }
            // Handle action bar actions click
            switch (item.getItemId()) {
                /*case :
                    R.id.action_settings
                    return true;*/
                default :
                    return super.onOptionsItemSelected(item);
            }
        }
     
        /***   * Called when invalidateOptionsMenu() is triggered   */
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
            // if nav drawer is opened, hide the action items
            boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
            //menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
            return super.onPrepareOptionsMenu(menu);
        }
     
        /**   * When using the ActionBarDrawerToggle, you must call it during   * onPostCreate() and onConfigurationChanged()...   */
        @Override
        protected void onPostCreate(Bundle savedInstanceState) {
            super.onPostCreate(savedInstanceState);
            // Sync the toggle state after onRestoreInstanceState has occurred.
            mDrawerToggle.syncState();    }
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            // Pass any configuration change to the drawer toggles
            mDrawerToggle.onConfigurationChanged(newConfig);
        }
     
    }
    Voila Merci

  14. #34
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    C'est quoi cette bouse ? : MainActivity objParent = new MainActivity();//Call back

    La référence à l'Activity doit être passée à l'AsyncTask via son constructeur. Suit le tuto bordel !
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  15. #35
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    C'est quoi cette bouse ? : MainActivity objParent = new MainActivity();//Call back

    La référence à l'Activity doit être passée à l'AsyncTask via son constructeur. Suit le tuto bordel !
    Merci.

    Désolé mais j'ai du mal à comprendre ça, quand utiliser MainActivity objParent = new MainActivity(); ou MainActivity objParent; puis passer après au constructeur...

  16. #36
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Dans ton Activity, fais ce simple changement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AsyncTaskPostIdNum objPostIdNum = new MyAsyncTaskPostIdNum(this);
    Dans ton AsyncTask, simplifies ce champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MainActivity objParent;
    Et rajoutes ce constructeur où tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public MyAsyncTaskPostIdNum(MainActivity p) {
       this.objParent = p;
    }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  17. #37
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    C'est quoi cette bouse ? : MainActivity objParent = new MainActivity();//Call back

    La référence à l'Activity doit être passée à l'AsyncTask via son constructeur. Suit le tuto bordel !
    et pour celui la qui lui est présent dans mon service et qui doit comporter l'objet de la classe MainActivity je fais comment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objPost = new MyAsyncTaskPost(la il manque le this si j'aurais été dans la mainActivity); // instancier la classe

  18. #38
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Dans ton Activity, fait ce simple changement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AsyncTaskPostIdNum objPostIdNum = new MyAsyncTaskPostIdNum(this);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dans ton AsyncTask, simplifies ce champs :
    MainActivity objParent;

    Et rajoutes ce constructeur où tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public MyAsyncTaskPostIdNum(MainActivity p) {
       this.objParent = p;
    }
    Oui tout ça j'ai fais

    Merci

  19. #39
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2012
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 124
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par mailoy Voir le message
    et pour celui la qui lui est présent dans mon service et qui doit comporter l'objet de la classe MainActivity je fais comment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objPost = new MyAsyncTaskPost(la il manque le this si j'aurais été dans la mainActivity); // instancier la classe
    UP

  20. #40
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Service ? quel service ? tu ne m'as jamais parlé de service jusqu'ici.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

Discussions similaires

  1. Exécuter des requêtes HTTP synchrones
    Par _skip dans le forum Réseau
    Réponses: 2
    Dernier message: 24/02/2011, 16h47
  2. La meilleur façon de faire une recherche ?
    Par Jcpan dans le forum PL/SQL
    Réponses: 21
    Dernier message: 06/10/2008, 10h25
  3. Comment faire une temporisation sous Delphi ?
    Par vodasan dans le forum Langage
    Réponses: 8
    Dernier message: 17/09/2007, 11h29
  4. Petite question sur la façon de faire une sorte de thread
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/05/2007, 23h28
  5. Réponses: 2
    Dernier message: 27/04/2007, 18h29

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