我在android中遇到了媒体录制器的问题。我正在录制一个与LG P500配合良好的音频,但相同的代码不适用于三星GT - S5360。我因为开始失败而得到错误-22。
这是我正在使用的代码:
final MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);
try {
recorder.prepare();
recorder.start();
} catch (Exception e) { Log.d(TAG, "Exception : " + e); }
当调试在logcat中将cause变为null时。
请建议我解决一下。
答案 0 :(得分:1)
操作建议的权限对我不起作用,可能是因为它不存在:)
如果您收到此错误,请检查您设置介质记录器的方式。在我的情况下,它只在一些设备中失败了。我正在为运行Os版本的所有设备执行此操作> API 10:
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
事实证明,故障设备运行JB但不支持宽带,因此将其更改为原始/窄带工作:
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
答案 1 :(得分:0)
我遇到了同样的问题,我尝试从游戏商店安装录音机进行检查。它也不允许我录制VOICE_CALL。由此我意识到一些设备制造商不支持这一点。因此,如果设备不支持VOICE_CALL,请使用MIC进行录制。
答案 2 :(得分:-2)
根据实际海报的评论......他在评论中提出了答案。把它变成一个实际的答案,希望它能帮助别人:
OP增加了以下许可,他的代码对他很有用:
<uses-permission android:name="android.permission.STORAGE" />