Hej,即時試圖讓AudioRecord工作。因爲我需要一個更大的項目。但它似乎弄得很多。 我一直在嘗試很多東西,所以當我追蹤這個錯誤時,我回到了基本。 我正在使用我的Samsung Galaxy S作爲我的調試設備。Android AudioRecord - 不會初始化第二次
我的問題是,第一次重新啓動設備後,我可以初始化我創建的AudioRecord對象,而不會出現任何問題。 但我第二次運行它,它不會初始化AudioRecord對象。 我試過了幾個頻率,fyi。
這裏是我的代碼:
package android.audiorecordtest;
import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class AudioRecordTest extends Activity {
int frequency;
AudioRecord audRec;
TextView txtVw;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtVw = (TextView) findViewById(R.id.txtVw);
frequency=8000;
int bufferSize=(AudioRecord.getMinBufferSize(frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT))*2;
if (bufferSize>0) {
audRec = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
int status = audRec.getState();
if (status == AudioRecord.STATE_INITIALIZED) {
txtVw.setText("Initialized" + frequency);
} else {
txtVw.setText("Not Initialized i=" + frequency);
}
}
通過logcat的信息,找了幾個小時,我發現這個事件
02-28 10:46:37.048: DEBUG/dalvikvm(4477): GC_EXPLICIT freed 1801 objects/98944 bytes in 97ms
02-28 10:46:37.048: VERBOSE/AudioRecord(4477): stop
這似乎是「解除對AudioRecord本土保持後 所以我試着用我的Audiorecord object.release()做一個重寫finalize。這個沒有工作,但是..任何人有任何想法?
我真的很奇怪,爲什麼沒有人有任何答案,是不是因爲你們無法重現的問題,還是因爲人們只是不能被人打擾的幫助,或:你可以按如下方式使用它? – 2011-03-07 08:36:02
對於那些磕磕絆絆的人,請確保您有記錄許可! – NateS 2012-01-01 05:45:47
@NateS如果你沒有記錄權限,那麼它甚至不會初始化第一次,因爲我的問題標題明確指出:) 但是,如果有人只有第一次初始化嘗試的問題,那麼他們應該檢查他們在AndroidManifest.xml中的權限 – 2012-01-06 09:59:42