2015-07-26 16 views
6

Sto provando a rilevare quando un utente risponde al telefono. La mia app chiama il numero di telefono ma senza vedere se l'utente ha risposto, non posso eseguire una funzione chiave di cui ho bisogno. Sembra che tu sia stato in grado di farlo nella versione 5 e successive come visto in questo post, ma non riesco a capire come farlo. So che qualcuno deve aver escogitato un work-around perché come una persona in precedenza ha dichiarato che il timer di chiamata inizia quando l'utente risponde, quindi deve esserci un modo per rilevarlo. Questa domanda è stata pubblicata molte volte, ma nessuno pubblica una risposta CORRETTA.Come verificare se una chiamata in uscita ha una risposta, in Android?

Sembra che la risposta si trova in Tim S. risposta qui:

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

Eventuali risposte o indicazioni per questo? –

+0

hai trovato qualche soluzione? – Mujtaba

risposta

0

non credo che sia possibile senza realmente controllare il tono di chiamata per le modifiche. Ho intenzione di dare un'idea di come potrebbe essere fatto perché nessuno ha ancora dato alcuna risposta.

Su entrambi i miei telefoni attuali (uno è root, uno non lo è), il numero viene composto e quindi viene avviato il "timer di chiamata". Il telefono stesso sembra non sapere nemmeno quando la chiamata ha avuto risposta, solo quando è finita. Non credo che ci sia un modo semplice per farlo.

Se si confronta ogni singola suoneria e si confronta la spaziatura per assicurarsi che la chiamata stia ancora squillando, si saprà che non è stata data risposta. Una volta rilevato il rumore che non dovrebbe essere presente, si può presumere che qualcuno abbia risposto e detto "Ciao" o qualsiasi altra cosa (si spera non esattamente alla stessa ora della suoneria). Sai già come rilevare se la chiamata è finita. Non ho idea di quale tipo di API audio qualcuno potrebbe iniziare con un progetto come questo.

Problemi correlati