2011-01-01 11 views

Odpowiedz

45

Ten kod pracował dla mnie,

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

dla Wycisz

mp.setVolume(0,0); 

& Mikrofon lub pełny Tom

mp.setVolume(1,1); 
+3

dwie cyfry oznaczają kanał L i R, więc wyłączenie wyciszenia powinno mieć wartość mp.setvolume (1,1); –

+0

@DheeB dziękuje, mam zaktualizowaną moją odpowiedź –

+0

Wiem, że to dużo czasu po, ale dostaję wyjątek wskaźnika pustego kiedy próbuję ustawić głośność. Będę naprawdę wdzięczny za pomoc. –

8

Może zaistnieć potrzeba zaniknięcia/pojawienia się dźwięku, zamiast natychmiastowego ustawienia go na pełną (1.0f) lub zero (0.0f) głośność.

To trochę skomplikowane, bo trzeba zadanie asynchronicznej zachować swoją aplikację reaguje:

mpMain jest moje wystąpienie MediaPlayer grać pętli podkładu muzycznego. Dbam również o to w OnPause() i OnResume().

Metoda playBackgroundMusic służy do włączania muzyki, fadeOutBackgroundMusic wyłącza muzykę, ale zmniejszając głośność przez 0,5 sekundy (10 * 50, zobacz podczas i Thread.sleep).

Moja podstawowa wielkość to 0,8 f, możesz chcieć ustawić parametr asynchronicznego zadania lub użyć statycznej globalnej zmiennej.

public void playBackgroundMusic(Boolean isOn){ 
    if(isOn){ 
    // prevent conflics with async fade-out task 
    if(mtask_fadeout_music!=null){ 
     mtask_fadeout_music.cancel(true); 
     mtask_fadeout_music=null; 
    } 
    if(mpMain==null){ 
     mpMain = MediaPlayer.create(this, R.raw.zin___piano_2_140bpm_32158); 
     mpMain.setLooping(true); 
     mpMain.setVolume(0.8f,0.8f); 
     mpMain.start();       
    } 
    } 
    else{ 
    if(mtask_fadeout_music==null){ 
     fadeOutBackgroundMusic(); 
    } 
    } 
} 

public void fadeOutBackgroundMusic(){ 
    mtask_fadeout_music = (FadeOutMusic)new FadeOutMusic().execute(); 
} 


// 
// background processing ... fade out music stream 
// 
public class FadeOutMusic extends AsyncTask<String,Integer,String> { 

    @Override 
    protected String doInBackground(String... args) { 
    float level = 0.8f; 
    int i = 1; 

    while(i<50){ 
     i++; 
     if(mpMain != null){ 
      level=level*0.9f; 
      mpMain.setVolume(level, level);   
     } 
     try { 
      Thread.sleep(10); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
    return "dummy"; 
    } 

    @Override 
    protected void onPostExecute(String dummy) { 
    if(mpMain != null){ 
     mpMain.setVolume(0,0);   
     mpMain.release(); 
     mpMain = null; 
    } 
    if(mtask_fadeout_music!=null){ 
     mtask_fadeout_music = null; 
    } 
    }  

    @Override 
    public void onCancelled() { 
    if(mpMain != null){ 
     mpMain.setVolume(0,0);   
     mpMain.release(); 
     mpMain = null; 
    } 
    if(mtask_fadeout_music!=null){ 
     mtask_fadeout_music = null; 
    } 
    } 
} 
12
AudioManager mAudioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 

    int current_volume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
    //If you want to player is mute ,then set_volume variable is zero.Otherwise you may supply some value. 
    int set_volume=0; 
    mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,set_volume, 0); 
1

Spróbuj tego ...

AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
manager.setStreamMute(AudioManager.STREAM_MUSIC, true); 

Będzie Kompletna wyciszyć głośność multimediów wyciszenia

0

jest przestarzałe. użyj poniżej kodu alternatywnego.

// Change the stream to your stream of choice. 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
     am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_MUTE, 0); 
    } else { 
     am.setStreamMute(AudioManager.STREAM_MUSIC, true); 
    } 
Powiązane problemy