2012-12-09 16 views
6

Ich bin mit Android Audio-Manager und unmute Ströme wie STREAM_SYSTEM und STREAM_NOTIFICATION stumm zu schalten, Muting kann setStreamMute aufrufen, aber ich bin nicht in der Lage eine isStreamMuted Methode zu finden.Warum AudioManager.isStreamMuted ist nicht verfügbar?

Blick ins Innere Quellcode kann ich it exists sehen, so ist die Frage: ‚Wie können überprüfen, ob ein Strom stumm geschaltet ist?

Ich bin auf Android arbeitet 4.0.4

+0

Nizza Frage. suche nach dem gleichen. Hast du eine Antwort gefunden? –

+1

Pech keine Lösung – dafi

Antwort

7

Die unangenehme Antwort ist, dass Strom stumm auf einer Basis pro-Verfahren arbeitet. So können Sie sicher speichern die Mute-Zustand in einer statischen Variablen irgendwo, in geeigneter Weise eingewickelt, und sich stumm Zustand verfolgen. Aus bitterer Erfahrung sprechen. Manchmal machst du was du tun musst. Warum haben sie das gemacht? Das ist eine schwierigere Frage ....

1

Sie die Methode aus android.jar abgestreift verstecken mit:

/** 
* get stream mute state. 
* 
* @hide 
*/ 
public boolean isStreamMute(int streamType) { 
8

Reflections sind dein Freund. Das hat für mich funktioniert.

try { 
    Method m = AudioManager.class.getMethod("isStreamMute", int.class); 
    isMuted = (Boolean) m.invoke(am, AudioManager.STREAM_MUSIC); 
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { 
    System.out.println(e); 
} 

Update: Die Methode public boolean isStreamMute (int streamType) ist nun in API 23 ohne Reflexion verwendet wird.

+1

danke sehr Brei & sehr sehr sehr kleine Korrektur isMuted = (Boolean) m.invoke (am, AudioManager.STREAM_MUSIC); –

+1

in Antwort behoben. Vielen Dank! –

Verwandte Themen