简体   繁体   English

如何在屏幕关闭背景可播放选项的情况下播放 android 收音机

[英]How to play android radio with screen off background playable option

How to play android radio with screen off background playable option.如何使用屏幕关闭背景可播放选项播放 android 收音机。 My App working fine without backgournd playing option.我的应用程序在没有背景播放选项的情况下工作正常。 But I want to give background playing option in my app that is when user closes the app, the radio should keep on playing, untill user stops it.但是我想在我的应用程序中提供后台播放选项,即当用户关闭应用程序时,收音机应该继续播放,直到用户停止它。

I am also disable screen off option in xml file with android:keepScreenOn="true" option but I want to remove this option and keep mobile screen off and play my app in background.我还在 xml 文件中使用 android:keepScreenOn="true" 选项禁用屏幕关闭选项,但我想删除此选项并保持手机屏幕关闭并在后台播放我的应用程序。

This is my code这是我的代码

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

     }
 }

} }

In order to have you media playing while the app is in the background, you'll need a MediaSession background Service running in parallel.为了让您在应用程序处于后台时播放媒体,您需要一个并行运行的MediaSession后台服务。

TLTR, here's a basic tutorial from Google on how to do that. TLTR,这是来自 Google 的关于如何做到这一点的基本教程

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM