2012-12-19 7 views
5

In meiner Anwendung leitete ich einen ausgehenden Anruf ein und ich verwende PhoneStateListener, um über Anrufstatus zu wissen.Gehender Anruf beantwortete Zustand in Android 2.2+

Immer wenn ich anfange zu telefonieren, ist der Telefonstatus TelephonyManager.CALL_STATE_OFFHOOK. Wenn der Anrufempfänger den Anruf entgegennahm, ändere ich den Zustand des Telefons nicht.

Ich versuchte viele, aber nicht diesen Status beantwortet zu bekommen. Jemand hat gesagt, verwenden Sie HFP (Hands Free Profile) von Bluetooth, um Anruf beantwortet Zustand zu bekommen. Aber ich habe keine Informationen über HFP von Android-Entwickler-Website erhalten.

Wenn jemand mit dem gleichen Problem konfrontiert wurde und die Lösung bekam, geben Sie bitte Ihre wertvollen Vorschläge.

Antwort

0

Ich hatte auch das gleiche Problem. Dies ist möglicherweise nicht die Antwort auf Ihre Frage. Ich teile nur das, was ich getan habe.

Ich hatte eine Aktivität, die den Kontakt öffnet und einen Anruf tätigen kann. Was ich wollte, ist zu wissen, ob der Anruf erfolgreich war (d. H. Der Empfänger hat den Anruf angenommen).

Es gab keine Lösung, die ich zu dieser Zeit mit PhoneStateListener fand.

Also, was ich getan habe, ist überprüft die Anruflisten, wenn es einen ausgehenden Anruf zu den Telefonnummern dieses Kontakts nach dem Start der Kontaktaktivität hat.

Sehen Sie, ob seine Hilfe.

+0

Ich habe das gehört, aber wenn wir Anruflisten überprüfen müssen? Gibt es irgendeinen Call-Log-Change-Listener oder so etwas? –

+0

überprüfen Sie dies, wenn es Ihnen helfen könnte http://StackOverflow.com/Questions/4422410/How-to-Implement-a-Contentobserver-for-call-logs –

+0

Dies wird nicht funktionieren. Das Anrufprotokoll protokolliert weiterhin eine Dauer, die mit dem Zeitpunkt beginnt, an dem das Telefon gewählt wird. Sie können nicht zwischen der Wählzeit und dem beantworteten Status unterscheiden. Derzeit gibt es keine Lösung, um festzustellen, ob ein Anruf beantwortet wurde. – AndroidDev

0

Sie möchten etwas spezifisch für Bluetooth? Ansonsten kann ich Quellen liefern

1

Die CALL_STATE_OFFHOOK ändert sich nicht, wenn der Anruf von der Recepient beantwortet wird:

Geräte Rufzustand: Hörer abheben. Mindestens ein Anruf besteht, dass wählt, aktiv, oder in der Warteschleife ist, und keine Anrufe klingeln oder warten.

Der Status sollte sich nicht ändern, solange sich das Telefon im Anruf befindet, unabhängig davon, ob es angenommen wird oder nicht.

Diese Frage viele Artikel gefragt, und bisher keiner der denen, die ich gefunden wurden gelöst worden: Android : How to get a state that the outgoing call has been answered?Detect if an outgoing call has been answered, Android : How to get a state that the outgoing call has been answered? (Es sind viele andere). Die dort bereitgestellten Lösungen verlassen sich auf den Zustand CALL_STATE_OFFHOOK, um zu ändern, wenn der Anruf beantwortet wird, was nicht geschieht.

Scheint so, als gäbe es keine öffentliche API, die verwendet werden kann, um den Status des ausgehenden Anrufs zu erhalten. Die beste Problemumgehung, die ich sehe, ist, was Vivek Khandelwal vorgeschlagen hat. Es ist nicht so lange zu programmieren und hat auch keine großen Leistungseinbußen. Wenn Sie nicht zu viele Berechtigungen hinzufügen (Sie müssen jetzt READ_CALL_LOGS hinzufügen), ist ein Problem, verwenden Sie es.