2015-03-30 1 views
3

J'applique une fonction dans laquelle une alarme sortante est déclenchée, f.e. Si le téléphone tombe et ne bouge pas pendant les années 60 après. Ensuite, entre 1-5 numéros devraient être appelés. Exemple de la façon dont il devrait fonctionner:Appels téléphoniques multiples à partir de l'application Android

  1. Téléphone tombe vers le bas et ne marche pas se déplacer pour 60
  2. Le numéro 1 est appelé
  3. Numéro 1 n'accepte pas appel à 20 ans
  4. numéro 2 est appelé
  5. Numéro 2 n'accepte pas appel à 20 ans
  6. numéro 3 est appelé
  7. Numéro 3 accepte l'appel, l'alarme est mis fin à

L'alarme est déclenchée correctement et je peux passer un appel. Mais je ne trouvais rien sur la façon de déterminer si un appel était accepté après x secondes, et comment démarrer un nouvel appel alors. Toute aide/source?

Edit: Via le PhoneStateListener Je suis maintenant en mesure de voir si l'appel a été annulé. Cependant, si ce n'est pas le cas, je ne peux pas obtenir l'état actuel, donc je ne sais pas si ça sonne encore, s'il est en train d'appeler ou s'il est allé dans la boîte aux lettres. Dans la description du CALL_STATE_OFFHOOK, il est assez clair que vous ne pouvez pas voir si l'appel a été répondu ou le numéro vient d'être composé. Y at-il une solution de contournement pour cela, peut-être même avec l'enracinement du téléphone ou quelque chose comme ça? Tout indice est apprécié.

+0

vous devrez peut-être dépendre des journaux d'appels, après 20s, vous devrez vérifier le dernier appel et sa durée d'appel. –

Répondre

1

Il semble que ce ne soit pas possible.

La documentation pour Intent.ACTION_CALL indique qu'il ne renvoie pas de sortie (au moins, je suppose que c'est ce que le commentaire "Output: nothing" signifie). Les questions similaires here et here n'ont pas reçu de réponse positive utile.

0

Bien que l'utilisation d'une intention ne soit PAS possible car vous ne pouvez pas vérifier l'état, ce n'est PAS la façon dont vous devriez appeler le service de téléphonie puisque vous voulez contrôler votre programme. Le meilleur moyen est de: a) activer les autorisations de téléphonie dans votre application: b) instancier la classe de gestionnaire de téléphonie dans votre activité, puis c) gérer les états d'appel Android composer/écouter votre activité pour stocker le état précédent. S'il était en train de «sonner» et que l'état actuel était inactif, ils ont annulé l'appel. Si l'état actuel est décroché et que l'état précédent sonnait, ils ont répondu à l'appel. Voir un exemple de travail ici: http://www.compiletimeerror.com/2013/08/android-call-state-listener-example.html

+0

Malheureusement, cela n'aide pas mes besoins. CALL_STATE_RINGING est seulement pour les appels entrants. Au moment où un appel sortant est effectué, l'état est CALL_STATE_OFFHOOK, jusqu'à ce que le téléphone soit raccroché et que l'état soit à nouveau CALL_STATE_IDLE. –