2012-04-21 8 views
0

私は、アクティビティではないことを意味する通常のクラスの中で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(); 
} 


} 
+0

メインのAndroid entrypoits活動のコンストラクタでContextを渡すようにしてください、サービス、BroadcastReceiverは、コンテキストを持っています。これらのうちの1つがプレーヤを作成/開始する場合は、@ macが示唆したコンテキストを渡すことができます。それとも特別なものがありますか? – k3b

+0

@ k3b私は何か特別なものを持っています、私のmediaplayerはこれらのどれによっても呼び出されないので、私は文脈がありません。このための任意のソリューションですか? – arielschon12

+0

Javaクラスを呼び出す場所からコードを入れてください。 – MAC

答えて

1

は、単純なJavaファイル

PlayMp3 mp3 = new PlayMp3(getApplicatonContext()); 
+0

答えてくれてありがとう、私は例を持っていますか? – arielschon12

+0

私は私のansを編集した参照してください – MAC

+0

私はそれを行うことはできません、私は私の質問にコメントを参照してください参照してください。 – arielschon12

関連する問題