2015-07-26 7 views
6

Ich versuche zu erkennen, wenn ein Benutzer das Telefon beantwortet. Meine App wählt die Telefonnummer, aber ohne zu sehen, ob der Benutzer geantwortet hat, kann ich keine Schlüsselfunktion ausführen, die ich brauche. Es scheint, dass Sie dies in der Version 5 und höher, wie in diesem Beitrag gesehen, können, aber ich kann nicht herausfinden, wie es geht. Ich weiß, dass jemand eine Umgehung gefunden haben muss, weil, wie eine Person zuvor sagte, der Anruf-Timer startet, sobald der Benutzer antwortet, so muss es eine Möglichkeit geben, es zu erkennen. Diese Frage wurde viele Male gepostet, aber niemand gibt eine KORREKTE Antwort.Wie überprüft man, ob ein ausgehender Anruf in Android beantwortet wird?

Es scheint, die Antwort liegt in Tim S. hier beantworten:

Cannot detect when outgoing call is answered in Android

<uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" /> 

<receiver android:name=".listener.OutCallLogger"> 
    <intent-filter> 
     <action android:name="android.intent.action.PRECISE_CALL_STATE" /> 
    </intent-filter> 
</receiver> 
public class OutCallLogger extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     switch (intent.getIntExtra(TelephonyManager.EXTRA_FOREGROUND_CALL_STATE, -2) { 
      case PreciseCallState.PRECISE_CALL_STATE_IDLE: 
       Log.d(This.LOG_TAG, "IDLE"); 
       break; 
      case PreciseCallState.PRECISE_CALL_STATE_DIALING: 
       Log.d(This.LOG_TAG, "DIALING"); 
       break; 
      case PreciseCallState.PRECISE_CALL_STATE_ALERTING: 
       Log.d(This.LOG_TAG, "ALERTING"); 
       break; 
      case PreciseCallState.PRECISE_CALL_STATE_ACTIVE: 
       Log.d(This.LOG_TAG, "ACTIVE"); 
       break; 
     } 
    } 
} 
+0

Irgendwelche Antworten oder Anweisungen dafür? –

+0

Haben Sie eine Lösung gefunden? – Mujtaba

Antwort

0

Ich glaube nicht, es ohne tatsächlich die Überprüfung des Klingeltons für Änderungen möglich ist. Ich werde eine Vorstellung davon geben, wie es möglich sein könnte, weil noch niemand Antworten gegeben hat.

Auf beiden meiner derzeitigen Telefone (einer ist root, einer ist nicht), wird die Nummer gewählt und dann beginnt der 'Anruf-Timer'. Das Telefon selbst scheint nicht einmal zu wissen, wann der Anruf beantwortet wurde, nur wenn es beendet wurde. Ich glaube nicht, dass es einen einfachen Weg gibt, dies zu tun.

Wenn Sie jeden einzelnen Klingelton vergleichen und den Abstand vergleichen, um sicherzustellen, dass der Anruf noch klingelt, wissen Sie, dass er nicht beantwortet wurde. Sobald Sie Geräusche feststellen, die nicht da sein sollten, können Sie davon ausgehen, dass jemand geantwortet hat und "Hallo" oder was auch immer gesagt hat (hoffentlich nicht zur selben Zeit wie ein Klingelton). Sie wissen bereits, wie Sie feststellen können, ob der Anruf beendet wurde. Ich habe keine Ahnung, mit welcher Art von Sound-APIs jemand bei einem Projekt wie diesem anfängt.

Verwandte Themen