2017-07-25 5 views
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(); 
} 
+0

これをチェックする: https://github.com/rjeffm/CallRecorder –

+0

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); 許可なく使用することはできません。 VOICE_CALLソースからキャプチャするには、CAPTURE_AUDIO_OUTPUT権限が必要です。このアクセス許可は、システムコンポーネントで使用するために予約されており、サードパーティアプリケーションでは使用できません。 –

答えて

0

スタートオーディオ録音

public void startAudioRecording(View view) throws IOException { 
     //Create file to save recording 
     File dir = Environment.getExternalStorageDirectory(); 
     try { 
      audiofile = File.createTempFile("sound", ".3gp", dir); 
     } catch (IOException e) { 
      Log.e(TAG, "external storage access error"); 
      return; 
     } 
     mRecorder = new MediaRecorder(); 
     mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     mRecorder.setOutputFile(audiofile.getAbsolutePath()); 
     mRecorder.prepare(); 
     mRecorder.start(); 
     } 

停止オーディオ録音

public void stopAudioRecording(View view) { 
     mRecorder.stop(); 
     mRecorder.release(); 
     } 
関連する問題