2016-03-21 17 views
0

アクティビティ全体で音楽を再生したいと思います。単純なクラスを使用して実装しています。このクラス(BackgroundMusic)は、startMusic()メソッドを呼び出すとMediaPlayerで音楽を開始し、stopMusic()メソッドを呼び出すと停止します。 1つのアクティビティでのみ使用すると完全に機能します。 OnCreateはstartMusic()メソッドを呼び出し、onPauseはstopMusic()メソッドを呼び出し、MediaPlayerは正しい方法で動作します。問題は別のアクティビティに移動したいときに始まります。音楽を止めたいときは、mediaplayer.stop()のNullPointerExepctionがスローされます。だから、アプリケーションは、私がMediaPlayerを起動したことを止めたいと思っているようです。すべてのonCreateメソッドでstartMusic()メソッドを呼び出そうとしましたが、何度も何度も音楽が始まり、もう1つのアクティビティに移動したときに停止したり再開したりする1つの音楽しか再生しません。クラスでそれを行うことは可能でしょうか、サービスを使わなければなりませんか?私はクラスでそれを手伝ってくれることを願っています。MediaPlayerでアクティビティ間で音楽を再生する

BackgroundMusic

public void startMusic() { 
    mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy); 
    if(palya <= 5 || palya > 15){ 
     mediaPlayer1.start(); 
     mediaPlayer1.setVolume(0.2f, 0.2f); 
     mediaPlayer1.setLooping(true); 
     play = true; 
    } 
} 

public void stopMusic(){ 
    if(play){ 
     mediaPlayer1.stop(); 
     mediaPlayer1.reset(); 
     mediaPlayer1.release(); 
     mediaPlayer1 = null; 
     play = false; 
    } 
} 

活動

BackgroundMusic bm; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_fomenu); 

    bm = new BackgroundMusic(mentes,this); 

    if(sounds){ 
     bm.startMusic(); 
    } 
} 

@Override 
protected void onPause() { 
    if(sounds){ 
     bm.stopMusic(); 
    } 
    super.onPause(); 
} 
+0

(背景)サウンドを処理するためにServiceActivityを実装できます。このように、あなたのMainActivityの 'onCreate'は新しい意図としてサービスを呼び出します。サービスは音を演奏し、あなたは音で心配することなく、あなたのすべての活動によって自由に走ることができます。どの場所でも、いつでも、音を止めたいなら、簡単なstopServiceがそのトリックを行います。 – statosdotcom

答えて

0

私はBackgroundMusicに静的にメディアプレーヤを設定した場合、それは完璧に動作します。

関連する問題