我在这个问题上停留了太久了。在主菜单屏幕上,我有一个静音按钮。我希望它在我的后台服务中调用一个方法,该方法会使在游戏后台播放的所有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
我真的很感谢任何反馈(正面或负面)!
让我知道是否需要更多代码。
最佳答案
您必须先启动服务
在Main_Menu中的方法中
Intent svIntent = new Intent(this, TwentySeconds.class);
startService(svIntent);
然后调用
TwentySeconds.myMute();
记住将服务添加到 list 文件:
<service android:enabled="true" android:name=".TwentySeconds" />
关于java - 如何修复声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33558131/