2013-03-06 63 views
1

我正在使用MediaPlayer播放无线电流。当我背景播放流的主要活动时会出现问题。Android从MediaPlayer停止流式传输

当手机使用太多资源时(例如尝试显示已安装应用程序的列表时)流停止。我怀疑,Android会关闭流以节省一些资源。

这是我准备媒体播放器的时候,我开始:

radioPlayer=new MediaPlayer(); 
radioPlayer.setDataSource(streamLocation); //with a try/catch of course in the full code 
radioPlayer.prepareAsync(); 
radioPlayer.seekTo(0); 
radioPlayer.setOnInfoListener(this); 
radioPlayer.setOnPreparedListener(new OnPreparedListener(){     
public void onPrepared(MediaPlayer mp) 
     radioPlayer.start(); 
}); 

它所有的主线程上运行。

回答

0

尝试让mediaplayer作为服务运行,而不是在活动中运行。这样,当您的应用进入暂停状态时,您可以让mediaplayer在后台播放。当用户将焦点从应用程序中分离出来时(例如,如果有电话进入),活动将暂停或自行销毁。但是,服务旨在与Android OS中运行的所有内容一起在后台运行。

Services

+0

Ecellent,这就是我要找的! – peterkodermac 2013-03-06 20:37:39

+0

经过一天的调查,现在很清楚,无论MediaPlayer的代码位于哪里 - 在某个活动,服务或甚至另一个应用程序中,当资源开始关闭时,Android 4.1将终止MediaPlayer。 – AndroidDev 2013-07-25 13:08:38

1

A服务是可以在背景执行长时间运行的操作,并且不提供用户界面的应用程序组件。另一个应用程序组件可以启动服务,即使用户切换到另一个应用程序,它也将继续在后台中运行。此外,组件可以绑定到服务以与其交互,甚至执行进程间通信(IPC)。例如,服务可能会处理网络交易,播放音乐,执行文件I/O或与内容提供商交互,全部来自背景

Dive into deep