如何检测android设备中的芯片组?

时间:2016-01-27 06:13:35

标签: android encoding opengl-es mediacodec

我需要检测android设备的芯片组。所以我可以在MediaTek芯片组上禁用某些功能。 (此问题MediaCodec Encoded video has green bar at bottom and chrominance screwed up中讨论的1080p编码)

我看过http://developer.android.com/reference/android/os/Build.html,但似乎没什么关系。

2 个答案:

答案 0 :(得分:5)

除了Android API之外,您还可以使用proc调用cpuinfo来获取有关CPU名称的信息(例如,您可以将其作为mediatek,mt6589获取)。这方面的一个例子是How to get specific information of an Android device from "/proc/cpuinfo" flie?。但是特定的SOC相关错误将需要SOC级别识别,因为未来的修订可能会删除错误但保留相同的名称/部分号。

答案 1 :(得分:4)

没有非常好的和直接的解决方案,但有很多事情可以检查。这完全取决于你真正想做的事情 - 你想避开所有联发科技芯片组,还是仅仅一个特定的芯片组?在某些情况下,这些问题也会在编码器的不同代驱动程序中发生变化。

您可以检查Build.BOARD,并希望在具有相同芯片组的多个设备上它是相同的。但在大多数情况下,它可能不是。

您还可以尝试阅读ro.board.platform系统属性 - 它在Build课程中不公开,但您可以尝试访问android.os.SystemProperties.get方法(通过反射,制作)如果它已经改变,一定要安全失败。)

您还可以尝试根据编码器名称决定,通过MediaCodec.getName()MediaCodecInfo.getName()公开。这可能是最直接的方式来做你想要的。对于一些芯片组制造商而言,无论芯片组如何,编码器都具有相同的名称,而在不同的芯片组代中,有些名称可能略有不同。