[英]Record phone calls on android phone?
我尝试过,并使用以下代码记录去电,但事实并非如此。
@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;
}
}
}
请为这个问题提供一些好的解决方案。
可以使用API级别8+来解决。 将媒体记录器的音频源设置为电话的上行链路,下行链路或两者。
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); //Voice downlink/ Uplink
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(AudioEncoder.AAC );
但是在执行此操作之前,请注意法律和法规。
ACTION_ANSWER
不是广播的Intent
您不能仅通过媒体记录器记录通话。 您还必须更改音频管理器的设置并在开始录制之前打开扬声器,否则音频源将保持不变(麦克风)。因此,请尝试编辑音频管理器的设置
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);
该代码对我有用 ,可以记录去电 ,请在此处检查
看来您无法记录来自API的调用。 一种常见的解决方法是使免提电话接合并从麦克风录音-在许多设备上,通过这种布置,麦克风将充分拾取扬声器。
另一个解决方法是在某处的电话服务上进行记录并通过它路由呼叫。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.