如何在屏幕关闭背景可播放选项的情况下播放 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 收音机的主要内容,如果未能解决你的问题,请参考以下文章