2013-11-15 30 views
2

Android提供了一系列API,如'MediaCodec',可讓用戶從4.1(API級別16)以後獲取系統的編解碼器信息。如何獲取Android 4.0上的編解碼器列表

但是,我的問題是如何獲得4.0上的編解碼器列表。

順便說一句,我已經檢查了4.1的源代碼,API實現通過解析文件來獲取信息:system/etc/media_codec.xml。但在4.0上,沒有這樣的文件。

回答

2

MediaCodec已添加到API 16.在此之前,可用組件在實現和供應商提供的omx庫中進行了硬編碼。在這方面,Java方面沒有api。從C++開始,你可以通過在adb外殼中調用stagefright程序(使用-l-p)來獲取該信息。有關底層如何檢查可用編解碼器的信息,請參閱http://source.android.com/devices/media.html。在以前的版本中,現在在xml文件中的信息位於c/C++源代碼中。 stagefright程序(http://androidxref.com/4.0.4/xref/frameworks/base/cmds/stagefright/stagefright.cpp)的源代碼將是一個很好的開始並查看如何獲取組件列表的地方。查看main函數中的if (listComponents)塊。

更多信息:How to create a stagefright plugin這裏有一些關於如何在兩個版本中完成編解碼器交易的背景。

0

不是技術上最令人興奮的解決方案,但您可以簡單地在Android文檔中對Core Media Formats table中的信息進行硬編碼。

在某些情況下,某些設備的某些編解碼器超出了該版本所保證的那種方法可能會遺漏的情況,但這對您的目的可能是可以接受的。