Я использую старый код для воспроизведения плейлиста. Я работал на всех эмуляторах и пробовал на своем телефоне с Android 8.1.0. У устройства, имеющего проблемы, есть Android box, работающий на 7.1.2 (root). Я не достаточно умен, чтобы понять, в чем проблема. Это происходит сбой, когда вызываемая песня имеет файл PNG в качестве изображения альбома метаданных mp3. Я не знаю, если это проблема с форматом PNG, или размер слишком велик для этого устройства Android. Средний размер обложки mp3-альбома в формате jpg составляет 70 КБ, но большинство этих файлов PNG составляют около 500 КБ. Может ли это быть ошеломляющим воспоминание или что-то ??? Вот почему эмуляторы или мой новый телефон не дают сбой?
Отладка показывает эту ошибку:
D/MainActivity: media start
D/MainActivity: just loaded: /storage/emulated/0/Music
D/MainActivity: path :/storage/emulated/0/Music
D/MainActivity: proper: 3, other: 0; 3
D/MainActivity: player, permissions: true
D/MediaPlayer: setSubtitleAnchor in MediaPlayer
D/MainActivity: AUDIOFOCUS_REQUEST_GRANTED
D/MainActivity: onCreate: ends
E/AndroidRuntime: FATAL EXCEPTION: Thread-3
Process: com.mk.music, PID: 7511
java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFED
at android.media.MediaMetadataRetriever.setDataSource(Native Method)
at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:69)
at com.mk.music.entity.Track.<init>(Track.java:35)
at com.mk.music.MainActivity$4.run(MainActivity.java:236)
at java.lang.Thread.run(Thread.java:761)
Track.java: 35 - это команда,
34 public Track(File file, MediaMetadataRetriever mmr) {
35 mmr.setDataSource(file.getAbsolutePath());
MainActivity.java: 236 это,
233 Thread t = new Thread(new Runnable() {
234 public void run() {
236 for(File file : properFiles) {
237 Track tempTrack = new Track(file, mmr);
238 allTracks.add(tempTrack);
239 playList.add(allTracks.indexOf(tempTrack));
}