【问题标题】:MediaMetadataRetriever in Android 2.2 and 2.3Android 2.2 和 2.3 中的 MediaMetadataRetriever
【发布时间】:2012-03-31 14:27:13
【问题描述】:

我想使用 MediaMetadataRetriever 来显示 URL 音乐的封面。 在 Android 2.2 中,我尝试下面的代码,它可以工作,但在 Android 2.3.3 中不行。

MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(url);
byte[] cover_array = mmr.extractAlbumArt();
cover = BitmapFactory.decodeByteArray(cover_array, 0, cover_array.length);

在 Android 2.3.3 中,我尝试下面的代码,它可以工作,但在 Android 2.2 中不行。

MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(url);
byte[] cover_array = mmr.getEmbeddedPicture();
cover = BitmapFactory.decodeByteArray(cover_array, 0, cover_array.length);

getEmbeddedPicture() 在 Android 2.2 中将编译失败。 extractAlbumArt() 将在 Android 2.3.3 中编译失败。 我想同时修复 Android 2.2 和 2.3.3。 我该怎么做?

【问题讨论】:

    标签: android


    【解决方案1】:

    尽管有文档,但根据我自己的测试和我在网上阅读的内容,它实际上在 2.2 中运行良好。

    据我所知,它实际上也适用于旧版本的 Android,只是没有记录。

    我不知道为什么 Android 文档说它是在 API 级别 10 (Gingerbread MR1) 中添加的...我怀疑可能是它被添加到文档中的时候?

    【讨论】:

    • @lorne 和 nLL:如何在我在 OS 2.2 上编译的项目中导入 MediaMetadataRetriever?
    • 导入android.media.MediaMetadataRetriever;
    【解决方案2】:

    是的,你不能在 2.2 中使用它,因为 MediaMetadataRetriever 类是从 api 级别 10 开始(在 2.3.3 或更高版本中工作)

    请看这里:

    Further for more Detail

    【讨论】:

      【解决方案3】:

      为什么不在运行时检查操作系统build version 并使用简单的 if/then 来决定调用哪个方法?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多