2016-08-02 8 views
0

私はアプリを構築しようとしていますが、1つのアクティビティはストリーミングオンラインラジオがある「ラジオ」です。私が再生をクリックすると、すべて正常に動作し、再生し、停止をクリックすると停止します。しかし問題は、私が「ラジオ」から「ホーム」または「連絡先」にアクティビティを変更して「ラジオ」に戻ったときにラジオが実行されていて、それを止めたい場合は機能しません。私が演奏すると音楽は重複し、同じラジオが2回開いている。アプリケーションがRadioがすでに実行されていることがわからないようです。私はサービスオブジェクト、または何が必要ですか?私がサービスを必要とする場合、誰かが私がそれをどこに実装すべきかを正確に説明することができますか?ここに私のJavaコードは次のとおりです。サービスが必要ですか?

public class radioActivity extends AppCompatActivity { 


int length; 
Button b1; 
private Button Button1; 
private Button Button2; 
private String STREAM_URL = "http://192.99.35.93:6370/;stream.mp3"; 
private MediaPlayer mPlayer; 
@Override 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_radio); 
    Button button1 = (Button) findViewById(R.id.buttonpredica1); 
    Button button2 = (Button) findViewById(R.id.buttonpredica2); 



    mPlayer = new MediaPlayer(); 

    mPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
    WifiManager.WifiLock wifiLock = ((WifiManager) getSystemService(Context.WIFI_SERVICE)) 
      .createWifiLock(WifiManager.WIFI_MODE_FULL, "mylock"); 

    wifiLock.acquire(); 
    wifiLock.release(); 

    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
            public void onClick(View v) { 

             try { 
              mPlayer.reset(); 
              mPlayer.setDataSource(STREAM_URL); 
              mPlayer.prepareAsync(); 
              mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
               @Override 
               public void onPrepared(MediaPlayer mPlayer) { 

                mPlayer.start(); 

               } 
              }); 
             } catch (IOException e) { 
              e.printStackTrace(); 
             } 
            } 
           }); 



    button2.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
             mPlayer.stop(); 
             } 


    }); 
+0

を制御するのに役立ちますが使用されています1つを得る方法)。 –

+0

私の場合、シングルトンの例がありますか? – SamH

答えて

2

あなたMediaPlayerあなたは、スタートボタンをMediaPlayerのように複数のインスタンスをクリックするたびに作成されているRadio

を果たしているあなたは切り替えたとき、あなたのMediaPlayerが実行されてたくない場合活動あなたは1つがあなたがからあちこちに移動し、そのとき、あなたのMediaPlayerのオブジェクトのSingleton Instanceを作成することです、Activity

はあなたがここにオプションのカップルを持つことができ、あなたのonPause()mPlayer.stop();を呼び出すことができます、MediaPlayerオブジェクトの同じインスタンスを使用すると、あなたは `service`は必要ありませんが、あなたは` singleton`(と `service`が便利である必要がありますかMediaPlayer

Singleton design pattern in Java. Singleton Pattern says that just"define a class that has only one instance and provides a global point of access to it". In other words, a class must ensure that only single instance should be created and single object can be used by all other classes.

+0

どうすれば私のケースで1トンのインスタンスを作成できますか?私はいくつかの研究をしましたが、私は少し混乱しています。 – SamH

+0

https://gist.github.com/Akayh/5566992、これらの要点には良い例があります。 –

+0

私は新しいクラスのシングルトーンを作成しました。あなたが私に送ったリンクのシングルトンクラスからコピーして貼り付けました。さて、私の場合、アクティビティAはすべてのアクティビティになり、アクティビティBはradioActivityになります。 – SamH

関連する問題