2017-02-12 5 views
10

जब अधिसूचना प्राप्त होती है तो मैं एक विशिष्ट कार्यक्षमता के लिए एक कस्टम कंपन परिभाषित कर रहा हूं।अधिसूचना प्राप्त करने पर होने वाली कंपन को अक्षम/पुन: सक्षम कैसे करें?

हालांकि, जब फोन स्क्रीन बंद होती है, कस्टम कंपन डिफ़ॉल्ट सूचना कंपन के साथ खेलती है।

मैं चुप मोड में फोन रख दिया और साइलेंट मोड से यह प्रोग्राम के रूप में दूर करने के लिए करने की कोशिश की है और यह भी शक है कि जब सीपीयू बंद है, तो डिफ़ॉल्ट कंपन भी फेंक दिया जाता है एक आंशिक Wakelock का उपयोग करने की कोशिश की, लेकिन दोनों डॉन दृष्टिकोण ' टी काम करने लगते हैं।

मैंने डिफ़ॉल्ट ऑडियो और कंपन को म्यूट करने और अधिसूचना प्राप्त करने पर अपने कार्य को पूरा करने के बाद इसे पुनर्स्थापित करने का प्रयास किया, लेकिन यह केवल डिफ़ॉल्ट अधिसूचना ध्वनि को मास्क करने में मदद करता है, न कि डिफ़ॉल्ट कंपन।

//Trying to mute the notification sound and vibration 
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 
//Restoring the defaults 
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, defaultNotifVolume, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 

कृपया मुझे पता निष्क्रिय करने के लिए कैसे/डिफ़ॉल्ट सूचना कंपन प्रोग्राम के रूप में सक्षम हैं।

उत्तर

0

यहां आपको

public void enableVibration(NotificationCompat.Builder builder, long[] customPattern){ 
    builder.setVibrate(customPattern); 
} 

public void disableVibration(NotificationCompat.Builder builder){ 
    builder.setVibrate(new long[]{0L}); 
} 

आशा इस मदद करता है।

+1

यह एक कस्टम अधिसूचना है जिसे हम बनाते हैं। मैं सिस्टम अधिसूचना कंपन को ओवरराइड करने और अक्षम करने/मास्किंग और इसे पुन: सक्षम करने के बारे में पूछ रहा हूं – SoulRayder

+0

आप जो पूछ रहे हैं वह एंड्रॉइड सिस्टम में कंपन अक्षम/सक्षम है? मेरे ज्ञान के अनुसार, एंड्रॉइड फ्रेमवर्क एपीआई के पास सभी ऐप्स के लिए सभी कंपन अक्षम करने का विकल्प नहीं है। किसी ने एक ऐप बनाया है जो उन्हें सिस्टम-व्यापी से बंद कर सकता है - https://play.google.com/store/apps/details?id=sk.blade.globalvibratetoggle नोट: रूट किए गए फ़ोन की आवश्यकता होती है, क्योंकि वहां कंपन अक्षम करने के लिए कोई एपीआई नहीं है। उम्मीद है कि यह मदद करता है। – albeee

1

यह संभव नहीं है (शायद रूट के साथ?)।

ऐप्स अन्य ऐप्स में हस्तक्षेप नहीं कर सकते हैं, भले ही यह संभव होगा कि यह Google Play नियमों के विरुद्ध होगा।

1

मुझे लगता है कि आप रिंगर मोड को कंपन या रिंगर या चुप करने के लिए टॉगल करना चाहते हैं।

अपनी सूचना के लिए, अधिसूचना से पहले SILENT को RINGER_MODE सेट और इसे वापस NORMAL करने के लिए सेट अधिसूचना के बाद।

एंड्रॉइड में आपको किसी भी सेटिंग पैरामीटर को टॉगल करने के लिए डिवाइस सेटिंग्स को बदलने की अनुमति की आवश्यकता है। प्रकट करने के लिए, को जोड़ने के साथ शुरू

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>,

अब, AudioManager उपयोग करते हैं, आप क्या हासिल करना चाहते हैं

AudioManager aManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
aManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); 

आप हो सकता है, RINGER_MODE_VIBRATE, RINGER_MODE_SILENT या RINGER_MODE_NORMAL

इसके अलावा, मेनिफेस्ट में अनुमति android.permission.VIBRATE जोड़ें।

+0

यह आपके जैसा दिखता है और मैं एक जैसे सोचता हूं..यह मेरी कोशिश के समान है ... लेकिन इस दृष्टिकोण के साथ दो समस्याएं .. यह एक साफ समाधान नहीं है क्योंकि कोड सिस्टम ऑपरेशन में हस्तक्षेप कर रहा है (अगर हमने फोन सेट किया है चुप मोड के लिए ... एक बार जब हम अधिसूचना प्राप्त कर लेते हैं ... फोन सामान्य मोड में होगा) और दूसरी बात ... जब मैं सामान्य या कंपन मोड पर वापस सेट करता हूं ... उस रिंगर मोड संक्रमण के साथ एक साथ ध्वनि और कंपन पैटर्न होता है क्रमशः जो कस्टम कंपन के साथ हस्तक्षेप कर रहा है, मैं सेटिंग कर रहा हूं .. जो ठीक है मैं – SoulRayder

+0

@SoulRayder को बाईपास करना चाहता हूं तो मैं आपको सिस्टम कंपन को रद्द करने का सुझाव दूंगा, 'वाइब्रेटर वी = (वाइब्रेटर) getSystemService (Context.VIBRATOR_SERVICE) ; और फिर 'vibration.cancel(); अधिसूचना के दौरान। यह सिस्टम की कंपन को रद्द कर देगा और फिर आप अपनी कस्टम कंपन उत्पन्न कर सकते हैं। –

+0

यह मेरा प्रश्न है :) – SoulRayder

5

इस

NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this); 

इस कंपन की एक पद्धति को बढ़ावा मिलेगा अधिसूचना बिल्डर का उपयोग और सेट कंपन को दूर करने की कोशिश, इस कंपन

को निष्क्रिय कर देगा इस से निपटने में मेरी उदाहरण है ध्वनि और पूर्व कांपना:

Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentText(body) 
       .setContentTitle(title) 
       .setSound(soundUri) 
       .setLargeIcon(icon) 
       .setSound(soundUri) 
       .setLights(Color.parseColor("#ffb400"), 50, 10) 
       .setVibrate(new long[]{500, 500, 500, 500}) 
       .setAutoCancel(true) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(0, notificationBuilder.build()); 
0

notifica प्राप्त करने के लिए अक्षम कंपन बनाने के लिए इस प्रयास करें tions

notificationBuilder.setDefaults(Notification.DEFAULT_LIGHT | Notification.DEFAULT_SOUND) 
        .setVibrate(new long[]{0l}); // Passing null here silently fails 
संबंधित मुद्दे