Как воспроизводить Android-радио с опцией воспроизведения в фоновом режиме без экрана

#java #android #android-studio #radio #background-music

#java #Android #android-studio #android-медиаплеер #фоновая музыка

Вопрос:

Как воспроизводить Android-радио с опцией воспроизведения в фоновом режиме без экрана. Мое приложение работает нормально без опции воспроизведения в фоновом режиме. Но я хочу предоставить опцию фонового воспроизведения в своем приложении, то есть когда пользователь закрывает приложение, радио должно продолжать воспроизводиться, пока пользователь не остановит его.

Я также отключаю опцию отключения экрана в XML-файле с помощью Android: опция keepScreenOn =»true», но я хочу удалить эту опцию и оставить мобильный экран выключенным и воспроизводить мое приложение в фоновом режиме.

Это мой код

 Button BPlay;
String stream = "http://stream.zeno.fm/hmzuvfwn9k0uv";
MediaPlayer mediaPlayer;

boolean prepared = false;
boolean started = false;

 

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


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

    mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    new PlayerTask().execute(stream);




    BPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (started){
                started = false;
                mediaPlayer.pause();
                BPlay.setText("PLAY");


            } else {
                started = true;
                mediaPlayer.start();
                BPlay.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);
         BPlay.setEnabled(true);
         BPlay.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:

Для воспроизведения мультимедиа, пока приложение работает в фоновом режиме, вам потребуется MediaSession параллельно работающая фоновая служба.

TLTR, вот базовый учебник от Google о том, как это сделать.