/ / MediaMetadata.getString java.lang.RuntimeException: Nepodarilo sa prečítať bitmapu z blob blob - java, android, bitmap, android-music-player

MediaMetadata.getString java.lang.RuntimeException: Nepodarilo sa čítať bitmapy z parcely blob - java, android, bitmapy, android-music-player

Zavolajte na MediaMetadata.getString, v prehľade máte zlyhanie, ale nie vždy opakovanie:

 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)

Tento kód je funkčný, meta MediaMetadata je z radiča api MediaSessionManager.OnActiveSessionsChangedListener, mal by byť vytvorený pomocou hudobnej aplikácie tretej časti.

    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);

Prečo getString bude analyzovať bitmapu? je možné, že v takomto prípade je pamäť vyčerpaná?

odpovede:

0 pre odpoveď č. 1

Myslím, že sa to stane, keď vložíte veľké bitmapy MediaMetaData objekt s .putBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON, icon), Táto bitová mapa sa používa na MediaDescription a preto by mal byť dosť malý, pretože je serializovaný. Je to vlastne deserializované zakaždým, keď zavoláte getString o metaúdajoch.

Riešením tohto problému by preto bolo použitie iba malých bitových máp pre METADATA_KEY_DISPLAY_ICON alebo ak je to možné, nepoužívajte ho vôbec.