2012-08-17 5 views
7

I Wan, um den Benutzer mit der Option zur Auswahl Lichter, Sounds oder Vibration oder eine Kombination dieser drei für Warnungen auf Notification.Stellen Sie eine Kombination aus Vibration, Licht oder Ton für eine Benachrichtigung in Android

In Android-Dokumentation habe ich gesehen, dass es eine Option DEFAULT_ALL gibt, wo in allen drei Methoden der Warnungen verwendet werden.

Else gibt es eine Option eine von ihnen die Wahl (DEFAULT_LIGHTS, DEFAULT_VIBRATE, DEFAULT_SOUND).

Gibt es einen Weg, durch den eine Kombination von zum Beispiel SOUND und VIBRATION, aber keine LIGHTS und andere Kombinationen gemacht werden kann?


EDIT

Notification.Builder's (von prolink007 Antwort) Methode setDefaults(int default) sagt, dass:

Der Wert sein sollte oder mehrere der folgenden Felder kombiniert mit bitweise oder: DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS.

Wie sollte das verwendet werden?

Antwort

20

Die Notification.Builder API 11 oder NotificationCompat.Builder API 1 bietet einige verschiedene Methoden zum Einstellen dieser Arten von Warnungen.

  • setLights (...)
  • setSound (...)
  • setVibrate (...)

Der Wert sollte eine oder mehrere der sein folgende Felder kombiniert mit bitweise-oder: DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS.

Nicht getestet, aber ich glaube, dass Sie so etwas tun würden, wenn Sie SOUND, VIBRATION und LIGHTS wollte:

setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE | DEFAULT_LIGHTS); 
+0

finden Sie in der Bearbeitung. – Ashwin

+0

@Ashwin Ich habe meine Antwort mit mehr Informationen bezüglich Ihrer zweiten Frage bearbeitet. – prolink007

+0

@Ashwin Arbeiten Lichter für Sie, weil sie nicht auf Samsung Galaxy Ace arbeiten? –

1

auf Jelly Bean Geräte, führte nur funktioniert, wenn Meldung Priorität wird auf max oder Standard, bitte erneut prüfen. Das folgende Code-Snippet funktioniert auf jb-Geräten einwandfrei.

notification.setLights(0xFF0000FF,100,3000); 
notification.setPriority(Notification.PRIORITY_DEFAULT); 

Hier zeige ich blaue Farbe für die Benachrichtigung geführt, die auf 100 ms ein- und für 3000 ms bleiben, bis Benutzer sein Gerät entsperrt.

Und wenn Sie NotificationCompat (Kompatibilität) Klasse verwenden als setDefaults Methode zu ignorieren und verwenden SetLight, SetSound, Setvibration, etc

+2

NotificationCompat.PRIORITY_DEFAULT für diejenigen, die die Kompatibilitätsbibliothek verwenden! –

+0

Ich benutze xperia z1s Lollipop, LED funktionieren nicht für die Benachrichtigung – blackHawk

+0

was ist dieser Wert 0xFF0000FF – blackHawk

4

Für Portabilität ziehe ich NotificationCompat.
Benutzer wird möglicherweise seine/ihre Standardwerte bevorzugen.

.setDefaults(-1) 

wo „-1“ Spiele DEFAULT_ALL: http://developer.android.com/reference/android/app/Notification.html#DEFAULT_ALL

Nicht, dass Sie für VIBRATE Erlaubnis bitten müssen, sonst werden Sie in NotificationCombat können Sie Vibration, Licht und Ton zu Benutzerstandardeinstellungen wie folgt festgelegt Erhalte einen Fehler. Fügen Sie diese auf Ihrem Android-Manifest-Datei:

<uses-permission android:name="android.permission.VIBRATE" /> 
5

Ich weiß, diese Antwort eine Weile her beantwortet wurde, wollte aber nur um es auf meine Art bieten, zu gehen, die sich ideal für eine Mehrfachkombination von Lichtern, Vibration arbeitet und Sound, nützlich für den Fall, dass Sie dem Benutzer Optionen anbieten, um sie zu aktivieren oder zu deaktivieren.

int defaults = 0; 
if (lights) { 
    defaults = defaults | Notification.DEFAULT_LIGHTS; 
}    
if (sound) { 
    defaults = defaults | Notification.DEFAULT_SOUND; 
} 
if (vibrate) { 
    defaults = defaults | Notification.DEFAULT_VIBRATE; 
} 
builder.setDefaults(defaults); 
0

Ich habe das gleiche Problem, aber nach der Landung hier bekam eine bessere Lösung. Hier ist ein Kotlin One:

fun getDefaults(val isSoundOn: Boolean, val isVibrate: Boolean, val isLightOn: Boolean): Int { 
    var defaults = 0 
    if (isLightOn && isSoundOn && isVibrate) 
     return Notification.DEFAULT_ALL 
    if (isLightOn) { 
     defaults = defaults or Notification.DEFAULT_LIGHTS 
    } 
    if (isSoundOn) { 
     defaults = defaults or Notification.DEFAULT_SOUND 
    } 
    if (isVibrate) { 
     defaults = defaults or Notification.DEFAULT_VIBRATE 
    } 
    return defaults 
} 
Verwandte Themen