【发布时间】:2020-04-08 19:24:21
【问题描述】:
我正在尝试使用给定的 uri 创建 Mediaplayer 会话。但它会导致 NullpointerException。
Uri uri = Uri.parse(path);
// Creating MediaPlayer with given song's URI
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
mediaPlayer = MediaPlayer.create(this, uri);
try {
// Setting the MediaPlayer Listener
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
seekBar.setMax(mp.getDuration());
mediaPlayer.start();
changeSeekbar();
}
});
} catch (Exception e) {
Log.e("ERROR", e.toString());
}
给定 Logcat:
2020-04-07 22:21:05.289 12237-12237/com.example.musicappresearch2 E/Path: /storage/emulated/0/Music/Alone - Viren.mp3
2020-04-07 22:21:05.289 12237-12237/com.example.musicappresearch2 E/ERROR: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.setOnPreparedListener(android.media.MediaPlayer$OnPreparedListener)' on a null object reference
你能告诉我我做错了什么吗?谢谢。
【问题讨论】:
-
根据共享的日志,您的 mediaPlayer 对象未实例化并且它为空,因此应用程序在尝试对其调用 setOnPreparedListener 方法时给出 NPE。您可以在调用方法之前为 mediaPlayer 添加空检查并尝试。
-
这些都没有帮助。实际上这适用于 API 23,但现在在 Android 10 中它提供了 NPE
-
你是如何获得 Uri 的?通过意图?
标签: java android android-mediaplayer