2013-03-06 63 views
0

我目前正在为我的学习项目工作,在这个项目中我必须创建一个小型的安卓游戏。如果一切顺利,我的游戏会变得或多或少像老式的小宠物游戏。使用多个活动(闪屏,菜单,游戏视图,战斗视图等)构建游戏。现在我有大部分工作。但有一件事困扰着我,身边的人无法给出明确的答案。在活动之间管理一个班级

在游戏中,我有一个名为MusicPlayer.java的类。本课程用于在大部分活动中播放背景音乐。现在,我在活动的创建中初始化这个类,并将其设置为从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

可以使用Intent Service播放音乐,使用意图从你的交流活动(例如更改歌曲,停止音乐时,您的应用程序是不是在前台等)

+0

嘿,感谢快速的先驱者。我做了一些阅读,看起来像是我应该明天尝试的东西。我会让你知道这是如何解决的! – 2013-03-06 23:16:28

+0

关于延迟,对不起,但我终于得到了时间。过了不多Struggeling后,我已经成功地我Musicplayer类转换到一个意向服务女巫作品的方式更好,则旧的情况! – 2013-03-08 19:12:16

+0

很高兴帮助:) – nicopico 2013-03-08 21:48:42