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 Null
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.
You need to declare a Handler object in your UI thread.
Then in your Thread use
YourHandler.post(new Runnable() {
public void run() {
//do something to the UI (i.e. play something)
}});
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().