我想播放我/ src / res / raw文件夹中的音频文件,如下所示:
public class SayItActivity extends Activity {
private ImageButton SayLetterImgBtn;
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SayLetterImgBtn=(ImageButton) findViewById(R.id.sayletter);
SayLetterImgBtn.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
mp = MediaPlayer.create(SayItActivity.this, R.raw.a);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.release();
}
});
}
});
}
}
09-08 15:13:16.692: ERROR/AndroidRuntime(477): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.mds.sayit/com.android.mds.sayit.SayItActivity}: java.lang.NullPointerException
09-08 15:13:16.692: ERROR/AndroidRuntime(477): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-08 15:13:16.692: ERROR/AndroidRuntime(477): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-08 15:13:16.692: ERROR/AndroidRuntime(477): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-08 15:13:16.692: ERROR/AndroidRuntime(477): at android.os.Handler.dispatchMessage(Handler.java:99)
09-08 15:13:16.692: ERROR/AndroidRuntime(477): at android.os.Looper.loop(Looper.java:123)
09-08 15:13:16.692: ERROR/AndroidRuntime(477): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-08 15:13:16.692: ERROR/AndroidRuntime(477): at java.lang.reflect.Method.invokeNative(Native Method)
09-08 15:13:16.692: ERROR/AndroidRuntime(477): Caused by: java.lang.NullPointerException
09-08 15:13:16.713: WARN/ActivityManager(59): Force finishing activity com.android.mds.sayit/.SayItActivity
我该如何解决这个问题?
由于
答案 0 :(得分:1)
替换为::
private MediaPlayer mp;
到
MediaPlayer mp_xmPlayer2 = new MediaPlayer(),
更新::
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
答案 1 :(得分:0)
您尚未在媒体播放器上调用prepare方法。
基本上,要使用媒体播放器,您需要调用prepare()。媒体播放器然后准备媒体管道并在完成准备时通知应用程序。只有这样你才能在媒体播放器上调用start()。
让我知道这是否有效。
词shash