Sous Android, lors d'un appel entrant, je souhaite le recevoir. Ensuite, depuis mon application, lisez automatiquement un fichier audio pendant un appel et votre correspondant doit l'entendre. Est-ce possible?
Ce dont vous parlez n’est pas tout à fait possible avec Android. Android n'a pas accès au flux audio en cours d'appel.
Bien que je puisse vous donner une petite idée de la façon de le faire.
premier à intercepter un appel entrant, vous devez enregistrer un récepteur de diffusion, qui est appelé chaque fois que l'appel est reçu
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);
Changez aussi votre manifeste,
<uses-permission Android:name="Android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission Android:name="Android.permission.READ_PHONE_STATE"></uses-permission>
<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>
Avec cela, vous pouvez intercepter l'appel entrant et prendre l'appel, vous pouvez maintenant essayer de lire un fichier mp3 dans le répertoire.
case TelephonyManager.CALL_STATE_OFFHOOK:
// Play mp3 file here
break;
J'espère que ça aide. Doit essayer cela et me raconter l'expérience.
Vous ne pouvez rien jouer directement à l'appelant. Si vous voulez jouer via haut-parleur, ce n'est pas ce que vous voulez Donc "non", vous ne pouvez pas faire ça.
Essayez d’utiliser telephonymanager, il contient les événements que vous recherchez:
Sous Android, il n’ya pas d’option permettant de jouer contre un appel en direct ou de changer de source audio pour un autre choix que Mic par défaut. voici des détails qui pourquoi vous ne pouvez pas lire d’enregistrements lors d’un appel en direct
Cependant, il y a quelques astuces,