2010-07-30 10 views
16

나는Android 휴대 전화로 전화 통화 기록 하시겠습니까?

@Override 
    public void onReceive(Context context, Intent intent) 
    { 
      this.context = context; 
      if (intent.getAction().equalsIgnoreCase(Intent.ACTION_ANSWER)) 
      { 
       try 
       { 
        phonenbr = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
        Log.v("GDHGDHGHDGDHGDHGHDGHDGH", phonenbr); 
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
        recorder.setOutputFile(pathname); 
        recorder.prepare(); 
        recorder.start(); 
        recordstarted = 1; 
        telManager= (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 
       } 
       catch(Exception e) 
       { 
        e.printStackTrace(); 
       } 


       final PhoneStateListener phoneListener = new PhoneStateListener() 
       { 
        @Override 
        public void onCallStateChanged(final int state, final String incomingNumber) 
         { 
          getTelephonyOverview(telManager); 
         } 
       }; 

      telManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); 

} 

}

  public void getTelephonyOverview(final TelephonyManager telManager) 
      { 
        int callState = telManager.getCallState(); 
        switch (callState) 
        { 
        case TelephonyManager.CALL_STATE_IDLE: 
        { 
         if (recordstarted==1) 
         { 
          recorder.stop(); 
          recordstarted =0; 
         } 
         break; 
        } 
       } 
      } 

이 문제에 대한 좋은 해결책을 알려주세요 .. .. 그것을 시도 및 발신 통화를 기록 다음 코드를 사용하지만 그렇지 않습니다

+0

을 확인하시기 바랍니다 그럼 난 –

+0

가 안녕하세요, 내가 필요도입니다 .. 도움이 될 수 있습니다 녹음 전화. 그걸 작동시킬 수있는 기회를 얻었습니까? – Neutralizer

+1

쿨 아이디어.하지만 너무 많이하기 전에 개인 정보 보호 및 전화 녹음과 관련된 현지 법률을 확인하는 것이 좋습니다. 나는 미국에서 기록 할 수있는 것에 관해 매우 엄격한 규칙이 있으며 사용자에게 기록되고 있음을 알리는 것을 알고 있습니다. – bakoyaro

답변

4
  1. SDK 응용 프로그램에서 통화 중 오디오를 사용할 수 없기 때문에 안드로이드에서 전화 통화를 잘 녹음 할 수 없습니다.
  2. ACTION_ANSWERnot 당신은 미디어 레코더에 의해 단순히 전화를 기록 할 수 없습니다 Intent
+6

전화 통화를 녹음하는 다른 방법이 있습니까 ?? –

+0

나는 얼마 전 모습을 드러냈다. – stealthcopter

+0

전화가 끝날 때까지 전화를 걸 수있는 사람을 찾을 수조차 없습니다 (전화가 걸려 오면 전화를 걸 때 유용합니다). – Basic

1

방송입니다. 당신은 또한 그것은 것으로 보인다


AudioManager audiomanager = (AudioManager)context.getSystemService("audio"); 
int i = audiomanager.getRouting(2); 
audiomanager.setMode(2); 
audiomanager.setMicrophoneMute(false); 
audiomanager.setSpeakerphoneOn(true); 
int j = audiomanager.getStreamMaxVolume(0); 
if(j < 0) 
    j = 1; 
int k = j/2 + 1; 
audiomanager.setStreamVolume(0, k, 0); 
audiomanager.setRouting(2, 11, 15); 
+0

하지만 큰 스피커를 켜는 방법은? –

+0

@Kartik 메인 에디션 파일에 오디오 설정 변경 사항을 추가해야합니다. 여기에 내 코드가있다 :'AudioManager audiomanager = (AudioManager) context.getSystemService ("audio"); int i = audiomanager.getRouting (2); audiomanager.setMode (2); \t \t audiomanager.setMicrophoneMute (false); \t audiomanager.setSpeakerphoneOn (true); \t int j = audiomanager.getStreamMaxVolume (0); \t 경우 (j <0) \t J = 1; \t int k = j/2 + 1; audiomanager.setStreamVolume (0, k, 0); RuntimeException을을 MediaRecorder에서 recorder.stop에(); \t audiomanager.setRouting (2, 11, 15) "-1007 실패 중지"' –

0

설정 오디오 관리자의 편집하려고 .SO 오디오 관리자의 설정을 변경하고 녹음과 같은 (마이크) 남아 오디오 소스를 시작하기 전에에서 시끄러운 스피커를 넣어 가지고 API 호출을 기록 할 수 없습니다. 한 가지 일반적인 해결 방법은 스피커폰을 연결하고 마이크에서 녹음하는 것입니다. 많은 장치에서 마이크는 이러한 배열로 스피커를 적절하게 집어 올립니다.

또 다른 해결 방법은 전화 통신 서비스에서 녹음을 수행하고 전화를 통해 호출을 라우팅하는 것입니다.

5

API 레벨 8 이상으로 해결할 수 있습니다. 전화 녹음기의 오디오 소스를 전화 업 링크, 다운 링크 또는 둘 다로 설정하십시오.

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); //Voice downlink/ Uplink 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(AudioEncoder.AAC); 

그러나이 작업을 수행하기 전에 법률 및 규정을 유의하십시오. u는 오류 catlog을 제공 할 수 있는지

+1

나는 내 드로이드 X에 이것을 시도,하지만 난 점점 계속. recorder.start()는 문제없이 전달되고 크기가 아닌 파일이 생성되지만 재생할 수는 없습니다. – ComputerEngineer88

+0

어떤 휴대폰에서이 기능을 시도한 적이 있습니까? 그것은 사실 일 수있는 너무 간단한 해결책처럼 보입니다 ... 그리고 나서 그들은 경향이 있습니다 :) – rrostt

0

이 코드는 기록 발신 전화에 나를 위해 노력하고, 그래서 그것을 Here

관련 문제