I'd suggest getting the Android OpenCV port working as a good first step.
Due to real-time requirements for image processing, most of the face detection/recognition code you're going to see is likely to be in C++. Many systems may use OpenCV as a base and/or you can cobble together a reasonable solution from OpenCV's many low-level functions.
The CVCamera sample in there is also good for showing how JNI/NDK interop works on Android which can be helpful for interfacing with other code.