0
すぐに質問する。アンドロイドで通話を録音する方法は? (古い方法は機能しません)
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setOutputFile((audioFile.getAbsolutePath()));
このコードはnote5で動作しますが、s8 +では動作しません。私は他の声を録音することはできません。
CAPTURE_AUDIO_OUTPUT権限の問題により、AudioSource.VOICE_CALLまたはAudioSource.VOICE_DOWNLINKとAudioSource.VOICE_UPLINKを使用できません。
しかし、ACRアプリはすべての会話を正常に記録できるため、可能です。
注:私は形式またはエンコーダは、このトピックに関連しているとは思わない
全コード:
private void startRecord() {
mediaRecorder = new MediaRecorder();
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
File recordDirectory = new File(Environment.getExternalStorageDirectory().toString() + "/CallRecord");
if (!recordDirectory.isDirectory()) {
recordDirectory.mkdirs();
}
audioFile = new File(Environment.getExternalStorageDirectory().toString() + "/CallRecord",
ts + ".aac");
recordedFilePath = audioFile.getPath();
RecordInfo.recordPath = recordedFilePath;
tsLong = null;
ts = null;
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setOutputFile((audioFile.getAbsolutePath()));
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
private void stopRecord() {
mediaRecorder.stop();
mediaRecorder.release();
}
これをチェックする: https://github.com/rjeffm/CallRecorder –
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); 許可なく使用することはできません。 VOICE_CALLソースからキャプチャするには、CAPTURE_AUDIO_OUTPUT権限が必要です。このアクセス許可は、システムコンポーネントで使用するために予約されており、サードパーティアプリケーションでは使用できません。 –