I am using media player to play a mp3 file.But when i run it,i am getting the null pointer exception.Please tell me what is the problem.
This is the code:
package com.example.soundplayer;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
/**
* Variables
*/
MediaPlayer mp = null;
String hello = "Hello!";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* Talking with the buttonHello
*/
final Button buttonHello = (Button) findViewById(R.id.idHello);
buttonHello.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
managerOfSound(hello);
} // END onClick()
}); // END buttonHello
} // END onCreate()
/**
* Manager of Sounds
*/
protected void managerOfSound(String theText) {
if (mp != null) {
mp.reset();
mp.release();
}
if (theText == hello){
mp = new MediaPlayer();
mp = MediaPlayer.create(MainActivity.this, R.raw.sound);
mp.start();}
}
}
This is the exception:
08-22 13:13:01.001: W/dalvikvm(785): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
08-22 13:13:01.001: E/AndroidRuntime(785): Uncaught handler: thread main exiting due to uncaught exception
08-22 13:13:01.020: E/AndroidRuntime(785): java.lang.NullPointerException
08-22 13:13:01.020: E/AndroidRuntime(785): at com.example.soundplayer.MainActivity.managerOfSound(MainActivity.java:57)
08-22 13:13:01.020: E/AndroidRuntime(785): at com.example.soundplayer.MainActivity$1.onClick(MainActivity.java:30)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.view.View.performClick(View.java:2364)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.view.View.onTouchEvent(View.java:4179)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.widget.TextView.onTouchEvent(TextView.java:6541)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.view.View.dispatchTouchEvent(View.java:3709)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-22 13:13:01.020: E/AndroidRuntime(785): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
08-22 13:13:01.020: E/AndroidRuntime(785): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
08-22 13:13:01.020: E/AndroidRuntime(785): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.os.Handler.dispatchMessage(Handler.java:99)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.os.Looper.loop(Looper.java:123)
08-22 13:13:01.020: E/AndroidRuntime(785): at android.app.ActivityThread.main(ActivityThread.java:4363)
08-22 13:13:01.020: E/AndroidRuntime(785): at java.lang.reflect.Method.invokeNative(Native Method)
08-22 13:13:01.020: E/AndroidRuntime(785): at java.lang.reflect.Method.invoke(Method.java:521)
08-22 13:13:01.020: E/AndroidRuntime(785): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-22 13:13:01.020: E/AndroidRuntime(785): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-22 13:13:01.020: E/AndroidRuntime(785): at dalvik.system.NativeStart.main(Native Method)
I am getting exception in this line:
mp.start();
Thanks in advance.
You have to get the result from create method and check that result before using that mediaPlayer because create function will return media player object if successfully created and NULL if it fail to create media player.
check the description of that function in official site
a MediaPlayer object, or null if creation failedOne more thing You need not to call prepare() function because
On successfully created MediaPlayer , prepare() will already have been called and must not be called again.you can check mp is null or not before calling mp.start