2013-09-04 2 views
0

J'écris une application qui devrait émettre une notification sonore même en mode silencieux. Je ne veux pas désactiver temporairement Silent et le renvoyer en retard. J'utilise le flux d'alarme pour ça maintenant. Habituellement cela fonctionne correctement, parce que par défaut le flux d'alarme n'est pas muet en mode silencieux. Mais parfois c'est le cas.Diffusion d'un flux en mode silencieux

Comment puis-je comprendre si le flux est actuellement coupé (en mode silencieux)? Comment puis-je le désactiver (sans passer en mode normal)?

Répondre

0

répondre à ma propre question:

La solution a été trouvée dans les sources OS Android (en standard de l'application d'alarme).

j'avais trouvé moyen de vérifier et de l'option set "Alarme silencieuse":

private static final int ALARM_STREAM_TYPE_BIT = 
     1 << AudioManager.STREAM_ALARM; 

public static void setAlarmInSilent(boolean on) { 
    int ringerModeStreamTypes = Settings.System.getInt(
      context.getContentResolver(), 
      Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); 

    if (on) { 
     ringerModeStreamTypes &= ~ALARM_STREAM_TYPE_BIT; 
    } else { 
     ringerModeStreamTypes |= ALARM_STREAM_TYPE_BIT; 
    } 

    Settings.System.putInt(context.getContentResolver(), 
      Settings.System.MODE_RINGER_STREAMS_AFFECTED, 
      ringerModeStreamTypes); 
} 

Lien vers le src Android: https://android.googlesource.com/platform/packages/apps/AlarmClock/+/donut-release2/src/com/android/alarmclock/SettingsActivity.java

+0

Merci j'ai le même problème. Ce paramètre est-il défini à l'échelle du système? Je dois donc le replacer après avoir joué le son? Comment avez-vous résolu cela? – chrisonline

+0

Oui, il paramètres du système à l'échelle. Donc, je le restaure après. – nickkadrov

+0

Mais quand? Après avoir appelé notificationManager.notify()? – chrisonline