我有一个简单的应用程序,其中包含多个活动。我是在用户使用应用程序时播放一些背景音乐。我还希望它在用户使用应用程序的同时播放,而不是在应用程序不再位于前台时播放。
我已阅读并试过了几件事。我尝试在第一个活动中启动MediaPlayer,这就像一个选项菜单,但它永远不会在下一个活动中退出或停止。我尝试在第一个活动中启动MediaPlayer,然后当按下按钮开始下一个活动时,我保存当前位置时间,暂停MediaPlayer并将时间传递给下一个活动,然后在中创建一个新的MediaPlayer。下一个活动,让它恢复。这种方式还可以,但如果用户按下后退按钮,事情就会开始重叠,当应用程序不可见时它仍会播放。
我还看过使用onResume()和onPause(),但这只适用于一次一个活动。我需要创建服务吗?我之前从未使用过某项服务,我认为当应用程序不可见时,这将停止音乐。
我只是想在我的应用中添加一些背景音乐。我认为这比这更容易。任何帮助或想法将不胜感激。也知道这是否可能会有所帮助。
答案 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();
}