做了一個簡單的聲音管理器中,您可以錄製聲音:
public class SoundManager {
private static final String TAG = SoundManager.class.getSimpleName();
public boolean isRecording = false;
private MediaRecorder recorder;
private String audioFileName = "sound";
private Context mContext;
private String storePath;
public SoundManager(Context context) {
this.mContext = context;
}
public void onRecord(boolean toStart) {
if (toStart) {
try {
startRecording();
isRecording = true;
} catch (IOException e) {
Log.d("Tag", e.toString());
}
} else {
stopRecording();
}
}
private void startRecording() throws IOException {
stopRecording();
audioFileName = UUID.randomUUID().toString();
storePath = new File(mContext.getExternalFilesDir(null), "/images/"+ audioFileName+".3gp").getAbsolutePath();
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile(storePath);
recorder.prepare();
recorder.start();
}
private void stopRecording() {
if (isRecording && recorder != null) {
try {
recorder.stop();
recorder.release();
} catch (RuntimeException e) {
recorder.release();
Log.d(TAG, e.toString());
}
recorder = null;
isRecording = false;
}
}
public File getAudioOutputPath() {
return new File(storePath);
}
}
用途:
- 開始記錄:
soundManager.onRecord(true);
- 停止錄音:
soundManager.onRecord(false);
- 得到聲音文件路徑:
soundManager.getAudioOutputPath();
添加音頻允許在你的清單:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
`
我很感激,但我希望能夠做到從緩衝區中是搶音頻並將其自己寫入文件,因此試圖學習AudioRecord,該AudioRecord具有該回調例程。 我只是不出來,所以一直在尋找的代碼在網上,我會再從學習,並從那裏建立的一個例子。 –
很抱歉聽到這個消息。你能告訴我你爲什麼在錄音時需要緩衝區嗎?如果你需要查看某些東西,那麼我有辦法做到這一點。 – Sayem
只是希望能夠自己寫作。無論是實時分解還是實時分析。我所有的谷歌都指向AudioRecord類。就在學習之初,它正在尋找一個在線示例。 –