我尝试了一下,并使用以下代码来记录呼出呼叫,但它不..
@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;
}
}
}
请为这个问题提供一些好的解决方案。
发布于 2012-04-28 08:01:43
这可以通过API级别的8+来解决。将媒体录制器的音频源设置为电话上行链路、下行链路或两者。
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); //Voice downlink/ Uplink
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(AudioEncoder.AAC );
但在这样做之前,要注意法律法规。
发布于 2012-01-11 06:34:33
您似乎无法记录来自API的调用。一种常见的解决方法是接合免持话筒并从麦克风录音-在许多设备上,麦克风将通过这种布置充分拾取扬声器。
另一种解决方法是在某处的电话服务上进行录音,并通过该服务来路由呼叫。
https://stackoverflow.com/questions/3370278
复制相似问题