How to detect the chipset info of the android device?
For instance, to disable certain functionality on MediaTek
chipset. (1080p encoding as discussed in this question MediaCodec Encoded video has green bar at bottom and chrominance screwed up)
I have taken a look at http://developer.android.com/reference/android/os/Build.html, but nothing seems relevant.
In addition to the Android API, you can use the proc call cpuinfo to gain information about CPU name (ex, you can get it as mediatek,mt6589). An example of this is at How to get specific information of an Android device from "/proc/cpuinfo" flie? . But specific SOC related bugs will need SOC level identification as future revisions might remove the bugs but retain the same name/partnumber.
There's no really good and straightforward solution, but there's a number of things you can check. It all depends on what you really want to do though - do you want to avoid all MediaTek chipsets, or just one specific one? In some cases, these kinds of issues can also change across different generations of the driver for the encoder.
You can check Build.BOARD
, and hope that it is the same across multiple devices with the same chipset. In most cases it's probably not, though.
You can also try to read the ro.board.platform
system property - it's not publicly available within the Build
class, but you can try to access the android.os.SystemProperties.get
method (via reflection, to make sure to fail safely in case it has changed).
You can also try to decide based on the encoder name, as exposed via MediaCodec.getName()
and MediaCodecInfo.getName()
. This is probably the most straightforward way to do what you want. For some chipset manufacturers, the encoder has got the same name regardless of chipset, while some may have slightly different names in different chipset generations.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With