2015-11-06 33 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

你是對的,我很抱歉。這裏是鏈接: –