No sé si se puede detectar una llamada programada, pero las diferencias cuando se inició la llamada es posible.
Puede hacerlo de esta manera, en el 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)));
}
si la duración es> 0, entonces llamada fue respondida.
Obviamente, existen otros indicadores que debe utilizar para determinar que se llame a CALL_STATE_IDLE después de realizar una llamada.
Espero que te ayude y te ponga en la forma correcta de lo que estás tratando de hacer.
cómo está funcionando el código ...? –
Esto nunca funcionará. CALL_STATE_OFFHOOK se llama inmediatamente cuando el teléfono marca un número saliente. – AndroidDev