There is a suitable way to detect a low tech mobile android device?

The long history version:

Generally you use the pixel density to display HD/SD quality. But for some devices like IPad1 or Motorola Xoom Mz605 it failed because they have a high pixel density but very bad hardware.

For IOS you need to only check “iPhone.generation” and go on. But what I can do for androids?

For now, these are my options:

  1. Do nothing, the owner should know that he did a bad purchase.
  2. Always use SD for android. Bad for everybody that expend in a high tech device.
  3. Use some threshold like fps. Good, but tuning threshold are always a problem.
  4. Let the user choose. Not ideal for mobile, but most sensate option.
  5. [the perfect and magic way that you will answer me]

Sorry, no magic, but on some devices you can check graphics power via FillRate, ShaderLevel, and/or CoreCount. However, not all devices do report these values correctly.

I’d go with checking these values to determine the initial quality level and then verify via FPS when running the first time. Finally, like you suggested, add the option to switch quality level in some menu as a last resort.