我正在使用MediaRecorder允许用户在我的应用程序中录制音频,对于大多数用户(以及在我所有的测试设备上),它都可以正常工作。相关代码如下:
mRecorder = new MediaRecorder();
mRecorder.setOnInfoListener(infoListener);
String audioFilePath = mUri.getPath();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setOutputFile(audioFilePath);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mRecorder.setAudioEncodingBitRate(256 * 1024);
mRecorder.setAudioSamplingRate(44100);
mRecorder.setMaxDuration(60000);
try{
mRecorder.prepare();
}catch (IOException ex){
Log.e(TAG, "Prepare() failed", ex);
mTracker.send(new HitBuilders.ExceptionBuilder()
.setDescription("Preparing MediaRecorder in : " + Thread.currentThread().getName()+ ": " + ex.toString())
.setFatal(false)
.build()
);
}
mRecorder.start();
我收到一个用户的报告,说他们无法录制音频,他们看到的敬酒消息是我从MediaRecorder.onInfoListener中触发的。
因此,我添加了一些Google Analytics(分析)并从该侦听器中记录了一个事件,以查看是否可以跟踪该错误:
private MediaRecorder.OnInfoListener infoListener = new MediaRecorder.OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
mr.stop();
mr.reset();
mr.release();
mr = null;
onRecordingStopped();
Toast.makeText(mContext, R.string.audio_recording_stopped, Toast.LENGTH_SHORT).show();
mTracker.send(new HitBuilders.EventBuilder()
.setCategory("Error")
.setAction("AudioStopped")
.setLabel("What: " + what + ", extra: " + extra)
.build());
}
};
如您所见,我正在将“ what”和“ extra”参数传递给Analytics(分析),这样我就可以看到发生了哪种错误。
在今天早上的分析中(到目前为止只有一天的数据在运行),我看到一些“最大”持续时间是800,而在文档中我看到的是最大持续时间,而其他的则是“最大持续时间”。在Media.Recorder文档中找不到895的引用。
对895意味着什么建议?
最佳答案
我遇到了同样的问题。原来我的设备信息代码895表示正在进行录制。
这意味着您无需停止录制。
关于android - MediaRecorder OnInfoListener给出了895,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25785420/