Android 录音在某些设备中不起作用
我正在使用android AudioRecorder录制音频,但它在华为和oppo等设备上不起作用,我正在后台服务中录制5秒钟的音频。 启动录制功能为:Android 录音在某些设备中不起作用,android,audio-recording,illegalstateexception,background-service,audiorecord,Android,Audio Recording,Illegalstateexception,Background Service,Audiorecord,我正在使用android AudioRecorder录制音频,但它在华为和oppo等设备上不起作用,我正在后台服务中录制5秒钟的音频。 启动录制功能为: private void startRecording(File file) { if (mediaRecorder != null) { mediaRecorder.reset(); mediaRecorder.release(); } mediaRecorder = new Media
private void startRecording(File file) {
if (mediaRecorder != null) {
mediaRecorder.reset();
mediaRecorder.release();
}
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
//mediaRecorder.setOutputFile(file.getAbsolutePath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
mediaRecorder.setAudioEncodingBitRate(48000);
} else {
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setAudioEncodingBitRate(64000);
}
mediaRecorder.setAudioSamplingRate(16000);
mediaRecorder.setOutputFile(file.getAbsolutePath());
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
Log.e("giftlist", "io problems while preparing [" +
file.getAbsolutePath() + "]: " + e.getMessage());
}
}
停止录制功能
private void stopRecording() {
if (mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
mediaRecorder = null;
}
}
这就是期望
java.lang.IllegalStateException at android.media.MediaRecorder._stop(Native Method)
它给出了非法堆栈异常。如何解决这个问题?我想在所有设备中运行它是否检查了录制音频的运行时权限?如果有异常,请发布堆栈跟踪。是,设置了所有权限需要按预定义顺序调用媒体录制器方法。如果任何方法将切换位置,它将开始抛出非法状态异常。您可以通过“媒体录制器非法状态异常”进行搜索,并将在谷歌上获得结果。请检查上述代码,并告诉我序列是否正确或错误。因为它在三星设备上工作