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 also be able to get the this reference from the outer class by using MainActivity.this.
You should use getBaseContext. Instead, if this runnable is within an activity, you should store the context in a class variable like this:
public class MainActivity extends Activity {
private Context context;
public void onCreate( Bundle icicle ) {
context = this;
// More Code
}
// More code
new Runnable(){
public void run() {
MediaPlayer mp = MediaPlayer.create(context, R.raw.soundfile);
while (true) {
if (something)
play something
}
}
}
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With