Tôi muốn ghi âm giọng nói miễn là giữ nút ghi và lưu giọng nói đó vào thư mục thô trong dự án của tôi. Tôi đã sử dụng mã bên dưới. Gần như không xuất hiện lỗi, tôi không thể nhận được bất kỳ đầu ra nào. Những gì có thể là vấn đề ? Bạn có đề nghị nào không? Cảm ơn,Làm cách nào để ghi âm giọng nói trên Android miễn là giữ nút?
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Runnable mAction = new Runnable() {
public void run() {
System.out.println("Performing action...");
int frequency=11025;
int channelConfiguration=AudioFormat.CHANNEL_CONFIGURATION_MONO;
int audioEncoding= AudioFormat.ENCODING_PCM_16BIT;
File file=new File(Environment.getExternalStorageDirectory(),"raw.pcm");
try{
file.createNewFile();
}catch(IOException e){}
try{
OutputStream os=new FileOutputStream(file);
BufferedOutputStream bos=new BufferedOutputStream(os);
DataOutputStream dos=new DataOutputStream(bos);
int bufferSize=AudioRecord.getMinBufferSize(frequency, channelConfiguration,
audioEncoding);
short[] buffer=new short[bufferSize];
audioRecorder=new AudioRecord(MediaRecorder.AudioSource.MIC,
frequency, channelConfiguration, audioEncoding, bufferSize);
audioRecorder.startRecording();
isRecording=true;
while(isRecording){
int bufferReadResult=audioRecorder.read(buffer, 0,bufferSize);
for(int i=0;i<bufferReadResult;i++){
dos.writeShort(buffer[i]);
}
}
audioRecorder.stop();
dos.close();
}catch(Throwable t){}
}
};
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (myHandler != null) return true;
myHandler = new Handler();
myHandler.postDelayed(mAction, 500);
break;
case MotionEvent.ACTION_UP:
if (myHandler == null) return true;
isRecording=false;
myHandler.removeCallbacks(mAction);
myHandler = null;
break;
}
return false;
}
Cảm ơn sự giúp đỡ của bạn – selenk
Tốt hơn nên liên kết với nguồn và giải thích các phần liên quan của mã thay vì dán sao chép: https://github.com/krvarma/krvarma-android-samples/tree/master/AudioRecorder. 1 –