2016-03-02 6 views
12

हार्डवेयर कीबोर्ड का उपयोग करके एंड्रॉइड में कैप्स लॉक स्थिति कैसे प्राप्त कर सकता हूं? शुद्ध जावा में यहएंड्रॉइड में कैप्स लॉक स्थिति प्राप्त करें

boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK); 

साथ पता लगाया जा सकता लेकिन यह Android के साथ काम नहीं करता है ...

+0

अपनी एक्सएमएल फ़ाइल ** एंड्रॉइड में अपने संपादन टेक्स्ट में निम्न विशेषता का उपयोग करें: इनपुट टाइप = "टेक्स्ट कैप कैरेक्टर" ** – malli

+0

लेकिन यह केवल स्वचालित रूप से पूंजी अक्षरों को ही लिखता है? – Kewitschka

+0

सही मुझे अपने परिदृश्य बताएं कि आप किस कार्यक्षमता से इसकी अपेक्षा कर रहे हैं .. – malli

उत्तर

4

यह प्रयास करें (यह परीक्षण नहीं किया है):

public class CustomEditText extends EditText{ 


public CustomEditText(Context context) { 
    super(context); 
} 

public CustomEditText(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(event.isCapsLockOn()){ 
     //Do what Ever 
    } 
    return super.onKeyDown(keyCode, event); 
} 

}

isCapsLockOn

+0

event.isCapsLockOn() ने इसे बनाया। धन्यवाद दोस्त! – Kewitschka

+0

कृपया निम्नलिखित [doc] (http://developer.android.com/reference/android/widget/TextView.html) से निम्नलिखित नोट करें: 'सॉफ़्टवेयर कीबोर्ड में कुंजी प्रेस आम तौर पर इस श्रोता को ट्रिगर नहीं करती हैं, हालांकि कुछ लोग चुन सकते हैं कुछ स्थितियों में ऐसा करते हैं। सॉफ़्टवेयर कुंजी प्रेस को पकड़ने के लिए इस पर भरोसा न करें। – user2340612

+0

सॉफ़्टवेयर कीबोर्ड ... उसने हार्डवेयर कीबोर्ड के बारे में पूछा। इसके अलावा देशी सॉफ़्टवेयर कीबोर्ड ऐप श्रोता को ट्रिगर करता है (स्विफ्टकी के रूप में) और यह सबसे अच्छा संभव समाधान है – royB

2

मुझे नहीं लगता कि किसी भी Android एपीआई जो capslock के राज्य का पता लगा सकते है है। लेकिन मेरे पास इसका विकल्प है। यदि आप यह पता लगाना चाहते हैं कि कैप्सल चालू या बंद है, तो के लिए TextWatcher का उपयोग करना बेहतर है।

mEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      String character = s.toString(); 
      /* 
      Matche entered character with Rajex wheter its capital or small 
      */ 
      if (Pattern.matches("[a-z]",character)) { 
       Log.e("","CapsLock is OFF"); 
      } 
      else if (Pattern.matches("[A-Z]",character)){ 
       Log.e("", "CapsLock is ON"); 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 
+0

मेरी समस्या के लिए कैप्स लॉक स्थिति जानना जरूरी है क्योंकि मैं पंक्ति में 2 पूंजी अक्षरों को रोकना चाहता हूं, कैप्स लॉक सक्रिय है। – Kewitschka

+0

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

+0

सही समाधान पहले ही स्वीकार कर लिया गया है। धन्यवाद वैसे भी – Kewitschka

1

आप अपने editText में android:inputType="textCapSentences" उपयोग कर सकते हैं, तो आप पहले अक्षर बनाना चाहते हैं तो टोपी के साथ शुरू करो। यदि आप कुछ अलग व्यवहार चाहते हैं तो अन्य विकल्प भी हैं।

संबंधित मुद्दे