0

所以我遇到了一个问题,我无法完全理解。我一直在使用静态类来保存我的 SoundPool。

例如

public class Sound 
{

    private static SoundPool sounds;
    private static int charged;

    public static void loadSound(Context context) 
    {
       sounds = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
       charged = sounds.load(context, R.raw.charged, 1);
    }

    public static void playCharged()
    {
       sounds.play(charged, 1, 1, 1, 0, 1);

    }

然后在我的主要活动(扩展 BaseGameActivity)的 onCreate 方法中,我执行以下操作:

setVolumeControlStream(AudioManager.STREAM_MUSIC);
Sound.loadSound(this);   

所以要播放声音,我通常会从我的 Game 对象中转到 Sound.playCharged() ,这是我的主要活动的一个属性。以前,这一切都很好。我不确定它何时停止工作,但我只能假设一旦我开始进行重大更改。我支持 Google Play 服务,然后将我的 Game 对象放在另一个活动中。

没有声音播放。但是,我发现如果调用方法在我的游戏对象或其他构造函数的构造函数中播放它们,声音确实会播放。我的假设是,一旦我初始化了所有东西,就会发生一些事情,就好像丢失了一些东西一样。

4

1 回答 1

0

好吧,所以我最终设法解决了这个问题,方法是不在我的主要活动的 onStop 方法中释放声音,而是释放我创建的新活动。因为在开始第二个活动之前会调用 onStop 方法来弄乱声音。

于 2013-09-04T16:54:03.480 回答