私は、アクティビティではないことを意味する通常のクラスの中でMediaPlayerクラスを使用してmp3サウンドを再生しようとしています。私の問題はおそらく私は非アクティビティクラスのコンテキストを持っていないのでMediaPlayerオブジェクトを初期化しています。これはどのように解決できますか?Android mp3クロスクラス
ありがとうございます!
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();
}
}
関数は右ここまで呼ばれ、 "con.Mplayer.start()" の行に:ここ
EDIT
は、関数が呼び出されるべきであるところから、いくつかのコードです、shoot()関数から取得します。 conオブジェクトは、ここから初期化しようとしているMplayerを初期化したアクティビティを受け取ります。ここで
は、アクティビティコードです:
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();
}
}
メインのAndroid entrypoits活動のコンストラクタで
Context
を渡すようにしてください、サービス、BroadcastReceiverは、コンテキストを持っています。これらのうちの1つがプレーヤを作成/開始する場合は、@ macが示唆したコンテキストを渡すことができます。それとも特別なものがありますか? – k3b@ k3b私は何か特別なものを持っています、私のmediaplayerはこれらのどれによっても呼び出されないので、私は文脈がありません。このための任意のソリューションですか? – arielschon12
Javaクラスを呼び出す場所からコードを入れてください。 – MAC