Non so se è possibile rilevare una chiamata a tempo, ma distinguere quando la chiamata ha iniziato è possibile.
Puoi farlo in questo modo, nel CALL_STATE_IDLE:
Uri allCalls = Uri.parse("content://call_log/calls");
String lastMinute = String.valueOf(new Date().getTime() - DAY_IN_MILISECONDS);
//before the call started
Cursor c = app.getContentResolver().query(allCalls, null, Calls.DATE + " > "
+ lastMinute, null, Calls.DATE + " desc");
c.moveToFirst();
if (c.getCount() > 0) {
int duration = Integer.parseInt(c.getString(c.getColumnIndex(Calls.DURATION)));
}
se la durata è> 0 allora allora chiamata è stata risposta.
Ovviamente ci sono altri flag che è necessario utilizzare per determinare che CALL_STATE_IDLE viene chiamato dopo che è stata effettuata una chiamata.
Spero che ti aiuti e ti metta nel modo corretto per ciò che stai cercando di fare.
come funziona il codice ....? –
Questo non funzionerà mai. CALL_STATE_OFFHOOK viene chiamato immediatamente quando il telefono compone un numero in uscita. – AndroidDev