Mobile device detection can be a challenge. Responsive web techniques achieves detection based just on screen sizes. While this is a nice idea, I see many responsive sites where the designer has created for different screen sizes not for mobile.
A common device detection mechanism is carried out server side - analysing the user agent string. The user agent frequently provides information around what device is being used. There are web services available which can pin point thousands of devices based on the user agent and provide device capability information - such as http://www.handsetdetection.com.
Typically it is not needed to know the exact device, often we only need to know what browser version and OS in order to target the right code to the right device. While this is a simple task, the recent Kindle Fire HD sold in the UK includes some confusing messaging in its user agent string. Here is a sample UK Kindle Fire user agent string
Mozilla/5.0 (Linux; U; Android 4.0.3; <locale>; KFOT Build/IML74K) AppleWebKit/<webkit> (KHTML, like Gecko) Silk/<version> Mobile Safari/<safari> Silk-Accelerated=<state>
Some device detection scripts have got confused by the inclusion of 'AppleWebKit' and 'Mobile Safari' coupled with Android. So those using basic detection, beware!
If your vendor deals with this techy stuff for you the question you need to ask is 'Have you tested on a Kindle Fire HD? Did the device detection work?'