В моем приложении есть аудио секция, где у меня есть один recordBtn , который будет записывать аудио, и один playRecordedAudioBtn , который будет воспроизводить только что записанный звук, и у меня есть еще один playTrackBtn , который будет воспроизводить дорожку (музыкальный звук).
когда я нажимаю recordBtn и playTrackBtn , записанное аудио должно иметь то, что я записал, и отслеживать песню, но не записывается, что я хочу, и выдает сообщение в logcat
11-16 04: 40: 24.060: WARN / AudioFlinger (90): RecordThread: переполнение буфера
мой записанный аудиокод ниже:
new Thread(recordingThread).start(); // called thread from onCreate
private Runnable recordingThread = new Runnable() {
@Override
public void run() {
try {
startRecording();
} catch (Exception e) {
Log.d("error:", "" + e.getMessage());
}
}
};
public void startRecording() throws IOException {
String state = android.os.Environment.getExternalStorageState();
if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) {
Toast.makeText(MainActivity.this,
"SD Card is not mounted. It is " + state + ".",
Toast.LENGTH_SHORT).show();
} else {
String dirPath = Environment.getExternalStorageDirectory()
.getAbsolutePath();
songTakePath = dirPath + "/SongWriters_Pad/"
+ title_view.getText().toString() + "-Take-" + count
+ ".wav";
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioEncodingBitRate(16);
recorder.setAudioSamplingRate(44100);
recorder.setOutputFile(songTakePath);
try {
recorder.prepare();
} catch (Exception e) {
e.printStackTrace();
}
recorder.start();
}}
Пожалуйста, предоставьте любое руководство и фрагмент кода.
спасибо ..