2017-03-09 82 views
0

我正在嘗試使用AudioRecord類在我的Android設備上錄製音頻。但是,當我停止錄製時,我從中讀取的數據全部爲零。當我開始錄製音頻我做的:AudioRecord不記錄任何東西

int BufferElements2Rec = 1024; 
int BytesPerElement = 2; 

recorder = new AudioRecord(AudioSource.Mic, 
          8000, 
          ChannelIn.Mono, 
          Encoding.Pcm16bit, 
          BufferElements2Rec * BytesPerElement); 

recorder.StartRecording(); 

當我停止記錄:

var sData = new short[BufferElements2Rec]; 
recorder.Read(sData, 0, BufferElements2Rec); 

if (sData.Any(d => d != 0)) 
{ 
    int test = 1; // Breakpoint never gets hit 
} 

recorder.Stop(); 
recorder.Release(); 
recorder.Dispose(); 
recorder = null; 

任何想法,爲什麼?

編輯

我才意識到,即使調用recorder.StartRecording()RecordingState屬性仍然Stopped

+0

分享您的設備細節,請 –

+0

Nexus 5運行Android 6.0.1 – Darius

回答

1

的Manifest.xml

添加此行Mainfest的權限

文件
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 

,並給來自麥克風權限,

Settings > Apps > YOUR_APP_NAME > Permissions 

記錄給PermissionsMicrophone後您的音頻。

+0

我已經做到了這一點。但我通過從手機上卸載應用程序並重新安裝它來修復它。我在某個地方看到,調用'recorder.Release()'是非常重要的,否則它將不能再次使用,不確定它與它有什麼關係。 – Darius