android6.0以上の端末で通話録音をしたいです。
MICで録音はできるのですがVOICE_DOWNLINKやVOICE_CALLにすると録音できません。
あるサイトで一般開発者は通話の録音機能が利用できなくなっていると書いてあったのですが、
本当に録音できないのでしょうか。
自分のソースコードが悪いのか、6.0以上では録音できないのかわからないので
ご教授お願い致します。
private void phoneCallEvent(int state, String number){ switch(state){ case TelephonyManager.CALL_STATE_RINGING: //電話の着信時 break; case TelephonyManager.CALL_STATE_OFFHOOK: //通話中 try { recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK); //通常の録音(相手の声) recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); //保存先 String filePath = Environment.getExternalStorageDirectory() +"/" + (month + 1) + "月" + day + "日" + hour + "時" + minute + "分" + ".wav"; recorder.setOutputFile(filePath); recorder.prepare(); recorder.start(); //録音開始 SRecording = 1; //録音開始された Toast toast = Toast.makeText(MainActivity.this, "相手の声を録音します", Toast.LENGTH_SHORT); toast.show(); } catch (Exception e) { e.printStackTrace(); Toast toast = Toast.makeText(MainActivity.this, "録音できません", Toast.LENGTH_SHORT); toast.show(); } break; case TelephonyManager.CALL_STATE_IDLE: //アプリの画面起動時 if(FStandby == 0) //アプリが起動したとき { FStandby = 1; } else if (FStandby == 1 && SRecording == 1) //録音していて、電話が終了したとき { try { recorder.stop(); recorder.reset(); //オブジェクトのリセット //release()前であればsetAudioSourceメソッドを呼び出すことで再利用可能 recorder.release(); //Recorderオブジェクトの解放 } catch (Exception e) { e.printStackTrace(); Toast toast = Toast.makeText(MainActivity.this, "保存できません", Toast.LENGTH_SHORT); toast.show(); } SRecording = 0; } break; } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/24 23:50