Android背景音乐服务

我正在开发一个在android的娱乐应用程序。 我想播放背景音乐,我想用这个服务。 应用程序有3个活动,音乐必须在所有活动中播放。 而且,当活动暂停时,音乐必须暂停并在被销毁时停止。 谁能告诉我如何做到这一点? 任何链接或例子?

谢谢。

做没有服务

http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion

如果你认真对待使用mediaplayer的服务

Intent svc=new Intent(this, BackgroundSoundService.class); startService(svc); 

 public class BackgroundSoundService extends Service { private static final String TAG = null; MediaPlayer player; public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); player = MediaPlayer.create(this, R.raw.idil); player.setLooping(true); // Set looping player.setVolume(100,100); } public int onStartCommand(Intent intent, int flags, int startId) { player.start(); return 1; } public void onStart(Intent intent, int startId) { // TO DO } public IBinder onUnBind(Intent arg0) { // TO DO Auto-generated method return null; } public void onStop() { } public void onPause() { } @Override public void onDestroy() { player.stop(); player.release(); } @Override public void onLowMemory() { } } 

在清单中调用此服务

 <service android:enabled="true" android:name=".BackgroundSoundService " /> 

在HelloAndroid上,关于这个主题的一个很好的教程。 事实上,这是我在谷歌上的第一个打。 在问这里之前,你应该尝试使用谷歌search,因为这是个好习惯。

@ Synxmax的答案在使用ServiceMediaPlayer类的时候是正确的,但是你也需要在Manifest中声明这个Service ,就像这样:

 <service android:enabled="true" android:name="com.package.name.BackgroundSoundService" /> 

对于这里的派对来说太晚了,但是我仍然会加上0.02美元,谷歌已经发布了一个名为“通用音乐播放器”的免费示例,通过它,您可以学习跨所有Android平台(汽车,手表,手机,电视等)服务在后台播放音乐,做检查出来非常有帮助。 这里是项目的链接
https://github.com/googlesamples/android-UniversalMusicPlayer

我有运行它的问题,我做了一些改变,以MP3源运行它。 这里是BackfrounSoundService.java文件。 考虑我的mp3文件是在我的手机上的SD卡。

 public class BackgroundSoundService extends Service { private static final String TAG = null; MediaPlayer player; public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); Log.d("service", "onCreate"); player = new MediaPlayer(); try { player.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/your file.mp3"); } catch (IOException e) { e.printStackTrace(); } player.setLooping(true); // Set looping player.setVolume(100, 100); } public int onStartCommand(Intent intent, int flags, int startId) { Log.d("service", "onStartCommand"); try { player.prepare(); player.start(); } catch (IOException e) { e.printStackTrace(); } return 1; } public void onStart(Intent intent, int startId) { // TO DO } public IBinder onUnBind(Intent arg0) { // TO DO Auto-generated method return null; } public void onStop() { } public void onPause() { } @Override public void onDestroy() { player.stop(); player.release(); } @Override public void onLowMemory() { } } 

使用START_STICKY标志创build一个前台服务。

 @Override public int onStartCommand(Intent startIntent, int flags, int startId) { if (startIntent != null) { String action = startIntent.getAction(); String command = startIntent.getStringExtra(CMD_NAME); if (ACTION_CMD.equals(action)) { if (CMD_PAUSE.equals(command)) { if (mPlayback != null && mPlayback.isPlaying()) { handlePauseRequest(); } } else if (CMD_PLAY.equals(command)) { ArrayList<Track> queue = new ArrayList<>(); for (Parcelable input : startIntent.getParcelableArrayListExtra(ARG_QUEUE)) { queue.add((Track) Parcels.unwrap(input)); } int index = startIntent.getIntExtra(ARG_INDEX, 0); playWithQueue(queue, index); } } } return START_STICKY; } 

这可以从任何活动中调用来播放音乐

 Intent intent = new Intent(MusicService.ACTION_CMD, fileUrlToPlay, activity, MusicService::class.java) intent.putParcelableArrayListExtra(MusicService.ARG_QUEUE, tracks) intent.putExtra(MusicService.ARG_INDEX, position) intent.putExtra(MusicService.CMD_NAME, MusicService.CMD_PLAY) activity.startService(intent) 

您可以使用bindService绑定到服务,并使服务从相应的活动生命周期方法暂停/停止。

这里有一个关于在Android的背景下播放音乐的好教程

Interesting Posts