2015-11-06 34 views
-1

我一直在这方面停留太久了。在我的主菜单屏幕中,我有一个静音按钮。我希望它在我的后台服务中调用一个方法,将后台播放的所有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; 

问题是,我得到一个空指针exce ption这里:

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

您必须启动服务第一

在该方法中MAIN_MENU

​​

然后调用TwentySeconds.myMute();

记住添加服务清单文件:

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

二十秒是类名,十是该类中的mediaPlayer。我应该如何在一个单独的类中初始化这两个?感谢您的答复! –

+0

我怎样才能知道TwentySeconds是你的班级名称,你没有完全提供你的代码,男人:) – dauruy

+0

你是对的,我很抱歉。这里是链接: –