保持广播在后台播放

时间:2017-06-13 19:24:08

标签: android service background radio

您好我想创建一个简单的在线广播,我希望在bakcground中保持广播,我知道我应该使用Service,但我不知道如何使用它请帮我把我的app广播继续在后台播放

这是我的代码:

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();
    }
}

}

1 个答案:

答案 0 :(得分:0)

播放前台服务中的音乐。

官方Android文档说

  

这是用户主动了解但不是a的服务   当内存不足时杀死系统的候选者。前景   服务必须提供状态栏的通知,即   置于正在进行的标题下。这意味着通知   除非服务被停止或删除,否则不能被解雇   来自前景。

在您的情况下,播放来自服务的音乐的无线电应设置为在前台运行,因为用户明确知道其操作。状态栏中的通知可能指示当前歌曲,并允许用户启动活动以与音乐播放器进行交互。

这是example