【问题标题】:Play music in the background of an Android app [duplicate]在Android应用程序的后台播放音乐[重复]
【发布时间】:2011-03-07 02:53:32
【问题描述】:

我有一个简单的应用程序,其中包含多个活动。我要在用户使用该应用程序时播放一些背景音乐。我还希望它在用户使用应用程序时一直播放,而不是在应用程序不再处于前台时播放。

我已经阅读并尝试了几件事。我尝试在第一个活动中启动 MediaPlayer,这就像一个选项菜单,但它要么永远不会退出,要么在下一个活动中随机停止。我尝试在第一个活动中启动 MediaPlayer,然后当按下按钮启动下一个活动时,我保存当前位置时间,暂停 MediaPlayer 并将时间传递给下一个活动,然后在下一个活动并让它恢复。这种方式没问题,但是如果用户点击后退按钮,事情就会开始重叠,并且当应用程序不可见时它仍然会播放。

我还研究过使用 onResume() 和 onPause(),但这一次只适用于一项活动。我需要创建服务吗?我以前从未使用过服务,并且我认为当应用程序不可见时这不会停止音乐。

我只是想为我的应用添加一些背景音乐。我想这会比这更容易。任何帮助或想法将不胜感激。还知道这是否可能会有所帮助。

【问题讨论】:

标签: android background


【解决方案1】:

为此你需要一个服务,你需要创建一个服务并绑定到活动 onResume 并取消绑定它 onStop,所以当所有活动都取消绑定时,服务结束是实现整个应用程序音乐的最佳方式

创建一个服务,然后做类似的事情

public ServiceConnection Scon = new ServiceConnection() {

    public void onServiceConnected(ComponentName name, IBinder binder)
    {
        mServ = ((DMusic.ServiceBinder) binder).getService();
    }

    public void onServiceDisconnected(ComponentName name)
    {
        mServ = null;
    }
};

public void doBindService()
{
    if (!mIsBound)
    {
        bindService(new Intent(this, DMusic.class), Scon, Context.BIND_AUTO_CREATE);
        mIsBound = true;
    }
}

public void doUnbindService()
{
    if (mIsBound)
    {
        unbindService(Scon);
        mIsBound = false;
    }
}


@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    doBindService();
}




@Override
public void onStop()
{
    super.onStop();
    doUnbindService();
}

【讨论】:

    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2021-01-05
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多