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 :

Ne créer qu'une instance de MediaPlayer


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Photographe
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Photographe

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Par défaut Ne créer qu'une instance de MediaPlayer
    Bonjour, je suis un petit nouveau en dev android et j'essaye de lire des mp3 dans une webview depuis une fonction javascript.
    Pour lire les sons pas de problème, j'ai trouvé un code qui marche bien, par contre il créé une instance de Mediaplayer à chaque appel et du coup je ne peut pas arrêter les sons en cours, et au bout d'un moment il y a trop d'instances de mediaplayer qui cesse de fonctionner...
    Voilà le code que j'utilise :

    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
    import java.io.IOException;
    import android.content.Context;
    import android.content.res.AssetFileDescriptor;
    import android.media.MediaPlayer;
    import android.webkit.JavascriptInterface;
     
    public class AudioInterface {
        Context mContext;
        AudioInterface(Context c) {
            mContext = c;
        }
     
        //Play an audio file from the webpage
        @JavascriptInterface
        public void playAudio(String aud) {
     
            final MediaPlayer mp;
     
            try {
                AssetFileDescriptor fileDescriptor =
                        mContext.getAssets().openFd(aud);
     
                    mp = new MediaPlayer();
                    mp.setDataSource(fileDescriptor.getFileDescriptor(),
                            fileDescriptor.getStartOffset(),
                            fileDescriptor.getLength());
                    fileDescriptor.close();
                    mp.prepare();
                    mp.start();
     
     
            }
     
            catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     
     
     
        }
     
    };
    si j'ai tout bien compris il ne faudrait créer qu'une instance de mediaplyer qui deviendrait du coup contrôlable avec .reset() .release() .stop()...
    j'ai passé ma journée dessus et je n'arrive à rien, si une bonne âme charitable aurais une piste ce serait cool !!!

    merci !

  2. #2
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    Je te suggère de faire une recherche google sur le concept de Singleton en Java.
    Tu sort ton objet final MediaPlayer mp; de ta méthode et le met en variable de classe. Et tu fait de ta classe un singleton.

  3. #3
    Candidat au Club
    Homme Profil pro
    Photographe
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Photographe

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Par défaut
    Merci, mais finalement j'ai trouvé une solution en utilisant
    private static MediaPlayer mp ;

    ca marche au poil !

  4. #4
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    Citation Envoyé par jeromebg Voir le message
    Merci, mais finalement j'ai trouvé une solution en utilisant
    private static MediaPlayer mp ;

    ca marche au poil !
    Si tu est sure de n'avoir qu'une seule instance de ta classe AudioInterface effectivement ça marche. Le Singleton sera à regarder si tu as besoin de ta classe AudioInterface dans plusieurs autres classes sans savoir si elle existe déjà ou pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/05/2007, 03h43
  2. Réponses: 5
    Dernier message: 09/03/2007, 21h14
  3. Réponses: 5
    Dernier message: 17/07/2006, 18h34
  4. [Débutant] Créer une instance avec le nom d'une classe
    Par Quetzalcoatl dans le forum Langage
    Réponses: 7
    Dernier message: 23/01/2006, 20h43
  5. [VB.NET]Créer une instance par page
    Par Dnx dans le forum ASP.NET
    Réponses: 20
    Dernier message: 31/10/2005, 13h22

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