2015-11-05 39 views
2

我一直坚持这一个多小时了。在我的主菜单屏幕中,我有一个静音按钮。我希望它在我的后台服务中调用一个方法,将所有MediaPlayer音频静音。静音和取消静音按钮? (仍然需要一个答案)

在这里,我呼吁静音:

public void mute(View view){ 
    mutebutton = (ImageButton) findViewById(R.id.mutebutton); 

    currentVolume = manager.getStreamVolume(AudioManager.STREAM_MUSIC); 

    if (currentVolume == 0) { 
     TwentySeconds.unMute(); 
     Toast.makeText(Main_Menu.this, "UNMUTED", Toast.LENGTH_SHORT).show(); 
    } else { 
     TwentySeconds.mute(); 
     Toast.makeText(Main_Menu.this, "MUTED", Toast.LENGTH_SHORT).show(); 
    } 

下面是在服务中的方法:

public static void mute(){ 
    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; 

问题是,我在这里得到一个空指针异常:

currentVolume = manager.getStreamVolume(AudioManager.STREAM_MUSIC); 

顺便说,经理被实例化,像这样:

AudioManager manager; 

,稍后:

manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

我真的很感激任何反馈(正或负)!非常感谢你的帮助,如果你需要更多的代码,请告诉我。

{Rich} 
+0

在'manager'可以初始化之前调用'mute()'是否可以吗?可能会告诉我们全班(只有相关的位可以做)也可以帮助。 –

回答

0

你的 “经理” 应该实例化这样的:

AudioManager manager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 

如果这仍然是一个nullpoint,您实例化前加入

Context context = this; 

。试试吧,希望我能帮助你。

+0

感谢您的回答恩典!我仍然得到空指针异常,但... ...? –

+0

嗯......对不起,我没有看到你写过“manager =(AudioManager)getSystemService(Context.AUDIO_SERVICE);”到底。抱歉! – panda

+0

多数民众赞成在所有的权利,我仍然感谢您的答案。你知道那会是什么问题吗? –