2012-08-17 10 views
7

में अधिसूचना के लिए कंपन, लाइट्स या ध्वनि का संयोजन सेट करें, मैं उपयोगकर्ता को Notification पर अलर्ट के लिए लाइट्स, ध्वनि या कंपन चुनने या इन तीनों के संयोजन के विकल्प प्रदान करने के विकल्प प्रदान करता हूं।एंड्रॉइड

एंड्रॉइड दस्तावेज़ों में मैंने देखा कि DEFAULT_ALL का विकल्प है जहां अलर्ट के सभी तीन तरीकों का उपयोग किया जाएगा।

अन्यथा उनमें से किसी एक को चुनने का विकल्प है (DEFAULT_LIGHTS, DEFAULT_VIBRATE, DEFAULT_SOUND)।

क्या कोई तरीका है जिसके लिए उदाहरण SOUND और VIBRATION का संयोजन है लेकिन LIGHTS और अन्य संयोजन किए जा सकते हैं?


संपादित

Notification.Builder's (prolink007 के जवाब से) विधि setDefaults(int default) का कहना है कि:

मूल्य एक या के साथ संयुक्त निम्नलिखित क्षेत्रों के और अधिक होना चाहिए बिटवाइज़-या: DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS।

इसका उपयोग कैसे किया जाना चाहिए?

उत्तर

20

Notification.Builder API 11 या NotificationCompat.Builder API 1 इन प्रकार की अलर्टिंग सेट करने के लिए कुछ अलग-अलग तरीकों की पेशकश करता है।

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

मूल्य से एक या अधिक होना चाहिए निम्न फ़ील्ड बिटवाई के साथ संयुक्त या: DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS।

परीक्षण किया है, लेकिन मैं आप इस अगर आप SOUND, VIBRATION और LIGHTS चाहता था की तरह कुछ करना होगा विश्वास करते हैं:

setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE | DEFAULT_LIGHTS); 
+0

कृपया संपादन देखें। – Ashwin

+0

@ अश्विन मैंने आपके दूसरे प्रश्न के बारे में अधिक जानकारी के साथ अपना उत्तर संपादित किया। – prolink007

+0

@ अश्विन क्या रोशनी आपके लिए काम कर रही हैं, क्योंकि वे सैमसंग गैलेक्सी ऐस पर काम नहीं कर रहे हैं? –

1

जेली बीन डिवाइस पर, नोटिफिकेशन प्राथमिकता अधिकतम या करने के लिए सेट है, तो ही काम करता है का नेतृत्व किया डिफ़ॉल्ट, कृपया फिर से जांचें। कोड के स्निपेट के बाद जेबी उपकरणों पर मेरे लिए ठीक काम कर रहा है।

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

यहाँ मैं नीले रंग अधिसूचना जो 3000 एमएस के लिए 100 एमएस के लिए चालू और बंद रहेगा उपयोगकर्ता अपने डिवाइस तब अनलॉक तक के लिए नेतृत्व दिखा रहा हूँ।

और अगर आप NotificationCompat (संगतता) वर्ग का उपयोग कर रहे setDefaults विधि ध्यान न दें और SetLight, SetSound, Setvibration का उपयोग जाँच, आदि

+2

संगतता पुस्तकालय का उपयोग करने वाले लोगों के लिए NotificationCompat.PRIORITY_DEFAULT के लिए काम नहीं कर रही है! –

+0

मैं एक्सपीरिया जेड 1 लॉलीपॉप का उपयोग कर रहा हूं, नेतृत्व – blackHawk

+0

अधिसूचना के लिए काम नहीं कर रहा है यह मूल्य 0xFF0000FF क्या है – blackHawk

4

पोर्टेबिलिटी के लिए मैं NotificationCompat पसंद करते हैं।
उपयोगकर्ता संभवतः अपने डिफ़ॉल्ट मान पसंद करेंगे।NotificationCombat में आप इस तरह कंपन, रोशनी सेट कर सकते हैं और उपयोगकर्ता की डिफ़ॉल्ट सेटिंग्स पर ध्वनि:

.setDefaults(-1) 

जहां "-1" मैचों DEFAULT_ALL रहे हैं: http://developer.android.com/reference/android/app/Notification.html#DEFAULT_ALL

ऐसा नहीं है कि आप कंपन की अनुमति के लिए अनुरोध करना होगा, वरना आप होगा एक त्रुटि प्राप्त करें। अपनी Android मेनिफेस्ट फ़ाइल को यह करें:

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

मैं जानता हूँ कि क्या यह उत्तर कुछ समय पहले उत्तर दिया गया है, लेकिन इसके बारे में सिर्फ जाने का मेरा तरीका है, जो रोशनी, कंपन की एक बहु संयोजन के लिए आदर्श रूप से काम करता है की पेशकश करना चाहते थे और ध्वनि, उपयोगी है यदि आप उपयोगकर्ता को सक्षम या अक्षम करने के लिए विकल्प प्रदान कर रहे हैं।

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

मुझे एक ही समस्या मिली, लेकिन लैंडिंग के बाद यहां एक बेहतर समाधान मिला। यहां एक कोटलिन है:

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 
}