java - 如何修复声音?

标签 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

我真的很感谢任何反馈(正面或负面)!
让我知道是否需要更多代码。

最佳答案

您必须先启动服务

在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/

相关文章:

c# - 如何在 java 和 C# 中捕获和使用语音?

java - JPA/Hibernate 对 Oracle 序列的增量太多

android - 在RxJava中使用 "skipWhile"结合 "repeatWhen"实现服务器轮询

java - 减少和增加 float 增量android

java - Java 中的滑动面板

java - 如何在另一个模式中再次使用声明的正则表达式模式?

android - 围绕一个圆旋转图像?

android - Mac M1 pro机器无法打开Android TV模拟器

.net - 如何在.NET CF中以编程方式打开/关闭蓝牙?

google-chrome - 如何在 Chrome 中播放 u-law 编码的 wav 文件?