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

Posted

技术标签:

【中文标题】如何在屏幕关闭背景可播放选项的情况下播放 android 收音机【英文标题】:How to play android radio with screen off background playable option 【发布时间】:2021-03-24 02:56:21 【问题描述】:

。我的应用程序在没有背景播放选项的情况下工作正常。但是我想在我的应用程序中提供后台播放选项,即当用户关闭应用程序时,收音机应该继续播放,直到用户停止它。

我还在 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,这里有一个basic tutorial from Google 说明如何做到这一点。

【讨论】:

以上是关于如何在屏幕关闭背景可播放选项的情况下播放 android 收音机的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中保持屏幕关闭的视频播放?

KMPlayer屏幕出现好多参数怎么清除

如果音频正在另一个选项卡或窗口中播放,如何关闭声音

视频在移动数据下自动播放怎么取消?

如何播放可以通过 iPhone 上的屏幕锁定按钮关闭的音频

Exoplayer 音频播放背景,甚至视频已关闭