在Android应用程序的背景中播放音乐
问题描述:
我有一个简单的应用程序,它有几个活动。我在用户使用应用程序时播放一些背景音乐。我也希望它在用户使用应用程序的同时播放整个时间,而不是在应用程序不在前台时播放。在Android应用程序的背景中播放音乐
我已阅读并尝试了几件事情。我已经尝试在第一个活动中启动MediaPlayer,这与选项菜单类似,但是它不是在下一个活动中随机退出或停止。我尝试在第一个活动中启动MediaPlayer,然后当按下按钮开始下一个活动时,我保存当前位置时间,暂停MediaPlayer并将时间传递给下一个活动,然后在第一个活动中创建一个新的MediaPlayer下一个活动,并恢复。这种方式是可以的,但如果用户点击后退按钮,事情会开始重叠,并且在应用程序不可见时它仍会播放。
我也看过使用onResume()和onPause(),但这只适用于一次一个活动。我需要创建一项服务吗?我以前从未使用过服务,但我不认为这会在应用不可见时停止播放音乐。
我只是简单地想添加一些背景音乐到我的应用程序。我认为这会比这更容易。任何帮助或想法将不胜感激。也知道这是否有可能会有所帮助。
答
您需要为此服务,您需要创建服务并绑定到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();
}
具有u尝试使用异步类? – Piyush 2011-05-13 08:14:31
请参阅http://stackoverflow.com/questions/11490236/android-comprehensive-failproof-music-service-across-multiple-activites – 2013-01-23 14:22:14