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

问题描述:

我有一个简单的应用程序,它有几个活动。我在用户使用应用程序时播放一些背景音乐。我也希望它在用户使用应用程序的同时播放整个时间,而不是在应用程序不在前台时播放。在Android应用程序的背景中播放音乐

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

我也看过使用onResume()和onPause(),但这只适用于一次一个活动。我需要创建一项服务吗?我以前从未使用过服务,但我不认为这会在应用不可见时停止播放音乐。

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

+0

具有u尝试使用异步类? – Piyush 2011-05-13 08:14:31

+0

请参阅http://stackoverflow.com/questions/11490236/android-comprehensive-failproof-music-service-across-multiple-activites – 2013-01-23 14:22:14

您需要为此服务,您需要创建服务并绑定到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(); 
}