游戏背景音乐

时间:2018-09-09 10:05:23

标签: java android

您好,我正在制作一个Android游戏应用程序,我想为我的游戏制作背景音乐。我在stackoverflow中找到了一些代码,但是它无法正常工作,因为当我按下“后退”按钮或“主页”按钮时,音乐仍在播放,即使将其从仍在运行的任务中删除,也意味着onPause或onDestroy无法正常工作。有人可以帮助我,谢谢!。

这是我找到代码的链接 Android background music service

2 个答案:

答案 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();
    }

}