在安卓系统中跨活动播放BG音乐

2022-09-01 11:04:44

你好!第一次在stackoverflow上提出问题。令人兴奋的!哈哈。

我们正在开发一个Android游戏,并为我们的介绍播放一些背景音乐(我们有一个介绍活动),但我们希望它继续播放到下一个活动,也许能够从应用程序内的任何地方停止或再次播放音乐。

我们目前正在做的是在我们的介绍活动中使用MediaPlayer播放bgm。但是,一旦用户离开该活动,我们就会停止播放音乐。我们是否必须为此使用类似“服务”之类的东西?还是MediaPlayer/SoundPool就足够了?如果有人知道答案,我们很乐意与您分享。谢谢!


答案 1

您还可以创建使用mediaplayer播放音乐的服务,如下所示。

Intent svc=new Intent(this, BackgroundSoundService.class);
startService(svc); //OR stopService(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) {
        // TODO



    }
    public IBinder onUnBind(Intent arg0) {
        // TODO Auto-generated method stub

        return null;
    }

    public void onStop() {

    }
    public void onPause() {

    }
    @Override
    public void onDestroy() {

        player.stop();
        player.release();
    }

    @Override
    public void onLowMemory() {

    }
}

答案 2

使用 SoundPools 或 MediaPlayers 创建静态 SoundManager。

创建一个名为 keepMusicGoing 的静态标志。

创建第一个活动时开始音乐。

切换活动时,将 keepMusic 设置为 true。

在您的活动的 onStop 事件中,检查 keepMusicGoing 是否为 true,如果是,请保持音乐打开状态,然后将 keepMusicGoing 设置为 false。

如果他们按下主页按钮,keepMusicGoing标志将是假的,因此当活动失去焦点时,音乐将停止。

给我发电子邮件,我可以给你发几个 SoundManagers,我写的一个使用 MediaPlayers,另一个使用 SoundPools

乍得


推荐