我的应用程序中有 2 个区域可以在设备上启动默认媒体播放器并播放音频文件(播客)。一个在下载后从文件系统中获取它,另一个从站点上的文件中流式传输它。
这现在工作正常,问题是如果我在启动媒体播放器、播放器关闭并且播放停止后回击或回家尝试返回我的应用程序。
有没有办法在后台或作为服务启动它,这样当我回到应用程序时,音乐会继续在播放器中播放。我希望它的功能就像您从音乐播放器开始播放歌曲一样。所以用户可以正常使用设备,播放将继续。
这是我启动音乐播放器进行流式传输的代码。
private void playPodcast( Podcast podcast ) {
Intent intent = new Intent( Intent.ACTION_VIEW );
intent.setDataAndType( Uri.parse( podcast.getContentLink() ), "audio/*" );
startActivity( intent );
}
提前致谢。
编辑! 在收到以下建议后,我尝试将其作为服务启动。我已经尝试了两种方式。
两种方式都将其作为清单条目:
<service android:name=".DefaultMusicPlayerLaunchService">
</service>
第一次尝试是创建一个只是一个骨架的服务类,并使用与上述类似的方法启动它。
DefaultMusicPlayerLaunchService V1:
public class DefaultMusicPlayerLaunchService extends Service {
@Override
public IBinder onBind( Intent intent ) {
// TODO Auto-generated method stub
return null;
}
public int onStartCommand( Intent intent, int flags, int startId ) {
return START_STICKY;
}
}
播放播客方法:
private void playPodcast( Podcast podcast ) {
Intent intent = new Intent( getApplicationContext(),
DefaultMusicPlayerLaunchService.class );
intent.setDataAndType( Uri.parse( podcast.getContentLink() ), "audio/*" );
startService( intent );
}
我的想法是这样,它会启动音乐播放器,就像我之前在 Activity 中的方式一样,但在不离开它所在的屏幕的情况下启动它。我没有看到 LogCat 中发生任何事情。我觉得这应该可行,但我错过了一些东西。
我尝试的另一种方法是将播客对象序列化为额外对象,并将其放在Intent
我为DefaultMusicPlayerLaunchService
. 然后,在onStartCommand
方法中,我抓取了对象,创建了一个新对象,Intent
然后像顶部startActivity
的原始方法一样调用它。playPodcast
正如预期的那样,它所做的正是顶级的......启动播放器,但只要我回击或回家,它就会关闭。
如果我遗漏了一些明显的东西,我深表歉意。我是 Android 新手,到目前为止我使用过的所有东西都使用过Activity
. 这是我第一次尝试启动Service
.