2012-07-25 65 views
0

我试图播放由相同的应用程序产生的,是在cache directory文件test3.mid崩溃(我已经验证该文件存在与文件管理器)的Android的MediaPlayer上准备()

我读heresetDataSource(string)可能会导致错误,所以我选择使用filedesciptor。当我添加prepare()方法时,代码仅给出错误(请参见下文)。

我在某处做错了吗?我看到'NullPointerException'。这是否意味着它找不到该文件?我可以尝试什么?

try { 
     String filePath = getCacheDir() + "/test3.mid"; 
     File file = new File(filePath); 
     FileInputStream inputStream = new FileInputStream(file); 
     mediaPlayer.setDataSource(inputStream.getFD()); 
     inputStream.close(); 
    } catch (Exception e1) { 
     e1.printStackTrace(); 
    } 
    try { 
     mediaPlayer.prepare(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

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) 
+0

你检查你的InputStream不为空?通过调试器。 – progdoc 2012-07-25 10:50:15

+0

我认为在准备之前关闭inputStream必须给出这种错误 – AkashG 2012-07-25 10:52:26

+0

也可以执行file.exists();以确保它存在。 – Slickelito 2012-07-25 10:53:06

回答

0

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

mediaPlayer = new MediaPlayer(); 
相关问题