2012-02-24 17 views
7

मैं आने वाली कॉल को चुप करने और ब्लैकबेरी डिवाइस को बजने से रोकने की कोशिश कर रहा हूं। मैंने Alert.setVolume (0) और कुछ EventInjector कुंजी की कोशिश की लेकिन यह काम नहीं किया।आने वाली कॉल को शांत करने के लिए

तो आने वाली कॉल को चुप कैसे करें?

उत्तर

3

आप won't be able to ध्वनि प्रोग्रामेटिक रूप से अक्षम (कुछ अन्य स्रोतों को मिला जो एक ही बात कहता है)। फोन की ध्वनि प्रोफ़ाइल को चुप करने के लिए EventInjector का उपयोग करने के लिए लोगों के साथ सबसे अच्छा कामकाज आया था।

+0

ठीक है, मुझे पता है। लेकिन फोन की ध्वनि प्रोफ़ाइल को चुप करने के लिए EventInjector का उपयोग कैसे करें? मैंने संयोजनों की कोशिश की और काम नहीं किया ... कोई विचार? –

+0

यदि आपके पास बीबी डिवाइस है, तो फोन को मूक प्रोफ़ाइल में बदलने के लिए आवश्यक महत्वपूर्ण प्रेस को समझें, फिर अपने कोड के साथ दोहराएं। – jprofitt

+0

इसे समझ लिया ... कोशिश की .. और काम नहीं किया :) –

6

मैं आपके प्रश्न से परेशान था और चुनौती लेने का फैसला किया। मैं UiApplication.getUiApplication().getActiveScreen()

  • के माध्यम से सहित

    1. डिवाइस की बज ओवरलैप या मीडिया प्लेयर
    2. कब्जा करने के लिए फोन के स्क्रीन हैकिंग उम्मीद कर एक "मौन" ऑडियो फ़ाइल बजाना अलग बात करने की कोशिश की कुंजीपटल घटनाओं इंजेक्शन

    आखिरकार, वॉल्यूम यूपी कुंजी इंजेक्शन (वॉल्यूम डाउन कुंजी भी काम करता है) घटना ने मेरे लिए काम किया और इनकमिंग कॉल पर डिवाइस बजाना बंद कर दिया। इस दृष्टिकोण के साथ दोष यह है कि कभी-कभी डिवाइस म्यूटिंग से पहले दूसरे के अंश के लिए रिंग करता था।

    import net.rim.blackberry.api.phone.AbstractPhoneListener; 
    import net.rim.blackberry.api.phone.Phone; 
    import net.rim.device.api.system.Application; 
    import net.rim.device.api.system.EventInjector; 
    import net.rim.device.api.ui.Keypad; 
    
    class Muter extends AbstractPhoneListener { 
        public void callIncoming(int callId) {   
         Thread muterThread = new Thread(new Runnable() { 
          public void run() { 
           EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN, (char) Keypad.KEY_VOLUME_UP, 0)); 
           EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_UP, (char) Keypad.KEY_VOLUME_UP, 0)); 
          } 
         }); 
         muterThread.setPriority(Thread.MAX_PRIORITY); 
         muterThread.start(); 
        } 
    } 
    
    public class MuterApp extends Application { 
        public static void main(String[] args){ 
         Phone.addPhoneListener(new Muter()); 
         new MyApp().enterEventDispatcher(); 
        } 
    } 
    

    निम्नलिखित भी काम करता है (निम्न कोड के साथ callIncoming() विधि में Muter धागा बदलें)।

     UiApplication.getUiApplication().invokeLater(new Runnable() { 
          public void run() { 
           EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN, (char) Keypad.KEY_VOLUME_UP, 0)); 
           EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_UP, (char) Keypad.KEY_VOLUME_UP, 0)); 
          } 
         }); 
    
  • +0

    आपके उत्तर के लिए धन्यवाद। लेकिन मैं कुछ सेकंड के बाद कॉल प्राप्त करते समय रिंगर बंद होना चाहता हूं। क्या आपके पास इसके बारे में कोई सुराग है? –

    +0

    @ फ़रीदफारहाट इस समय नहीं। बीटीडब्ल्यू, यह कुछ सेकंड नहीं है लेकिन शायद कुछ मामलों में आधा सेकेंड कम है। दूसरों में, रिंगर तुरंत म्यूट कर दिया जाता है। – mrvincenzo

    2

    कुछ ब्लैकबेरी फोनों में एक म्यूट कुंजी है। आप नीचे दिए गए विचार कोशिश कर सकते हैं:

    public void callIncoming(int callId) { 
        if (KeyPad.hasMuteKey()) { 
         /* Inject KEY_SPEAKERPHONE event */ 
        } 
        else { 
         /* Inject KEY_VOLUME_DOWN event N times, so that you get the mute effect */ 
        } 
    } 
    
    0

    मैं काफी यह सब करने के लिए नया हूँ ... लेकिन मैं मैं के रूप में अच्छी तरह से लायक मेरी 2 सेंट में डाल सकता है सोचा ...

    मैं खोजने की कोशिश की है प्रोफ़ाइल सेटिंग्स को प्रोग्रामिक रूप से बदलने के तरीके ...

    मुझे पता चला है कि, जबकि हम प्रोफ़ाइल सेटिंग्स को बदल नहीं सकते हैं, हम उस सेटिंग को बदल सकते हैं जिसका उपयोग हम कर रहे हैं (उपयोग में आने वाली प्रोफ़ाइल को बदलें, मुझे लगता है) - यह कुछ है जो मैं जानकारी के लिए खोज में आया था-हालांकि मुझे कोड के लिए alishaik786 को क्रेडिट देना चाहिए।

    public final class LoadingScreen extends MainScreen implements FieldChangeListener 
        { 
         public LoadingScreen() 
        {   
         createGUI(); 
        } 
    
        private void createGUI() 
        { 
         try 
         {   
          ApplicationManager.getApplicationManager().launch("net_rim_bb_profiles_app"); 
         } 
         catch (Exception e) 
         { 
          //Exception 
         } 
        } 
    
        public void fieldChanged(Field field, int context) 
        { 
    
        } 
    } 
    
    संबंधित मुद्दे