首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在android手机上记录电话通话?

在android手机上记录电话通话?
EN

Stack Overflow用户
提问于 2010-07-30 17:37:40
回答 2查看 16.9K关注 0票数 18

我尝试了一下,并使用以下代码来记录呼出呼叫,但它不..

代码语言:javascript
复制
  @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);

}

}

代码语言:javascript
复制
           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;
                    }
                }
           }

请为这个问题提供一些好的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2012-04-28 08:01:43

这可以通过API级别的8+来解决。将媒体录制器的音频源设置为电话上行链路、下行链路或两者。

代码语言:javascript
复制
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); //Voice downlink/ Uplink
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(AudioEncoder.AAC );

但在这样做之前,要注意法律法规。

票数 5
EN

Stack Overflow用户

发布于 2012-01-11 06:34:33

您似乎无法记录来自API的调用。一种常见的解决方法是接合免持话筒并从麦克风录音-在许多设备上,麦克风将通过这种布置充分拾取扬声器。

另一种解决方法是在某处的电话服务上进行录音,并通过该服务来路由呼叫。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3370278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档