在活动之间管理课程

时间:2013-03-06 22:45:15

标签: android

我正在为我的学习项目工作,在这个项目中我必须创建一个小型的Android游戏。如果一切顺利的话,我的游戏看起来或多或少会像游戏男孩的旧口袋妖怪游戏一样。

使用多种活动(启动画面,菜单,游戏视图,战斗视图等)构建游戏。现在我有大部分工作。但有一件事困扰着我,我周围的人无法给出明确的答案。

在游戏中我有一个名为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,音乐会在下一个窗口继续播放。有没有办法再次访问此对象?例如,调用一个改变/停止歌曲的方法?我已经对此进行了一些谷歌尝试,但我无法使用活动来移动对象。它不适合.putExtras(),也不能创建它的Parcelable。

这对我来说是一个很好的墙文本,我很抱歉......但是这个对我项目的限制真的让我感到困惑,因为我对android / java编程知识非常有限(我习惯了.net,现在只在java / android上工作了一个月)它会有所改进,所以如果有人知道我应该调查的东西会很棒!

1 个答案:

答案 0 :(得分:1)

您可以使用Intent Service播放音乐,使用意图与您的活动进行通信(例如,更改歌曲,当应用不在前台时停止音乐等)