I try to play a sound from R.raw. inside a Thread/Runnable But I can't get this to work.
new Runnable(){ public void run() { //this is giving me a NullPointerException, because getBaseContext is null MediaPlayer mp = MediaPlayer.create( getBaseContext(), R.raw.soundfile); while (true) { if (something) play something } }
How can I get the real Context inside the run method? It is null no matter what I try. Or is there a better way to do this?
You should use getBaseContext. Instead, if this runnable is within an activity, you should store the context in a class variable like this:
Also you shouldn't have an infinite loop like that playing a sound over and over - there should be a sleep in there in order to prevent the sound from playing over and over in a small amount of time and overlapping the same sounds with each other.
You need to declare a Handler object in your UI thread.
Then in your Thread use
You should also be able to get the this reference from the outer class by using
MainActivity.this
.I guess you need to create a Thread and call Thread.start().