2015-11-09 61 views
-1

我正在製作一個靜音和取消靜音功能的應用程序。問題是,當我打靜音時,鈴聲靜音成功,但MediaPlayer的音頻仍在播放。順便說一句:音頻在b背景中的服務中播放,並且我正在從不同的活動中將設備靜音,以阻止音頻播放。我曾嘗試多次更改流,但它仍然不會靜音。我也嘗試添加許多權限到我的清單讓它工作,但沒有運氣...簡單的靜音問題?

這裏是代碼,不用擔心我的全球變種。 X,它只是控制靜音/取消靜音是否會被稱爲反:

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

    if ((variableForMute.x % 2) != 0) { //If it's odd UNMUTE 
     Toast.makeText(Main_Menu.this, "UNMUTED", Toast.LENGTH_SHORT).show(); 
     mAudioManager.setStreamVolume(AudioManager.STREAM_RING, userVolumeOnStart.userVolume, 0); 
     variableForMute.x++; 
     Log.v(TAG, variableForMute.x + "UNMUTED"); 


    } else { //If its even MUTE 
     userVolumeOnStart.userVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING); 
     mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
     // mAudioManager.setRingerMode(0); 
     Toast.makeText(Main_Menu.this, "MUTED", Toast.LENGTH_SHORT).show(); 
     variableForMute.x++; 
     Log.v(TAG, variableForMute.x + "MUTED"); 
    } 
} 

這裏是清單的截圖:

enter image description here

非常感謝幫助我這個有趣的問題。這很有趣,因爲在嘗試使用不同的方法來完成同樣的工作之後,問題仍然會持續不斷。例如,使用官方靜音方法(audioManager.RINGER_MODE_SILENT),手動將音量設置爲零(AudioManager.STREAM_RING, 0, 0),在清單中添加權限等。您會在我的代碼中注意到很多評論,這些評論來自我的其他一些(很多! )我在解決這個問題時所做的嘗試。

注: 當我使用靜音按鈕減小音量和靜音這種方式,音頻確實成功靜音,但是我的手機沒有在頂部通知欄的小靜音圖標。否則,使用靜音按鈕,我會得到靜音圖標,它不會成功靜音。

謝謝,讓我知道如果你需要別的東西,我希望我已經提供了足夠的信息!

+0

爲什麼當你在'STREAM_MUSIC'上播放音樂時,你是否將'STREAM_RING'靜音? – ianhanniballake

回答

0

MediaPlayer mp = MediaPlayer.create(context,R.raw.sound_file_1); mp.start();

爲靜音

mp.setVolume(0,0);

&取消靜音或全體積

mp.setVolume(1,1);

+0

我得到無法解析setVolume(int,int)方法。我怎樣才能解決這個問題?謝謝! –

+0

public void setVolume(float leftVolume,float rightVolume) 在API級別1中添加 設置此播放器的音量。建議使用此API來平衡應用程序中音頻流的輸出。除非您正在編寫用於控制用戶設置的應用程序,否則應該優先使用此API來設置特定類型的所有流的音量setStreamVolume(int,int,int)。請注意,傳遞的音量值是0.0到1.0範圍內的原始標量。 UI控件應該以對數形式進行縮放。 –