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

Java ME Discussion :

Problème audio J2me


Sujet :

Java ME

  1. #1
    Membre confirmé
    Profil pro
    Administrateur réseau
    Inscrit en
    Mai 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur réseau

    Informations forums :
    Inscription : Mai 2009
    Messages : 58
    Par défaut Problème audio J2me
    Bonjour,

    Dans mon application je souhaite intégrer du contenu audio lors des différentes actions utilisateurs. Le problème c'est que dorénavant, l'application est grandement ralentit par la production des sons. J'ai réduit au maximum la taille des fichiers audio et utilisé un thread pour les jouer mais il y a toujours des ralentissements.

    Si quelqu'un pourrait m'aider car je bloque depuis un moment dessus merci.

    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
     
    public ConteneurJeu(int level) {
     
            Thread sonMissile = new Thread();
            sonMissile.start();
            ...
        }
     
    public void test() {
     
            try {
     
            InputStream inexpl = getClass().getResourceAsStream("/Audio/Explosion.wav");  // pour stocker le flux audio pour la destruction de monstre
            // récupération du son lors de la destruction d'un monstre
            player = Manager.createPlayer(inexpl, "audio/x-wav");
            player.prefetch();
            player.start();
     
     
            }
            catch (IOException ex) {
                ex.printStackTrace();
            } catch (MediaException ex) {
                ex.printStackTrace();
            }       
        }
     
     
         public void test2() {
     
           try {
     
            InputStream inmiss = getClass().getResourceAsStream("/Audio/Missile.wav");  // pour stocker le flux audio pour l'envoi de missile;
            // récupération du son lors d'un tire de missile
            player2 = Manager.createPlayer(inmiss, "audio/x-wav");
            player2.prefetch();
            //player2.realize();
            player2.start();
     
     
            }
            catch (IOException ex) {
                ex.printStackTrace();
            } catch (MediaException ex) {
                ex.printStackTrace();
            }
     
     
        }
     
    public void run() {
     
     
            if (j == 1){
     
                test2();
     
            }else {
     
                test();
            }
     
     
        }
     
    case KEY_NUM5:
                    ....
                    j = 1;
     
                    run();
                    ....

  2. #2
    Membre confirmé
    Profil pro
    Administrateur réseau
    Inscrit en
    Mai 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur réseau

    Informations forums :
    Inscription : Mai 2009
    Messages : 58
    Par défaut
    J'ai améliorer un peu la gestion du sons en les pré-chargant lors d' un écran de démarrage mais des ralentissements se font toujours sentir.

    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
    if (ecranCharg == null) {
     
                // creation de l'ecran de chargement (titre, image, texte...)
                ecranCharg = new SplashScreen(Display.getDisplay(this));
                ecranCharg.setTitle("Patientez");
                ecranCharg.setCommandListener(this);
                ecranCharg.setImage(getImgCharg());
                ecranCharg.setText("Chargement en cours...");
                ecranCharg.setTimeout(4000);
     
                // récupération du son lors d'un tire de missile
                InputStream inmiss = getClass().getResourceAsStream("/Audio/Missile.wav"); // pour stocker le flux audio pour l'envoi de missile;
                // récupération du son lors de la destruction d'un monstre
                InputStream inexpl = getClass().getResourceAsStream("/Audio/Explosion.wav"); // pour stocker le flux audio pour la destruction de monstre
     
                try {
                        // creation des lecteurs pour lancer les sons
                        player = Manager.createPlayer(inmiss, "audio/x-wav");
                        player2 = Manager.createPlayer(inexpl, "audio/x-wav");
     
                        // pré-chargement des lecteurs pour réduire le temps de latence
                        // lors de la premiere lecture du son
                        player.prefetch();
                        player2.prefetch();
     
     
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    } catch (MediaException ex) {
                        ex.printStackTrace();
                    }
     
     
            }
            return ecranCharg;
    }
    le lancement des lecteurs se fait par un thread dans une autre classe

    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
    // selon la touche préssée, une action précise se déclanche
                    switch (touchePressée) {
                        // la touche 4 servira à déplacer le vaiseau de 10 pixels vers la gauche
                        case KEY_NUM4:
                            activeSonAction = 1;
                            break;
     
                        // la touche 6 servira à déplacer le vaiseau de 10 pixels vers la droite
                        case KEY_NUM6:
                            activeSonAction = 2;
                            break;
     
                        // la touche 5 servira aux tir de missiles
                        case KEY_NUM5:
                            // ajoute d'un missile dans le Vector à la position où se trouve le vaisseau
                            missileJeu.addElement(new Missile(this, vaisseau.getAbsX(), vaisseau.getOrdY()));
                            activeSonAction = 3;
                            break;
     
                    }
                    // actualisation de l'affichage
                    //repaint();
                    display.callSerially(this);
                } 
            }
     
    -----------------------------------
    public void run() {
     
        if (etatThread == true) {
     
     
            /* selon la valeur prise par "activeSonAction" une action sera realise */
            switch (activeSonAction) {
     
                // lecture du son des explosion
                case 0 :
                    try {
                        MenuPrincipal.player2.start();
                    } catch (MediaException ex) {
                        ex.printStackTrace();
                    }
                activeSonAction = -1;
                break;
     
                // déplacement du vaisseau a gauche de 10 pixel
                case 1 :
                    vaisseau.deplacGauche(10);
                    activeSonAction = -1;
                break;
     
                // déplacement du vaisseau a droite de 10 pixel
                case 2 :
                    vaisseau.deplacDroite(10);
                    activeSonAction = -1;
                break;
     
                // lecture du son des missiles
                case 3 :
                    try {
     
                    MenuPrincipal.player.start();
     
     
                } catch (MediaException ex) {
                    ex.printStackTrace();
                }
                    activeSonAction = -1;
                break;
     
                }
        }
     
    }

    Si quelqu'un pourrait m'aider en indiquant la bonne gestion des sons en j2me, car c'est le mieux que j'ai trouvé a faire

    Merci

Discussions similaires

  1. problème audio
    Par dana2008 dans le forum Composants
    Réponses: 2
    Dernier message: 22/03/2008, 03h09
  2. problème avec J2ME
    Par guy_s dans le forum Java ME
    Réponses: 2
    Dernier message: 22/01/2008, 13h28
  3. [TP7] Problème audio
    Par zakizaki7 dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 28/12/2007, 13h07
  4. [Info]Lecture video et record audio J2ME
    Par _popopo_ dans le forum Java ME
    Réponses: 1
    Dernier message: 03/05/2006, 11h43
  5. Problème Audio --> Plus de son ... :-(
    Par snoopy69 dans le forum Composants
    Réponses: 3
    Dernier message: 19/02/2006, 00h39

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