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
可能であれば、まったく使用しないでください。