2010-11-11 14 views
3

嗨 我有錄音在我的我使用mediarecorder類錄音,但我有內存不足的例外,當我達到2米,我的極限。我給了我下面的代碼。音頻錄製和內存不足異常

時間

私有靜態無效audiorecding() { 如果(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(); 
     } 
} 

回答

1

我建議期運用天文臺表,而不是一個計時器的

+0

我也使用chrometer,但問題仍然存在 – Bytecode 2010-11-12 14:34:27

+0

我已經通過工作音頻recding作爲separte活動解決了我的問題 – Bytecode 2010-11-16 13:08:06

+0

請問您可以使用天文臺發佈錄音代碼嗎? – UMAR 2011-09-14 15:54:02

0

在編程中,如果必須處理定時,通常所有時間值均以毫秒爲單位。您正試圖在兩秒鐘後停止錄製,而不是兩分鐘,這將是120000毫秒。

+0

已測試但失敗 – Bytecode 2010-11-12 14:33:49

+0

@Sudeep SR它不是解決方案,而是一般提示。 – 2010-11-12 14:43:10

2

我會嘗試用AudioRecord級的東西(http://developer.android.com/reference/android/media/AudioRecord.html),使用read() - 功能與while循環,並保持下去,直到你有你的2分鐘。 (檢查sampleRate,例如44.1KHz => 44100smpls/sec => 60 * 44100smpl/min)。確保你有2分鐘。音頻與定時器的幫助不是一個好主意。有了計時器,你永遠無法確定精度,如果另一個線程干擾你的計時器,將在稍後引發,並且在音頻樣本中,可能會稍後再說。

+0

我同意這一點。 – 2010-11-15 07:50:08

+0

我記錄了這個類的音頻問題是由於我的設備不支持(motorolla droid) – Bytecode 2010-11-16 04:33:58