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

Vin*_*arg 4 encoding android opengl-es mediacodec

我需要检测android设备的芯片组.所以我可以在MediaTek芯片组上禁用某些功能.(此问题中讨论的1080p编码MediaCodec编码视频底部有绿色条,色度搞定了)

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

Pra*_*ndh 5

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


mst*_*sjo 4

没有真正好的、直接的解决方案,但是您可以检查很多事情。这一切都取决于您真正想要做什么 - 您想避免使用所有 MediaTek 芯片组,还是只使用一种特定的芯片组?在某些情况下,这些类型的问题也可能在不同代的编码器驱动程序中发生变化。

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

您还可以尝试读取ro.board.platform系统属性 - 它在Build类中不是公开可用的,但您可以尝试访问该android.os.SystemProperties.get方法(通过反射,以确保在它发生更改时安全失败)。

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