サウンドファイルを保存せずに録音しようとしています.AudioRecordを使用して録音サウンドをバッファに保存し、AudioTrackを使用して後で「再生」ボタンがタップされたときにサウンドを再生します
これは私のアプリケーションのコードソースです
package com.stackoverflow.sofproject;
import java.io.IOException;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioRecord;
import android.media.AudioTrack;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity {
boolean recorder = true;
AudioRecord ar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final int minSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
ar = new AudioRecord(MediaRecorder.AudioSource.MIC,
8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,minSize);
final short[] buffer = new short[minSize];
ar.startRecording();
Log.e("SoundRecordingActivity", "Start record !");
Thread Rthread = new Thread(new Runnable() {
public void run() {
while(recorder)
{
ar.read(buffer, 0, minSize);
}
}
});
Rthread.start();
}
public void stopRecordButtonAndPlayBack(){
ar.stop();
recorder = false;
Log.e("SoundRecordingActivity", "Stop record !");
// play sound
int minSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
ar = new AudioRecord(MediaRecorder.AudioSource.MIC,
8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,minSize);
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
minSize,
AudioTrack.MODE_STREAM);
audioTrack.play();
while (true) {
audioTrack.write(buffer, 0, minSize);
}
}
}
録音は正常に動作します
再生ボタン (stopRecordButtonAndPlayBack) を録音すると、アプリが強制終了します
button と stopRecordButtonAndPlayBack の間のリンクにない問題 バッファをサウンドとして再生する方法の問題
私の英語でごめんなさい