Android 你能在后台启动默认的音乐播放器吗?

Android 你能在后台启动默认的音乐播放器吗?,android,android-intent,media-player,android-service,Android,Android Intent,Media Player,Android Service,我的应用程序中有两个区域可以启动设备上的默认媒体播放器并播放音频文件(播客)。一个下载后从文件系统获取,另一个从站点上的文件流式传输 现在这一切正常,问题是如果我在应用程序启动媒体播放器、播放器关闭、播放停止后,点击“返回”或“主页”尝试返回到我的应用程序 有没有办法在后台或作为服务启动它,这样当我返回应用程序时,音乐会在播放器中继续播放。我希望它的功能就像你从音乐播放器开始一首歌一样。因此,用户可以正常使用设备,播放将继续 这是我启动音乐播放器进行流媒体播放的代码 private void p

我的应用程序中有两个区域可以启动设备上的默认媒体播放器并播放音频文件(播客)。一个下载后从文件系统获取,另一个从站点上的文件流式传输

现在这一切正常,问题是如果我在应用程序启动媒体播放器、播放器关闭、播放停止后,点击“返回”或“主页”尝试返回到我的应用程序

有没有办法在后台或作为服务启动它,这样当我返回应用程序时,音乐会在播放器中继续播放。我希望它的功能就像你从音乐播放器开始一首歌一样。因此,用户可以正常使用设备,播放将继续

这是我启动音乐播放器进行流媒体播放的代码

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>
播放播客方法:

    private void playPodcast( Podcast podcast ) {
        Intent intent = new Intent( getApplicationContext(), 
                                    DefaultMusicPlayerLaunchService.class );
        intent.setDataAndType( Uri.parse( podcast.getContentLink() ), "audio/*" );
        startService( intent );
    }
我的想法是,通过这种方式,它将启动音乐播放器,类似于我之前在活动中的方式,但在不离开屏幕的情况下启动它。我没看到LogCat里发生什么事。我觉得这应该行得通,但我错过了一些东西

我尝试的另一种方法是将podcast对象序列化为一个额外对象,并将其放在我为
DefaultMusicPlayerLaunchService
制作的
Intent
上。然后,在
onStartCommand
方法中,我抓取对象,创建一个新的
Intent
,然后调用
startActivity
,类似于顶部原始的
playbodcast
方法。正如预期的那样,它做的正是顶尖的。。。启动播放机,但一旦我回击或击出主键,播放机就会关闭


如果我遗漏了一些明显的东西,我道歉。我是Android新手,到目前为止,我使用的所有东西都使用了
活动
。这是我第一次尝试启动
服务

是的,您可以将其作为服务启动。您需要创建一个扩展android.app.Service的类。并从传递启动服务的意图的活动调用startService(意图)。重写onStartCommand方法,并让它返回START\u STICKY,这将使服务运行直到其显式停止。无论是通过你的代码还是通过Android操作系统来节省资源。您还可以覆盖onBind,将服务绑定到一个活动,该活动将赋予该服务与前台活动同等的重要性,从而降低Android为节省资源而终止该服务的可能性。

谢谢您的输入。对不起,我花了这么长时间才尝试这个。我不确定我是否做对了。我试过两种不同的方法,但都不起作用。我将用更多信息更新主要主题。
    private void playPodcast( Podcast podcast ) {
        Intent intent = new Intent( getApplicationContext(), 
                                    DefaultMusicPlayerLaunchService.class );
        intent.setDataAndType( Uri.parse( podcast.getContentLink() ), "audio/*" );
        startService( intent );
    }