如何修复声音?

时间:2015-11-06 01:49:44

标签: java android audio service timer

我已经被困在这个问题太久了。在我的主菜单屏幕中,我有一个静音按钮。我希望它在我的后台服务中调用一个方法,该方法将所有将在我的游戏背景中播放的MediaPlayer音频静音。

这里我从我的Main_Menu调用静音(x从0开始):

   if ((x%2) == 0) { //If it's even
            TwentySeconds.unMute();
            Toast.makeText(Main_Menu.this, "UNMUTED", Toast.LENGTH_SHORT).show();
        x++;
    } else { //If its odd
        TwentySeconds.myMute();
        Toast.makeText(Main_Menu.this, "MUTED", Toast.LENGTH_SHORT).show();
        x++;
    }

以下是服务中实际进行静音的方法:

       public static void myMute() {
        ten.setVolume(0, 0);
        three.setVolume(0, 0);
}
public static void unMute() {
        ten.setVolume(1, 1);
        three.setVolume(1, 1);
}

以下是实际的媒体播放器,它们间隔播放:

static MediaPlayer ten;
static MediaPlayer three;

问题是,我在这里得到一个空指针异常:

TwentySeconds.myMute();

    ten.setVolume(0,0);

顺便说一下,经理会像这样实例化:

AudioManager manager;

以及后来:

manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

以下内容可能导致此问题:

每当音频播放(播放正常)时我都会收到错误:

QCMediaPlayer mediaplayer NOT present
E/MediaPlayer﹕ Should have subtitle controller already set

我真的很感激任何反馈(积极或消极)! 如果您需要更多代码,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您必须先开始服务

在Main_Menu中的方法

Intent svIntent = new Intent(this, TwentySeconds.class);
startService(svIntent);

然后你拨打TwentySeconds.myMute();

请记住向清单文件添加服务:

<service android:enabled="true" android:name=".TwentySeconds" />