2017-11-17 8 views
1

Android7(小米科技ミマックス)で動作していない、私は自動コールレコーダーは、私は自動コールレコーダーアプリ上で動作

は、私はここで管理し、レコードの音声にMediaRecorder.AudioSource.MICクラスを使用しますが、、MediaRecorder.AudioSource.VOICE_CALLを使用して音声通話を録音することができています着信音声が録音されず、スピーカーモードでない通常モードで音声通話を録音したい。

私にこれを手伝ってください。 (私は Xiaomi Mi Max(アンドロイド7)を試していましたが、動作していません)。

私は、そのコードを使用するが、溶液

public void startRecorderSource(String mFileName, int audioSource, int outputFormat) 
{ 
    try 
    { 
     mRecorder = null; 
     mRecorder = new MediaRecorder(); 
     Log.e(TAG, "startRecorderSource: audio source "+audioSource); 
     Log.e(TAG, "startRecorderSource: output format "+outputFormat); 
     mRecorder.setAudioSource(audioSource); 
     mRecorder.setOutputFormat(outputFormat); 
     // mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
      mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
      mRecorder.setAudioEncodingBitRate(12000); 
     } else { 
      mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
      mRecorder.setAudioEncodingBitRate(64000); 
     } 
     mRecorder.setAudioSamplingRate(12000); 

     mRecorder.setOutputFile(mFileName); 

     mRecorder.prepare(); 
     mRecorder.start(); 

     am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); 

     am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 100, 0); 
     am.setMode(2); 
     Log.d(TAG, "startRecorder() :: successfully"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

キャッチブロックからログに例外スタックトレースがありますか? –

+0

例外はありませんが、音声録音ファイルはスローされますが、着信音は非常に非常に低いです –

答えて

0

は限り(MediaRecorder.AudioSource.VOICE_CALL);に関しては、VOICE_CALLソースからキャプチャするCAPTURE_AUDIO_OUTPUT許可が必要見つけることができませんでした。この権限はシステムコンポーネントで使用するために予約してサードパーティ製アプリケーションに利用できません。 MediaRecorder.AudioSource | Android Developers

MediaRecorder.AudioSource.VOICE_COMMUNICATIONは、VoIPなどの音声通信用に調整されたマイクのオーディオソースを提供することをお勧めします。

さらに、あなたがXiaomi Mi Maxを使用していると言いますが、Mi Maxのマイク配置はデバイスの底面にあるため、受話器スピーカーからの通常モードのオーディオは録音できません。