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 :

Planifier des "bips" dans le temps


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Enseignant
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Par défaut Planifier des "bips" dans le temps
    Bonjour je cherche à faire une application qui consiste à émettre des bips à des moment déjà déterminés (après 30 sec, puis 1min05, puis 1min38... par exemple) pour effectuer un test VMA (pour ceux qui connaissent).
    A chaque bip s'affiche le palier, la vitesse...

    J'ai deja fait quelque chose, je me doute que ce n'est pas du tout la bonne façon de faire, car cela fonctionne...pendant 10 min, ensuite ça continue à tourner (j'ai bien le chrono qui défile, les paliers qui s'affichent...)mais sans émettre les bip.


    J'ai essayer en utilisant
    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
             new Timer().schedule(new TimerTask() {
                                @Override
                                public void run() { 
                                    ToneGenerator toneGenerator = new ToneGenerator(streamType, volume);
                                    int toneType = ToneGenerator.TONE_DTMF_0;
                                    toneGenerator.startTone(toneType, duree);
     
                                    MainActivity.this.runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
                                            tv_plot.setText(String.valueOf(plot));
                                            tv_palier.setText(String.valueOf(palier));
                                            tv_vitesse.setText(String.valueOf("7 Km/h"));
                                        }}); }
                            }, 23000);//10 sec -> 23 sec
    Après le temps voulu (ici 23 sec) je passe à un new Timer suivant et ainsi de suite

    Pourquoi les bips s’arrentent après 10 min?
    Je suppose qu'il existe une façon beaucoup plus propre de procéder...

    Merci d'avance pour votre aide

    Coach17

    PS: je pense que mon problème vient en partie du fait que je cale chaque bip depuis le lancement du chrono... il faudrait peut être que je cale chaque bip à partir du précédent?

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    J'ai déjà eu des problème avec le timertask (sans trop pouvoir expliquer pourquoi).

    Tu peux essayer avec un handler :

    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
    private Handler myHandler;
    private Runnable myRunnable = new Runnable() {
    @Override
    public void run() {
        // Code à éxécuter de façon périodique
     
        myHandler.postDelayed(this,500); // relancer dans 500ms
        }
    };
     
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myLayout);
     
        myHandler = new Handler();
        myHandler.postDelayed(myRunnable,500); // Déclenche dans 500ms
    }
     
    public void onPause() {
        super.onPause();
        if(myHandler != null)
            myHandler.removeCallbacks(myRunnable); // On arrete le callback
    }
    En gros dans la méthode run() , il te faudra déclencher le "bip" et calculer quand lancer le prochain et insérer la valeur dans myHandler.postDelayed(this,prochainbip);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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