有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何知道Android Studio中键入的字母表是否为大写?

对于不包含大写字母的字母表,返回的键码介于29到54之间。我甚至尝试了iscapslocon()方法来区分大写字母和小写字母,但没有成功

public boolean onKeyDown(int keyCode, KeyEvent event) {
        try {
            if (keyCode >= 29 && keyCode <= 54) {
                if (event.isCapsLockOn()) {
                    dos.writeInt(keyCode + 36);
                    dos.flush();
                }else{
                    dos.writeInt(keyCode+68);
                    dos.flush();
                }
            }else if(keyCode>=7 && keyCode<=16){
                dos.writeInt(keyCode+41);
                dos.flush();
            }
            else {
                switch (keyCode) {
                    case 62: //space
                        dos.writeInt(32);
                        break;
                    case 66:// enter
                        dos.writeInt(10);
                        break;
                    default:
                     break;
                }
            }
        }catch (Exception e){

        }
        return super.onKeyDown(keyCode, event);
        }

请告诉我是否有办法识别字母表是否为大写!!提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    你可以简单地使用

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return Character.isUpperCase(event.getKeyChar());
    }
    

    如果字符为大写,则返回true

    参见this link了解isUpperCase(char c)的解释,以及this link获取KeyEvent的char

  2. # 2 楼答案

    所以我通过使用getUnicode dechar()方法来解决这个问题。我会发布我的解决方案,以防将来对某人有所帮助

    public boolean onKeyDown(int keyCode, KeyEvent event) {
            try {
                Log.d(TAG,"Unicode: "+event.getUnicodeChar());
                if(keyCode==67){
                    dos.writeInt(8);// Special case since backspace returns unicode 0 in android
                    dos.flush();
                }else if(keyCode!=59){ // Also ignoring shift key if it is pressed
                    dos.writeInt(event.getUnicodeChar());
                    dos.flush();
                }
            }catch (Exception e){
    
            }
            return super.onKeyDown(keyCode, event);
            }