android - 致命异常:Android 机器上的 Thread-3
问题描述
我将旧代码用于音频播放列表播放器。我让它在所有模拟器上运行,并在我的安卓 8.1.0 手机上试用过。有问题的设备是运行 7.1.2(root)的 Android 机器。我不够聪明,无法弄清楚问题所在,请帮助。
据我所见,该应用程序仅在此带有 Nougat Android 的 android 盒子上崩溃。当调用的歌曲有一个 PNG 文件作为 mp3 元数据专辑图像时,它会崩溃。我不知道这是否是 PNG 格式的问题,或者对于这个 Android 设备来说尺寸是否太大。jpg 格式的 mp3 专辑封面平均为 70kb,但这些 PNG 文件中的大多数约为 500kb。这可能是压倒内存还是什么???这就是模拟器或我的新手机不会崩溃的原因吗?
调试显示此错误:
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));
}
解决方案
推荐阅读
- azure-devops - 与自动化测试相关的测试用例(.NET Core、Jasmine、Jest、Xamarin)
- r - 用于多维数组的 data.frame 的替代方案
- reactjs - 重定向不会在路由器 v4 中绘制组件
- c# - 无法在 asp.net core 2.1 的中间件中写入 HttpContext 的响应正文
- delphi - 有没有办法从通用约束类型获取 GUID?
- swift - TabBar 故事板如何连接?
- excel - 将excel中的动态范围导出到powerpoint
- javascript - 在 Knockout 样式绑定中使用 CSS3 变量
- c++ - 如何在 c++ operator() 中专门调用模板?
- android - 如何在 Android Gradle 构建中使用 pom 文件?