Java MediaRecorder启动失败错误
我想录制通话语音,但我收到MediaRecorder:启动失败:-2147483648 这是我的通话记录代码块Java MediaRecorder启动失败错误,java,android,android-mediarecorder,android-8.0-oreo,call-recording,Java,Android,Android Mediarecorder,Android 8.0 Oreo,Call Recording,我想录制通话语音,但我收到MediaRecorder:启动失败:-2147483648 这是我的通话记录代码块 public void SesKayitBaslat(String number) { Toast.makeText(context, "ANSWERED", Toast.LENGTH_LONG).show(); String out = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss").format(ne
public void SesKayitBaslat(String number) {
Toast.makeText(context, "ANSWERED", Toast.LENGTH_LONG).show();
String out = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss").format(new Date());
File sampleDir = new File(Environment.getExternalStorageDirectory(), "/ASesKaydi");
if (!sampleDir.exists()) {
sampleDir.mkdirs();
}
String file_name = "Record";
try {
audiofile = File.createTempFile(file_name, ".amr", sampleDir);
} catch (IOException e) {
e.printStackTrace();
}
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
recorder = new MediaRecorder();
//recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(audiofile.getAbsolutePath());
try {
recorder.prepare();
} catch (IllegalStateException e) {
Log.e("Eror","1");
e.printStackTrace();
} catch (IOException e) {
Log.e("Eror","2");
e.printStackTrace();
}
if(!recordstarted)
{
recorder.start();
recordstarted = true;
}
Log.e("Kayit:", "Başladı");
}
我的错误是什么?有人能帮我吗?我尝试了MediaRecorder.AudioSource.VOICE_呼叫和MediaRecorder.AudioSource.VOICE_通信
当我使用语音通信类型时,我没有得到呼叫者的语音。代码
2147483648
指媒体错误系统(低级系统错误)
根据文件:
BroadcastReceiver对象仅在调用期间有效
接收(上下文、意图)。一旦你的代码从这里返回
功能,系统认为对象已完成,不再
活跃的
换句话说,您期望存在的MediaRecorder实例可能实际上已经不存在了,因为您所在的BroadcastReceiver实例与创建MediaRecorder的实例不同。在BroadcastReceiver中执行此任务不是一个好主意,因为它只执行10秒,之后系统可能会声明应用程序没有响应
一个解决方案是执行此代码到
服务您是否在BroadcastReceiver中执行此代码?是的,先生@sagar。