0

我正在尝试为我的类创建一个方法,该方法soundBuzzer()在调用时会播放一个包含 2s 蜂鸣器声音的 mp3 文件。我已经搜索了很长时间,但是我尝试过的任何方法都不起作用。我能找到的不会在代码中产生语法错误的最接近的事情是:

// function to play buzzer_2s.mp3
public void soundBuzzer() {
    MediaPlayer mp = MediaPlayer.create(null, R.raw.buzzer_2s);
    mp.start();

}

有人可以告诉我出了什么问题。当我运行上述方法时,我的应用程序崩溃了。我试过查看 catlog 中的错误,但它们对我没有意义:

12-26 14:50:57.491: E/AndroidRuntime(16520): FATAL EXCEPTION: main
12-26 14:50:57.491: E/AndroidRuntime(16520): java.lang.NullPointerException
12-26 14:50:57.491: E/AndroidRuntime(16520):    at android.media.MediaPlayer.create(MediaPlayer.java:731)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at com.example.ultimatescoreclock.ClockTimer.soundBuzzer(ClockTimer.java:108)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at com.example.ultimatescoreclock.ClockTimer.onFinish(ClockTimer.java:40)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:118)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at android.os.Looper.loop(Looper.java:137)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at android.app.ActivityThread.main(ActivityThread.java:4424)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at java.lang.reflect.Method.invokeNative(Native Method)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at java.lang.reflect.Method.invoke(Method.java:511)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
12-26 14:50:57.491: E/AndroidRuntime(16520):    at dalvik.system.NativeStart.main(Native Method)`
4

1 回答 1

1

您需要提供MediaPlayer.create()aContext而不是 null。如果你在Activity课堂上这样做,这很容易:

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

如果您从不同的类调用它,则需要以soundBuzzer()某种方式将上下文传递给。

public void soundBuzzer(Context context)
{
    MediaPlayer mp = MediaPlayer.create(context, R.raw.buzzer2s);
    mp.start();
}

如果您不确定 Context 是什么,您可能需要阅读一下。揭秘 Android 中的上下文可能是一个不错的开始。

于 2012-12-26T22:06:47.083 回答