Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - play sound on button click - Null pointer exception

I am trying to play a sound file on the click of a button. The sound is just 1 sec long. It plays well the first few times I click the button, but after a while it gives a NullPointerException. Here's the code:

button[i].setOnClickListener(new OnClickListener() {     public void onClick(View view) {                 mp = MediaPlayer.create(Test.this, R.raw.mysound);            mp.start();     } }); 

And here's the exception:

07-29 23:07:27.690: ERROR/AndroidRuntime(10542): Uncaught handler: thread main exiting due to uncaught exception 07-29 23:07:27.710: ERROR/AndroidRuntime(10542): java.lang.NullPointerException 07-29 23:07:27.710: ERROR/AndroidRuntime(10542):     at com.example.mypackage.Test$3.onClick(Test.java:270) 
like image 401
Chris Avatar asked Jul 30 '10 06:07

Chris


2 Answers

Thanks you for your answers! Appreciate it!

Here's how I finally managed to get it work:

            button[i].setOnClickListener(new OnClickListener() {                 public void onClick(View view) {                      mp = MediaPlayer.create(Test.this, R.raw.mysound);                     mp.setOnCompletionListener(new OnCompletionListener() {                          @Override                         public void onCompletion(MediaPlayer mp) {                             // TODO Auto-generated method stub                             mp.release();                         }                      });                        mp.start();                 }              }); 
like image 117
Chris Avatar answered Sep 21 '22 15:09

Chris


You can also try:

final soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); final sound = soundPool.load(this, R.raw.mysound, 1);  button[i].setOnClickListener(new OnClickListener() {      public void onClick(View view)      {                 soundPool.play(sound, 1.0f, 1.0f, 0, 0, 1.0f);      } }); 
like image 24
Yoav Epstein Avatar answered Sep 21 '22 15:09

Yoav Epstein