Naseeb Sheoran
Naseeb Sheoran

Reputation: 473

getting exception while using media player

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.

Upvotes: 0

Views: 295

Answers (4)

Lazy Ninja
Lazy Ninja

Reputation: 22537

This may not be the problem but you should change this:

if (theText.equals(" hello"){
     mp = MediaPlayer.create(MainActivity.this, R.raw.sound);
    mp.prepare();
    mp.start();}

Upvotes: 0

Lunar
Lunar

Reputation: 4711

Try;

mp = MediaPlayer.create(MainActivity.this, R.raw.sound);
if(mp!=null) {
   mp.start();
}

Upvotes: 0

rajpara
rajpara

Reputation: 5203

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 failed

One 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

if(mp!=null)
  mp.start();

Upvotes: 2

Alexis C.
Alexis C.

Reputation: 93872

According to the MediaPlayer state diagram, you have to call mp.prepare() before mp.start().

enter image description here

Upvotes: 1

Related Questions