在Android应用程序的背景中播放音乐

时间:2011-03-07 02:53:32

标签: android background

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

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

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

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

1 个答案:

答案 0 :(得分:0)

你需要一个服务,你需要创建一个服务并绑定到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();
}