【问题标题】:MediaMetadata.getString java.lang.RuntimeException: Could not read bitmap from parcel blobMediaMetadata.getString java.lang.RuntimeException:无法从包裹 blob 中读取位图
【发布时间】:2015-11-01 21:41:28
【问题描述】:

调用 MediaMetadata.getString,报告中有以下崩溃,但并非总是重现:

 java.lang.RuntimeException: Could not read bitmap from parcel blob.
    at android.graphics.Bitmap.nativeCreateFromParcel(Native Method)
    at android.graphics.Bitmap.access$000(Bitmap.java:32)
    at android.graphics.Bitmap$1.createFromParcel(Bitmap.java:1477)
    at android.graphics.Bitmap$1.createFromParcel(Bitmap.java:1469)
    at android.os.Parcel.readParcelable(Parcel.java:2246)
    at android.os.Parcel.readValue(Parcel.java:2146)
    at android.os.Parcel.readArrayMapInternal(Parcel.java:2479)
    at android.os.BaseBundle.unparcel(BaseBundle.java:221)
    at android.os.BaseBundle.getCharSequence(BaseBundle.java:953)
    at android.os.Bundle.getCharSequence(Bundle.java:716)
    at android.media.MediaMetadata.getText(MediaMetadata.java:334)
    at android.media.MediaMetadata.getString(MediaMetadata.java:347)

代码如下,MediaMetadata元数据来自api MediaSessionManager.OnActiveSessionsChangedListener的控制器,应该是第三方音乐app创建的。

    meta.getString(MediaMetadata.METADATA_KEY_ALBUM_ARTIST);
    meta.getString(MediaMetadata.METADATA_KEY_ARTIST);            
    meta.getString(MediaMetadata.METADATA_KEY_AUTHOR);         
    meta.getBitmap(MediaMetadata.METADATA_KEY_ART);
    meta.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);            
    meta.getString(MediaMetadata.METADATA_KEY_ALBUM);
    meta.getString(MediaMetadata.METADATA_KEY_TITLE);

为什么 getString 会解析位图?发生这种情况时内存是否会耗尽?

【问题讨论】:

  • 你在读什么领域/你是如何构建MediaMetadata的?
  • 添加细节@ianhanniballake
  • 有这方面的消息吗?
  • @SarahMa 你能修复它吗?我也有同样的问题。

标签: java android bitmap android-music-player


【解决方案1】:

我认为当您使用.putBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON, icon) 将大位图放入MediaMetaData 对象时会发生这种情况。此位图用于MediaDescription,因此它应该非常小,因为它是序列化的。每次您在元数据上调用 getString 时,它实际上都会被反序列化。

因此,这个问题的解决方案是只为METADATA_KEY_DISPLAY_ICON 使用小位图,或者尽可能不使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多