您好,我正在制作一个Android游戏应用程序,我想为我的游戏制作背景音乐。我在stackoverflow中找到了一些代码,但是它无法正常工作,因为当我按下“后退”按钮或“主页”按钮时,音乐仍在播放,即使将其从仍在运行的任务中删除,也意味着onPause或onDestroy无法正常工作。有人可以帮助我,谢谢!。
这是我找到代码的链接 Android background music service
答案 0 :(得分:0)
我认为您将音乐作为服务播放,并且必须在活动的onPause和onDestroy中销毁该服务。
答案 1 :(得分:0)
1)首先将您的music.mp3放入原始文件夹
2)在清单中将服务声明为<application>
元素的子元素
<service android:name=".SoundService" android:enabled="true"/>
3)添加MusicService.java
类:
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class SoundService extends Service {
MediaPlayer mPlayer;
@Override
public void onCreate() {
mPlayer = MediaPlayer.create(this, R.raw.music);
mPlayer.setLooping(true);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mPlayer.start();
return Service.START_NOT_STICKY;
}
@Override
public void onDestroy() {
mPlayer.stop();
mPlayer.release();
super.onDestroy();
}
}
4)在活动中运行\停止服务:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
startService(new Intent(MainActivity.this, SoundService.class));
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onBackPressed() {
stopService(new Intent(MainActivity.this, SoundService.class));
super.onBackPressed();
}
@Override
protected void onPause() {
// When the app is going to the background
stopService(new Intent(MainActivity.this, SoundService.class));
super.onPause();
}
@Override
protected void onDestroy() {
// when system temporarily destroying activity
stopService(new Intent(MainActivity.this, SoundService.class));
super.onDestroy();
}
}