Obtener estado de mayúsculas en Android

¿Cómo puedo obtener el estado de bloqueo de mayúsculas en Android mediante un teclado de hardware? En Java puro puede ser detectado con

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

Pero esto no funciona con Android …

Pruebe esto (no lo probó):

 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

No creo que haya ninguna API de Android que pueda detectar el estado de capslock. Pero tengo su alternativa. Si desea detectar que si CAPSLOCK está activado o desactivado, es mejor utilizar TextWatcher para su EditText .

 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("[az]",character)) { Log.e("","CapsLock is OFF"); } else if (Pattern.matches("[AZ]",character)){ Log.e("", "CapsLock is ON"); } } @Override public void afterTextChanged(Editable s) { } }); 

Puedes usar android:inputType="textCapSentences" en tu editText, si quieres hacer la primera letra, comienza con mayúsculas. Hay otras opciones también, si quieres un comportamiento diferente.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.