Android背景音乐服务
我正在开发android中的娱乐应用程序。我想播放背景音乐,我想为此使用服务。应用程序有3项活动,音乐必须在所有活动中播放。另外,当活动暂停时,音乐必须暂停并在被销毁时停止。谁能告诉我如何做到这一点?任何链接或例子?Android背景音乐服务
谢谢。
做没有服务
http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion
如果你这么认真使用媒体播放器
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() {
}
}
Pl相服务做打电话的容易程度这服务清单 确保有在.BackgroundSoundService串
<service android:enabled="true" android:name=".BackgroundSoundService" />
我有问题,运行它的末尾没有空间,我做一些改变与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() {
}
}
@ Synxmax的答案使用Service
和MediaPlayer
类时是正确的,但还需要申报清单中的Service
这个工作,像这样:
<service
android:enabled="true"
android:name="com.package.name.BackgroundSoundService" />
太晚对于这里的派对,但我仍然会增加我的0.02美元,谷歌已经发布了一个名为通用音乐播放器的免费样本,通过它您可以学习在所有Android平台(汽车,手表,手机,电视......)上播放音乐,它使用服务播放音乐在后台,检查出来非常有帮助。这里是该项目的链接
https://github.com/googlesamples/android-UniversalMusicPlayer
用START_STICKY
标志创建一个前台服务。
@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服务和使服务暂停/从相应的活动的生命周期方法停止。
这里有一个很好的教程关于Playing music in the background on Android
谢谢你,真的帮助我! :) – rohit
为什么你不喜欢服务是控制。 ? – rohit
谢谢!工作正常,但我有这个代码的问题。在我的应用程序中,我有很多活动,但我已经在onPause()中声明了finish()。我想通过意图播放bgm,但意图调用onpause和服务停止(在onpause方法中cz完成方法)。您有任何解决方案吗? – Hassy31