I am trying to play an mp3 sound using the MediaPlayer class inside a regular class, which means non Activity. My problem is probably initializing the MediaPlayer object since i have no Context in a non Activity class. How is this solvable?
Thanks!
EDIT
Here is some code from where the function should be called:
public class Bullet extends Thread{
public int bx = SniperActivity.bulletx;
public int by = SniperActivity.bullety;
Player obj = new Player();
SniperActivity con = new SniperActivity();
public void shoot(){
if (bx == Place.spotx && by == Place.spoty)
{
for (int f = 0; f<Rifle.dam; f++)
{
Player.life--;
if(Player.life<=0){
obj.death();
}
try {
Bullet.sleep(Rifle.rate);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
int s = 0;
s++;
while (s == Rifle.magazine)
{
try {
Bullet.sleep(Rifle.relode);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
s = 0;
}
con.Mplayer.start();
}
}
The function is called right up here, in the “con.Mplayer.start()” line, from the shoot() function. the con Object is reffering to an Activity that has the Mplayer initialized in it is trying to start it from here.
Here is the activity code:
public class SniperActivity extends Activity{
private GameView game;
private Player player;
private Scop scope;
public static int scopx;
public static int scopy;
public static int bulletx;
public static int bullety;
public static String filename = "SharedData";
static SharedPreferences someData;
public static int Width;
public static int Height;
public MediaPlayer Mplayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Mplayer = MediaPlayer.create(SniperActivity.this, R.raw.shot);
someData = getSharedPreferences(filename, 0);
Height = someData.getInt("height", 480);
Width = someData.getInt("width", 480);
scopx = 1;
scopy = 1;
PlayerView playerview;
playerview = new PlayerView(this, player);
ScopView Scope;
Scope = new ScopView(this, scope);
this.game = new GameView(this);
game.setviews(playerview, Scope);
setContentView(game);
int screenWidth,screenHeight;
screenWidth = this.getWindowManager().getDefaultDisplay().getWidth();
screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
bulletx = screenWidth/2;
bullety = screenHeight/2;
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
float dx;
Bullet bullet = new Bullet();
//get the x coordinate of users' press
dx = event.getX();
if (dx >=0)
{
bullet.shoot();
}
return true;
}
public void onDeath(){
finish();
}
}
Try to pass
Contextin constructor of simple java file