web-dev-qa-db-fra.com

Android: réponse automatique aux appels entrants, lecture d'un fichier audio

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?

20
Md Maidul Islam

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.

11
Sahil Mahajan Mj

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.

3
Marcin Orlowski

Essayez d’utiliser telephonymanager, il contient les événements que vous recherchez:

  1. http://developer.Android.com/reference/Android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED
2
Tobrun

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,

  1. Vous pouvez lire l’enregistrement de votre choix à partir du haut-parleur du téléphone, pendant un appel! un micro va le choisir à partir de là?
  2. Ou vous pouvez interconnecter un fil mains libres avec un fil micro
  3. Ou utilisez bluetooh à partir d'un autre appareil pour lire l'enregistrement souhaité
0
Nasir Iqbal