Ответ 1
То, о чем вы говорите, не совсем возможно с Android. Android не имеет доступа к потоку аудио в разговоре.
Хотя я могу немного рассказать о том, как это сделать.
сначала для перехвата входящего вызова, вам необходимо зарегистрировать широковещательный приемник, который вызывается всякий раз, когда получен вызов
public void onReceive(final Context context, Intent intent)
{
TelephonyManager telephonyManager = null;
PhoneStateListener listener = new PhoneStateListener()
{
public void onCallStateChanged(int state, String incomingNumber)
{
switch (state)
{
case TelephonyManager.CALL_STATE_IDLE:
Toast.makeText(context, "Call Ended..", Toast.LENGTH_LONG).show();
Log.i("stop", "Call Ended....");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Toast.makeText(context, "Call Picked..", Toast.LENGTH_LONG) .show();
Log.i("received", "Call Picked....");
break;
case TelephonyManager.CALL_STATE_RINGING:
Toast.makeText(context, "Call Ringing.." + incomingNumber,5000).show();
break;
}
}
};
// Register the listener with the telephony manager
telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
Также измените свой манифест,
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
</application>
С этим вы можете перехватить входящий звонок и выбрать вызов, теперь вы можете попробовать воспроизвести какой-либо mp3 файл в
case TelephonyManager.CALL_STATE_OFFHOOK:
// Play mp3 file here
break;
Надеюсь, это поможет. Должен попробовать это и рассказать мне об этом.