2011-09-16 13 views
5

मेरे आवेदन में एक ही समय में इनपुट के दो स्रोत सक्रिय होने की आवश्यकता है: एक बार-कोड स्कैनर और सॉफ्ट कीबोर्ड। जब मैं एक नीली दांत स्कैनर जोड़ता हूं, तो इसे एक भौतिक कीबोर्ड के रूप में माना जा रहा है। इसलिए, जब यह डिवाइस कनेक्ट होता है, तो सॉफ्ट कीबोर्ड प्रदर्शित नहीं होता है (सॉफ्ट कीबोर्ड निष्क्रिय होता है)।क्या एक ही समय में भौतिक कीबोर्ड और सॉफ्ट कीबोर्ड सक्रिय होना संभव है?

क्या एक ही समय में भौतिक कीबोर्ड और सॉफ्ट कीबोर्ड सक्रिय होना संभव है? यदि नहीं, तो समस्या को हल करने के लिए सबसे अच्छा तरीका क्या है? क्या मुझे एक कस्टम व्यू को लागू करना है जो कुंजी प्रेस ईवेंट सिंक करता है? क्या मार्केट पर कोई कीबोर्ड ऐप है जो यह करता है?

मैं, प्रोग्रामेटिक रूप से, भौतिक कीबोर्ड चालू और बंद कैसे करूं? यह टॉगल बटन सेट करते समय 'भौतिक कीबोर्ड का उपयोग' (मैं यहां इस सेटिंग के स्क्रीनशॉट पाया:।

enter image description here

उत्तर

1

यह दोनों शारीरिक कीबोर्ड और शीतल एक ही समय में सक्रिय कीबोर्ड के लिए संभव नहीं है यह है InputMethodService समारोह onEvaluateInputViewShown द्वारा लागू। आप प्रलेखन here देख सकते हैं।

/** 
* Override this to control when the soft input area should be shown to 
* the user. The default implementation only shows the input view when 
* there is no hard keyboard or the keyboard is hidden. If you change what 
* this returns, you will need to call {@link #updateInputViewShown()} 
* yourself whenever the returned value may have changed to have it 
* re-evaluated and applied. 
*/ 
public boolean onEvaluateInputViewShown() { 

तो जब तक आप अपने खुद के IME को लागू कर रहे हैं, जिसमें आपको overide कर सकते हैं onEvaluateInputViewShown यह संभव दोनों शारीरिक और softkeyboard एक ही समय में सक्रिय होने के लिए है करने के लिए नहीं है

आपके अंतिम प्रश्न के बारे में मुझे यकीन नहीं है लेकिन मुझे लगता है कि हार्डकेबोर्ड को प्रोग्रामेटिक रूप से छिपाने का कोई तरीका नहीं है। हालांकि इसमें समाधान नहीं है, आपको this question

जांचना चाहिए