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 :

MediaRecorder - fichier son vide


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 7
    Points
    7
    Par défaut MediaRecorder - fichier son vide
    Bonjour à tous,

    Depuis pas mal de temps, j'essai d'intégrer un module d'enregistrement vocal à une application. Voici l'activity 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
    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
     
    import java.io.File;
    import java.io.IOException;
    import android.app.Activity;
    import android.media.MediaRecorder;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.TextView;
     
    public class EnrNoteVocaleActivity extends Activity {
     
    	TextView statut;
    	int enregistre = 0; // Mouchard... 0: En attente, 1: Enregistre, 2: Enregistrement terminé
    	MediaRecorder enregistreur;
    	EditText nomFichier;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.enregistrement_note_vocale);
     
            statut = (TextView)findViewById(R.id.state); // Affiche simplement l'état de l'enregistrement
            Button boutonQuitter = (Button) findViewById(R.id.closeButton);
            final ImageButton enregistrer = (ImageButton)findViewById(R.id.recordButton); // Toggle enregistrer... stop
            nomFichier = (EditText) findViewById(R.id.newVocalNoteEditText); // Saisi par utilisateur       
            statut.setText(R.string.en_attente_);        
            enregistreur = new MediaRecorder();
     
     
        // ******************** Méthodes de contrôle ********************    
     
            boutonQuitter.setOnClickListener(new View.OnClickListener() {
     
    	        public void onClick(View view) {
    	        	// Un appui sur le bouton nous fait quitter l'activité et stop l'enregistrement s'il tourne encore
    /*	            if (enregistre == 1) { // On ferme la fenêtre tandis qu'on enregistre encore
    	            	arreterEnr();
    	            }*/
    		        finish();
    		    }
    	    });
     
     
            enregistrer.setOnClickListener(new OnClickListener() {
     
            	// Fonction de l'enregistrement de la note vocale
        		public void onClick(View v) {
     
        			if (enregistre == 0) { // 0: en attente, 1: Enregistre, 2: Enr. terminé
     
    	    			String nomNote = new String(nomFichier.getText().toString());		
    	    			boolean fichierValide = NoteDroidActivity.gestFichiers.validerFichier(nomNote); // On valide que le fichier est conforme dans singleton de gestion de fichiers
     
    	    			if (fichierValide) {
    	    				enregistre = 1; // mouchard = on enregistre
    	    				statut.setText(R.string.enregistre_); // Message à l'utilisateur "On enregistre"
    	    				enregistrer.setImageResource(R.drawable.micro_rouge); // Affiche bouton d'arrêt
    	    				enregistrerNote(nomNote); // Fonction d'enregistrement
    	    			}
    	    			else {
    	    				finish(); // Si fichier non valide, on ferme l'activity et on affiche l'alertDialog sous-jacent affiché par
    	    						  // NoteDroidActivity.gestFichiers.validerFichier(nomNote)
    	    			} 
        			}
        			else if (enregistre == 1) { // Si on est en train d'enregistrer
        				enregistre = 2; // Mouchard 2 = enr terminé (empêche de réactiver le bouton... évite plantage)
        				statut.setText(R.string.termin_); // Message "terminé"
        				enregistrer.setImageResource(R.drawable.micro_blanc); // micro_blanc = bouton inactif
        				arreterEnr();  // On appelle la fct d'arret  				
        				NoteDroidActivity.gestAffichage.afficherFichiers(); // Mise à jour de la liste des fichiers
        			}
        		}
            });
        }
     
     
        // ******************** Méthodes métier ********************
     
        public void enregistrerNote(String fileName) {    	
     
        	enregistreur.setAudioSource(MediaRecorder.AudioSource.MIC);
        	enregistreur.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        	enregistreur.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
        	// DossierCourant == getExternalFilesDir(null).getAbsolutePath();
        	enregistreur.setOutputFile(NoteDroidActivity.gestFichiers.getDossierCourant() + File.separator + fileName +".3gp");
     
        	try {  	
    			enregistreur.prepare();			
    		} catch (IOException e) {
    			// On affiche le message d'erreur dans une boite de dialogue personnalisée
    			NoteDroidActivity.gestAffichage.alertDialogAvertissement(getString(R.string.erreur_), e.getLocalizedMessage(), getString(R.string.fermer), null, getResources().getDrawable(R.drawable.exclamation));
    		}
     
        	enregistreur.start();
        }
     
     
        public void arreterEnr() {
     
        	enregistreur.stop();
        	enregistreur.release();
        }  
     
     
        @Override
        public void onPause() {
     
            super.onPause();
            if (enregistre == 1) {
            	arreterEnr();
            	enregistre = 0;
            }
        }
    }
    Le singleton de gestion de fichiers de mon application vérifie, avant de donner le dossier courant à cette activité, si un média externe est disponible. Si oui le dossier courant est le dossier externe de mon application, sinon c'est le dossier Data/data/files...

    Pas de problème de ce côté là. En fait le fichier son est bien créé dans le bon dossier avec le bon nom. Donc la gestion de fichier ne semble pas être le problème. Par contre, lors de mes tests sur un appareil Android ICS, le fichier 3gp enregistré est vide, bien qu'existant (0 byte). La tablette a pourtant un micro et fonctionne avec d'autres applications sonores. Il faut aussi noter que les permissions d'enregistrement sonore et d'enregistrement sur support externe ont été activées...

    Pourriez-vous, SVP, m'aider à résoudre ce mystère ? Merci à l'avance !

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Nouveau...

    J'ai testé l'application sur Android 2.2 et tout fonctionne parfaitement .

    Quelqu'un a une idée pourquoi ca ne fonctionne pas sous Android 4.03 ??

Discussions similaires

  1. [Batch] lire un fichier et tester si certaines découpes de chaine son vides
    Par mikey91 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 04/05/2015, 15h17
  2. forme d'onde d'un fichier sons
    Par glebourg dans le forum DirectX
    Réponses: 1
    Dernier message: 29/06/2005, 18h07
  3. Un fichier son intégré dans un fichier save
    Par jmdeffet dans le forum Langage
    Réponses: 11
    Dernier message: 23/05/2005, 16h46
  4. Réponses: 43
    Dernier message: 29/11/2004, 16h27
  5. [TP]comment faire pour lire un fichier son
    Par sovo dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 19/09/2004, 19h33

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