各位好,我写了一段读取mic数据的代码,但是每次执行到startRecording就出异常,请各位大虾指教!谢谢啊package com.android.us;import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.AsyncTask;
import android.os.Bundle;public class US extends Activity {
/** Called when the activity is first created. */ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 这里启动录制任务
RecordTask recorder = new RecordTask();
recorder.execute();
}
class RecordTask extends AsyncTask<Void, Void, Integer> {
@Override
protected Integer doInBackground(Void... arg0) {
// 获得缓冲区字节大小
int bufferSizeInBytes = AudioRecord.getMinBufferSize(
44100, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT); // 创建AudioRecord对象
AudioRecord audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC, 44100,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT,
bufferSizeInBytes); short[] buffer = new short[bufferSizeInBytes]; // 开始录制
audioRecord.startRecording();
bufferSizeInBytes = audioRecord.read(buffer, 0, buffer.length);
// 录制结束
audioRecord.stop();
return Integer.valueOf(bufferSizeInBytes);
}
}
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.AsyncTask;
import android.os.Bundle;public class US extends Activity {
/** Called when the activity is first created. */ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 这里启动录制任务
RecordTask recorder = new RecordTask();
recorder.execute();
}
class RecordTask extends AsyncTask<Void, Void, Integer> {
@Override
protected Integer doInBackground(Void... arg0) {
// 获得缓冲区字节大小
int bufferSizeInBytes = AudioRecord.getMinBufferSize(
44100, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT); // 创建AudioRecord对象
AudioRecord audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC, 44100,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT,
bufferSizeInBytes); short[] buffer = new short[bufferSizeInBytes]; // 开始录制
audioRecord.startRecording();
bufferSizeInBytes = audioRecord.read(buffer, 0, buffer.length);
// 录制结束
audioRecord.stop();
return Integer.valueOf(bufferSizeInBytes);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货