Запись телефонных звонков на телефон Android? - PullRequest
18 голосов
/ 30 июля 2010

Я попробовал и использую следующий код для записи исходящих звонков, но это не так.

  @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;
                    }
                }
           }

Пожалуйста, предоставьте хорошее решение этой проблемы ..

Ответы [ 5 ]

5 голосов
/ 28 апреля 2012

Это можно решить с помощью API уровня 8+.Настройте аудиоисточник для медиа-рекордера как телефонную линию, нисходящую линию или и то, и другое.

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

Но прежде чем делать это, будьте осторожны с законами и правилами.

4 голосов
/ 30 июля 2010
  1. Вы не можете хорошо записывать телефонные звонки в Android, поскольку звук в режиме вызова недоступен для приложений SDK
  2. ACTION_ANSWER - это , а не трансляция Intent
1 голос
/ 10 мая 2011

Вы не можете записывать вызовы просто с помощью медиа-рекордера.Вы также должны изменить настройку аудио-менеджера и включить громкоговоритель перед началом записи, и источник звука останется прежним (микрофон). Попробуйте изменить настройку аудио-менеджера


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 голосов
/ 24 января 2014

Этот код работает для меня для записи исходящих телефонных звонков , поэтому, пожалуйста, проверьте его Здесь

0 голосов
/ 11 января 2012

Похоже, вы не можете записать вызов из API.Одним из распространенных способов решения этой проблемы является включение громкой связи и запись с микрофона - на многих устройствах микрофон будет правильно подбирать динамик при таком расположении.звонит через него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...