0

我目前正在研究一个项目,在这个项目中我必须创建一个小型安卓游戏。如果一切顺利,我的游戏或多或少会像游戏男孩的旧口袋妖怪游戏。

游戏是使用多个活动(初始屏幕、菜单、游戏视图、战斗视图等)构建的。现在我的大部分事情都在工作。但是有一件事情困扰着我,我周围的人无法给出明确的答案。

在游戏中,我有一个名为 MusicPlayer.java 的类。该类用于在大部分活动中播放背景音乐。现在我在活动的 oncreate 中初始化这个类,并将其设置为播放 res/raw 文件夹中的 .mp3 文件。当我开始一个不同的活动时,我从 MusicPlayer 调用 .close()。

public class MusicPlayer {

private MediaPlayer player;

public void Play(int songid, Context cont)
{
    player = MediaPlayer.create(cont, songid);
    try {
            player.start();
    }
    catch (Exception e)
    {
        Log.d("MusicPlayer","Something wend wrong while starting the song!");
        Log.d("ERROR",e.toString());
    }
}


public void close()
{
    if(player != null)
    {
        player.stop();
        player.release();
        player = null;
    }
}

一遍又一遍地创建这个类感觉有点笨拙,它迫使我在每一项活动中开始一首新歌。我还注意到,当开始一项新活动时,旧活动会继续运行。如果我不调用 .close ,音乐将继续在下一个窗口中播放。有没有办法再次访问这个对象?例如调用改变/停止歌曲的方法?我已经对此进行了一些谷歌尝试,但我无法让对象随 Activity 一起移动。它不适合 .putExtras() ,我也无法创建它的 Parcelable。

是的,现在这是一个相当多的文字,我很抱歉......但是对我的项目的这种限制真的让我很烦恼,而且我对 android/java 编程的知识非常有限(我习惯于 .net,现在只在 java/android 中工作了一个月)它会有所改善,所以如果有人知道我应该研究的东西,那就太好了!

4

1 回答 1

1

您可以使用 aIntent Service来播放音乐,使用 Intent 从您的 Activity 中进行通信(例如更改歌曲、在您的应用不在前台时停止音乐等)

于 2013-03-06T22:53:36.767 回答