Java Android MediaPlayer在Prepare()上崩溃

Java Android MediaPlayer在Prepare()上崩溃,java,android,media-player,midi,Java,Android,Media Player,Midi,我正在尝试回放由同一应用程序生成的文件test3.mid,该文件位于缓存目录(我已使用filemanager验证该文件是否存在) 我了解到setDataSource(string)可能会导致错误,因此我选择使用filedesciptor。当我添加prepare()方法时,代码仅给出错误(见下文) 我在什么地方出错了吗?我看到“NullPointerException”。这是否意味着它找不到该文件?我能试试什么 我 Logcat输出为: 07-25 10:36:44.264: E/AndroidR

我正在尝试回放由同一应用程序生成的文件test3.mid,该文件位于
缓存目录
(我已使用filemanager验证该文件是否存在)

我了解到
setDataSource(string)
可能会导致错误,因此我选择使用
filedesciptor
。当我添加
prepare()
方法时,代码仅给出错误(见下文)

我在什么地方出错了吗?我看到“
NullPointerException
”。这是否意味着它找不到该文件?我能试试什么

Logcat输出为:

07-25 10:36:44.264: E/AndroidRuntime(31467): FATAL EXCEPTION: main
07-25 10:36:44.264: E/AndroidRuntime(31467): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.optimuse/com.example.optimuse.MainActivity}: java.lang.NullPointerException
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.os.Looper.loop(Looper.java:137)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.app.ActivityThread.main(ActivityThread.java:4424)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at java.lang.reflect.Method.invokeNative(Native Method)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at java.lang.reflect.Method.invoke(Method.java:511)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at dalvik.system.NativeStart.main(Native Method)
07-25 10:36:44.264: E/AndroidRuntime(31467): Caused by: java.lang.NullPointerException
07-25 10:36:44.264: E/AndroidRuntime(31467):    at com.example.optimuse.MainActivity.onCreate(MainActivity.java:127)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.app.Activity.performCreate(Activity.java:4465)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
07-25 10:36:44.264: E/AndroidRuntime(31467):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)

这完全是愚蠢的,但我忘了

mediaPlayer = new MediaPlayer();

您是否检查了inputstream是否为空?通过调试器..我认为在准备之前关闭inputStream肯定会导致此类错误,而且您还可以执行文件.exists();如果它的mediaPlayer.prepare()语句,那么您的mediaPlayer实例为空
mediaPlayer = new MediaPlayer();