Does anyone have any idea about how to detect the number pressed by the caller in receiver side?
You need a DTMF detector/decoder. It is a fairly well researched topic, you can Google it. Imperfect implementations are easy to do (for example, 8 Goertzel filters) and work for most cases. Standard-level quality implementations are much harder, but you don't really need those.
What is the technology behind it?
Multi-tone detection. It is an interesting subject to explore. Even modern data transfer, like, ADSL builds on it (much more advanced than DTMF, though). But, for your purpose, a simple "filter bank" should do.
Is it possible in android?
Of course, you just need to get your audio data (samples) and feed them to your detector. How you get your samples depends on how you get your voice. In Java, you would probably use MediaRecorder
API, and MediaRecorder.AudioSource.VOICE_CALL
to identify you want audio from a call, rather than the MIC(rophone).