【问题标题】:Android - MediaPlayer CrashAndroid - 媒体播放器崩溃
【发布时间】:2012-06-03 23:37:22
【问题描述】:

我正在制作一个播放音乐的安卓应用程序。当我运行它时,我得到一个 NullPointer 异常,我不知道为什么!

这是我活动中 onCreate() 中的代码:

MediaPlayer mp = MediaPlayer.create(this, R.raw.tekno);
    mp.start();

这是我的日志猫:

06-03 17:09:51.520: D/MediaPlayer(19255): create failed:
06-03 17:09:51.520: D/MediaPlayer(19255): java.io.IOException: setDataSourceFD failed.: status=0x80000000
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.media.MediaPlayer.setDataSource(Native Method)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.media.MediaPlayer.create(MediaPlayer.java:735)
06-03 17:09:51.520: D/MediaPlayer(19255):   at com.jlennon.gametest.PlayGameActivity.onCreate(PlayGameActivity.java:31)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.app.Activity.performCreate(Activity.java:4465)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.os.Handler.dispatchMessage(Handler.java:99)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.os.Looper.loop(Looper.java:137)
06-03 17:09:51.520: D/MediaPlayer(19255):   at android.app.ActivityThread.main(ActivityThread.java:4424)
06-03 17:09:51.520: D/MediaPlayer(19255):   at java.lang.reflect.Method.invokeNative(Native Method)
06-03 17:09:51.520: D/MediaPlayer(19255):   at java.lang.reflect.Method.invoke(Method.java:511)
06-03 17:09:51.520: D/MediaPlayer(19255):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-03 17:09:51.520: D/MediaPlayer(19255):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-03 17:09:51.520: D/MediaPlayer(19255):   at dalvik.system.NativeStart.main(Native Method)
06-03 17:09:51.530: D/AndroidRuntime(19255): Shutting down VM
06-03 16:36:23.340: W/dalvikvm(15997): threadid=1: thread exiting with uncaught exception (group=0x40a431f8)
    06-03 16:36:23.350: E/AndroidRuntime(15997): FATAL EXCEPTION: main
    06-03 16:36:23.350: E/AndroidRuntime(15997): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jlennon.gametest/com.jlennon.gametest.PlayGameActivity}: java.lang.NullPointerException
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.os.Handler.dispatchMessage(Handler.java:99)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.os.Looper.loop(Looper.java:137)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.app.ActivityThread.main(ActivityThread.java:4424)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at java.lang.reflect.Method.invokeNative(Native Method)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at java.lang.reflect.Method.invoke(Method.java:511)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at dalvik.system.NativeStart.main(Native Method)
    06-03 16:36:23.350: E/AndroidRuntime(15997): Caused by: java.lang.NullPointerException
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at com.jlennon.gametest.PlayGameActivity.onCreate(PlayGameActivity.java:32)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.app.Activity.performCreate(Activity.java:4465)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
    06-03 16:36:23.350: E/AndroidRuntime(15997):    ... 11 more

我从中得到的是我的 MediaPlayer.create() 返回 null,我想这一定与我的文件有关。我的音乐文件是 tekno.wav。

提前非常感谢!

【问题讨论】:

    标签: java android eclipse media-player


    【解决方案1】:
    06-03 17:09:51.520: D/MediaPlayer(19255): java.io.IOException: setDataSourceFD failed.: status=0x80000000
    

    由于某种原因,Android 似乎无法读取您的 WAV 文件。有关可能相关的一些信息,请参阅以下链接:

    setDataSourceFd Failed

    MediaPlayer.setDataSource causes IOException for valid file

    【讨论】:

    • 这解决了我的问题。我从 Internet 下载了一个 mp3 click-sound,但无法用它实例化 MediaPlayer。在使用 Audacity 重新转换后,效果很好!
    • 嗨,我也遇到了这个问题。你能解释一下“重新转换”是什么意思吗?您的意思是将 mp4 转换为 avi,然后将此 avi 转换为 mp4?
    【解决方案2】:

    尽量不要使用getApplicationContext,这可能会返回null。 也许这也是这里发生的事情。

    例如:

    MediaPlayer mp = MediaPlayer.create(this, R.raw.tekno);
    

    【讨论】:

    • 我已经这样做了,但它仍然不起作用。我的 mediaPlayer 返回 null,这可能是什么原因?
    • 可能您的声音文件已损坏。尝试另一个。
    【解决方案3】:

    试试这个:

    MediaPlayer mp = MediaPlayer.create(this, R.raw.tekno);
    mp.start();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多