web-dev-qa-db-fra.com

Comment fusionner l'appel par programmation pendant qu'un autre appel est en cours (conférence téléphonique)

Mon exigence est la suivante: disons que j'appelle un numéro à ce moment-là et que je veux appeler un autre numéro par programme. Jusqu'à présent, ce que j'ai fait est: je peux appeler un numéro particulier pendant qu'un appel est déjà en cours. Par exemple, supposons que j'appelle au numéro 123 et après 1 minute (en utilisant Alarm Manger Je déclenche un événement pour appeler un autre numéro 456 et c'est fait!

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:456"));
startActivity(intent);

J'utilise une telle intention d'appeler et maintenant je peux voir l'écran sur mon téléphone avec un bouton pour fusionner les appels:

screenshot of phone

Dans cette image, vous pouvez voir un bouton de fusion d'appels. Maintenant, lorsque l'utilisateur clique sur fusion, il fusionnera les 3 appels. Je veux le faire par programme, pas avec l'interface utilisateur.

40
Aamirkhan

Votre question semblait intéressante alors j'ai commencé à creuser dans Android Source. Voici ce que j'ai trouvé:

L'activité dans l'image que vous avez publiée s'appelle InCallUI

Lorsque vous commencez à regarder autour de vous, vous trouverez InCallPresenter qui à la ligne 463 a:

final boolean canMerge = activeCall.can(Capabilities.MERGE_CALLS);

puis à 472:

CallCommandClient.getInstance().merge();

lorsque vous vérifiez cette méthode merge () dans CallCommandClient , vous constaterez qu'elle utilise ICallCommandService une interface qui, je pense, correspond à ce que vous cherchiez :)

L'initialisation de ce CallCommandClient est dans CallHandlerService autour de la ligne 193.

En espérant que ça aide, bonne chance.

PS. Les API que j'ai répertoriées sont principalement internes Android stuff. Vous devrez peut-être utiliser la réflexion pour l'appeler ou cela pourrait ne pas être possible du tout - cela peut être inaccessible pour votre application car elle n'est pas marquée comme système app.

14
MeTTeO

L'API Android ne prend pas en charge la fonction de fusion d'appels, vous pouvez voir ce fil pour cela. https://groups.google.com/forum/?fromgroups#!searchin/Android-developers/conference $ 20call/Android-developers/6OXDEe0tCks/8cuKdW1J9b8J mais ce que vous pouvez faire est d'ouvrir le pavé d'appel du téléphone écran utilisant aidl à partir de là, l'utilisateur peut ajouter un autre appel ou fusionner l'appel.

8
Akhil Dad

Vous ne pouvez pas gérer une conférence avec un téléphone intelligent. Vous avez besoin d'un service intermédiaire qui peut le faire pour vous. Vous pouvez programmer un gestionnaire de conférence en utilisant CCXML .

Voxeo a une bonne plate-forme hébergée pour les implémentations CCXML et vous pouvez consulter leur documentation sur la façon de configurer la conférence. Il existe des exemples dans "Apprendre CCXML 1.0\Conférence multipartite dans CCXML 1.0".

Vous pouvez développer et tester gratuitement sur Voxeo et ils ne commencent à vous charger que si vous le mettez en production. Une autre option est Twillio.

Voici un lien vers comment vous programmez une conférence téléphonique sur leur plateforme.

Vérifiez les liens, vous obtiendrez des informations utiles. # courtoisie- SO

5
user123

Afaik, il n'y a pas d'API dans le SDK qui fusionne l'appel par programmation.

Vous devez travailler sur la RIL (Radio Interface Layer) pour la conférence téléphonique que Android utilise pour les appels téléphoniques).

La couche d'interface radio (RIL) d'Android fournit une couche d'abstraction entre les services de téléphonie Android (Android.telephony) et le matériel radio. Le RIL est radio agnostique et inclut la prise en charge du système global de communication mobile (GSM ) basées sur les radios.

Voir ici: http://www.kandroid.org/online-pdk/guide/telephony.html

Mise à jour

Comment le code modem parle-t-il à Android

http://fabiensanglard.net/cellphoneModem/index2.php

http://www.e-consystems.com/blog/Android/?p=498

Vous devez donc écrire les commandes du modem AT dans le socket, puis rild invoquer le rappel à la bibliothèque du fournisseur, puis la bibliothèque du fournisseur délègue à son tour le firmware de la radio.

4
Ajay S

Il n'y a pas d'api pour recevoir une conférence téléphonique dans Android, vous voudrez peut-être jouer avec le système racine et faire votre travail.

officiellement Android ne fournit aucune API pour la conférence téléphonique. Vous pouvez en savoir plus pour accéder en root ici

http://www.kandroid.org/online-pdk/guide/telephony.html

1
Arun divakar