According to this link: here, nmap 5.2 onwards is now supposed to detect android smartphones. I am using nmap 6.01 but it only identifies android devices as running a linux kernel.
I've used nmap extensively and while I've found it's in general pretty good at discovering the OS on server and desktop/laptop hardware it's pretty poor at detecting embedded and handheld kernels.
This is because quite frequently these systems are not listening on any ports, and it's the responses to TCP handshake process that gives the most OS detection information.
Without an open port all nmap has to work on is the response to closed ports and ICMP echo replies.
From the nmap docs,
Nmap gets as close as it can from the ports it can see - so here it can see enough to know it is a Linux, but not enough to pin it down to a particular OS.
Have a read of this chapter to see all the identifiers nmap uses when trying to ascertain OS.