2017-06-13 89 views
-1

嗨我想創建一個簡單的在線收音機,我想保持收音機播放在bakcground,我知道我應該使用Service但我不怎麼用它請幫我做我的應用程序電臺不斷播放的背景保持收音機在後臺播放

這是我的代碼:

Button b_play ; 
MediaPlayer mediaPlayer ; 

boolean prepared = false; 
boolean started = false; 

String stream = "http://stream.radio.co/s98f81d47e/listen"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    b_play = (Button)findViewById(R.id.b_play); 
    b_play.setEnabled(false); 
    b_play.setText("Loading"); 

    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

    new PlayerTask().execute(stream); 
    b_play.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(started){ 
       started = false; 
       mediaPlayer.pause(); 
       b_play.setText("Play"); 

      }else{ 
       started = true; 
       mediaPlayer.start(); 
       b_play.setText("Pause"); 
      } 
     } 
    }); 
} 


class PlayerTask extends AsyncTask<String, Void ,Boolean>{ 
    @Override 
    protected Boolean doInBackground(String... strings) { 

     try { 
      mediaPlayer.setDataSource(strings[0]); 
      mediaPlayer.prepare(); 
      prepared = true; 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return prepared; 
    } 

    @Override 
    protected void onPostExecute(Boolean aBoolean) { 
     super.onPostExecute(aBoolean); 
     b_play.setEnabled(true); 
     b_play.setText("Play"); 

    } 


} 

@Override 
protected void onPause() { 
    super.onPause(); 
    if(started){ 
     mediaPlayer.pause(); 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    if(started){ 
     mediaPlayer.start(); 
    } 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if(prepared){ 
     mediaPlayer.release(); 
    } 
} 

}

回答

0

從前臺服務播放音樂。

Android官方文檔說

那就是用戶主動意識到,不是 候選人系統殺死時內存不足的服務。前臺 服務必須提供狀態欄的通知,該通知位於「正在進行」標題下的 。這意味着通知 不能被解僱,除非該服務從前臺停止或被移除 。

在你的情況下,無線電,從服務播放音樂應該被設置爲在前臺運行,因爲用戶明確知道它的操作。狀態欄中的通知可能會指示當前歌曲,並允許用戶啓動與音樂播放器交互的活動。

這裏是一個example

+0

我按照所有步驟,但對我來說 – pic

+0

然後,你錯過的東西不起作用,再試一次。 –

+0

你成功了嗎?什麼不工作? –