/ / MediaMetadata.getString java.lang.RuntimeException:区画blobからビットマップを読み込めませんでした - java、android、bitmap、android-music-player

MediaMetadata.getString java.lang.RuntimeException:パーセルblobからビットマップを読み込めませんでした - java、android、bitmap、android-music-player

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のコントローラからのものです。サードパーティの音楽アプリで作成する必要があります。

    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がビットマップを解析するのはなぜですか?これが発生したときにメモリが不足している可能性はありますか?

回答:

回答№1は0

これは、大きなビットマップを MediaMetaData オブジェクト .putBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON, icon)。このビットマップは MediaDescription したがって、それは直列化されているのでかなり小さくなければなりません。 getString メタデータについて

そのため、この問題を解決するには、小さなビットマップのみを使用します。 METADATA_KEY_DISPLAY_ICON 可能であれば、まったく使用しないでください。