首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏背景音乐

游戏背景音乐
EN

Stack Overflow用户
提问于 2018-09-09 18:05:23
回答 2查看 195关注 0票数 0

大家好,我正在制作一个android游戏应用程序,我想为我的游戏制作一个背景音乐。我在stackoverflow中发现了一些代码,但它不能正常工作,因为当我按下back按钮或home按钮时,音乐仍然在播放,即使我将它从任务中移除它仍然在运行,这意味着onPause或onDestroy不工作。有人能帮帮我吗,谢谢!

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-09 19:36:24

1)首先将你的music.mp3放入raw文件夹

2)将清单中的服务声明为<application>元素的子元素

代码语言:javascript
复制
<service android:name=".SoundService"  android:enabled="true"/>

3)添加MusicService.java类:

代码语言:javascript
复制
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)运行\停止活动中的服务:

代码语言:javascript
复制
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();
    }

}
票数 0
EN

Stack Overflow用户

发布于 2018-09-09 18:50:41

我认为你将音乐作为一种服务来播放,你必须在你的活动的onPause和onDestroy中销毁这种服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52243410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档