我正嘗試構建應用程序,其中一項活動是「無線電」,我有一個流式在線收音機。如果我點擊播放,一切正常,它播放,當我點擊停止,它停止。但問題是,當我改變活動,例如:從「收音機」到「家庭」或「聯繫人」,回到「收音機」,收音機仍然運行,如果我想停止它,不起作用。但如果我打了,音樂重複,因此我有兩次打開同一臺電臺。它看起來應用程序不知道無線電已經運行。我需要一個服務對象,還是什麼?如果我需要服務,有人可以解釋我在代碼中究竟應該在哪裏實現它?這是我的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();
}
});
你並不需要一個'service'但你需要一個'singleton'(和'service'是一個方便獲得一種方式)。 –
我的例子中有單例嗎? – SamH