As you correctly stated Spring Mobile uses the 'User Agent' HTTP Header to perform detection. The only credible way that I know of, that would give you a good clue of what kind of platform the client is running, is to run some kind of OS Detection Scan like NMAP does which is based on TCP fingerprinting.
I seriously doubt you would want to use something like that in a server environment
Here is an article which extensively discusses device detection (no OS detection)