我已经被困在这个问题太久了。在我的主菜单屏幕中,我有一个静音按钮。我希望它在我的后台服务中调用一个方法,该方法将所有将在我的游戏背景中播放的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
我真的很感激任何反馈(积极或消极)! 如果您需要更多代码,请与我们联系。
答案 0 :(得分:0)
您必须先开始服务
在Main_Menu中的方法
Intent svIntent = new Intent(this, TwentySeconds.class);
startService(svIntent);
然后你拨打TwentySeconds.myMute();
请记住向清单文件添加服务:
<service android:enabled="true" android:name=".TwentySeconds" />