2010-11-11 8 views
3

salut J'ai l'enregistrement audio dans mon classe mediarecorder d'utilisation pour recding audio mais j'ai l'exception de mémoire quand j'atteins 2 m, cela ma limite. J'ai donné mon code ci-dessous.Enregistrement audio et Exception de mémoire insuffisante

temps

audiorecding private static void() { if (audio_recding_stop_flag == 0) { audio_recding_stop_flag = 1;

 recorder.stop(); 
     recorder.reset(); 
     recorder.release(); 
     recorder=new MediaRecorder(); 
     int maxtime = audio_seekbar_play_indication.getMax(); 
     audio_seekbar_progress = 0; 
     audio_seekbar_incr = maxtime/ AngiesData.gettotalaudiorecdingtimeinseconds(audio_recding_time.getText().toString()); 
     audio_recding_time.stop(); 
     recd_stop_audio.setBackgroundResource(R.drawable.rec_btn); 
     audio_play_pause.setEnabled(true); 
     delete_recding.setEnabled(true); 

     AngiesData.angiesListContext.setAudioRecd(true); 
     AngiesData.angiesListContext.setAudioRecdingTime((String) audio_recding_time.getText()); 
    } 
    else { 


     audio_recding_stop_flag = 0; 


     try { 

      audio_play_pause.setEnabled(false); 
      delete_recding.setEnabled(false); 
      recd_stop_audio.setBackgroundResource(R.drawable.recording_stop); 
      audio_recding_time .setBase(SystemClock.elapsedRealtime()); 
      audio_recding_time.start(); 
      recorder = new MediaRecorder(); 
      recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // AudioSource 
      recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); // OutputFormat 
      recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
      path = InitialValueLoader.sanitizePath("Audio/VoiceReport"); 
      InitialValueLoader.filecheck(path); 
      recorder.setOutputFile(path); 
      recorder.setMaxDuration(120000); 
      recorder.prepare(); 
      recorder.start(); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

Répondre

1

Je suggère useing un Chronometer au lieu d'une minuterie

+0

j'utilise aussi le chromé mais problème encore là – Bytecode

+0

j'ai résolu mon problème en travaillant recding audio comme activité séparée – Bytecode

+0

pouvez-vous s'il vous plaît poster le code d'enregistrement audio avec le chronomètre svp? – UMAR

0

En programmation, si vous devez gérer les temps, toutes les valeurs de temps sont généralement en millisecondes. Vous essayez d'arrêter l'enregistrement après deux secondes il n'y a pas deux minutes ce qui serait 120000 millisecondes.

+0

testé mais échoué – Bytecode

+0

@Sudeep SR n'était pas censé être la solution mais un indice général. –

2

Je voudrais essayer quelque chose avec la audiorecord-classe (http://developer.android.com/reference/android/media/AudioRecord.html), utilisez la lecture() - fonction avec une boucle while et continuer jusqu'à ce que vous avez obtenu votre 2 min. d'échantillons (vérifier le taux d'échantillonnage, par exemple 44,1 Khz => 44100 smpls/sec => 60 * 44100 smpl/min). Assurez-vous d'avoir 2 min. de l'audio avec l'aide d'une minuterie n'est pas une bonne idée. Avec les minuteurs, vous ne pouvez jamais être sûr de la précision, si un autre thread interfère, votre minuteur sera évoqué plus tard, et dans les échantillons audio, il pourrait être BEAUCOUP plus tard.

+0

Je suis d'accord avec celui-ci. –

+0

J'ai enregistré de l'audio avec cette classe le problème est le fichier résultant pas pris en charge par mon appareil (motorolla droid) – Bytecode

Questions connexes