构建一个简单的键盘记录器Android应用程序:虚拟键盘的可访问性研究

构建一个简单的键盘记录器Android应用程序:虚拟键盘的可访问性研究,android,android-intent,android-sqlite,keylogger,Android,Android Intent,Android Sqlite,Keylogger,我一直在努力寻找一些资源,以便为Android平台上的易访问性研究项目(APIlevel17)构建一个键盘记录器Android应用程序 应用程序的界面将是一个简单的“EditText”字段,用户[在输入设置中选择所需的键盘后]使用虚拟屏幕键盘键入 我的目标是为我的应用程序创建一个Keylog数据库(使用SQLite数据库,因为我很熟悉它,但是一个简单的csv文件数据库也可以很好地工作!:),如下所示: (插图) 因此,我需要在一个新条目上输入每个字符,并附上时间戳。 我一直在尝试使用“”类进行体

我一直在努力寻找一些资源,以便为Android平台上的易访问性研究项目(APIlevel17)构建一个键盘记录器Android应用程序

应用程序的界面将是一个简单的“EditText”字段,用户[在输入设置中选择所需的键盘后]使用虚拟屏幕键盘键入

我的目标是为我的应用程序创建一个Keylog数据库(使用SQLite数据库,因为我很熟悉它,但是一个简单的csv文件数据库也可以很好地工作!:),如下所示: (插图)

因此,我需要在一个新条目上输入每个字符,并附上时间戳。 我一直在尝试使用“”类进行体验

我的问题是:

  • 这是正确的实施方式吗
  • 我能否准确地获得一个随时间键入的字符,并将其插入SQLite数据库中,以便以后获得并分析该数据库
  • 还是这种方法更有用?[我还没有使用试用过的方法,所以如果有人能指点我使用它来构建一个键盘记录器(如果这更简单的话),那就太好了!]
  • *提前感谢任何能以任何方式帮助我的人


    再会*

    现在您的TextWatcher没有绑定到EditText

    您应该在EditText上使用
    addTextChangedListener(TextWatcher yourWatcher)
    。 以下是我的例子:

          smsET.addTextChangedListener(new TextWatcher() {
    
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            Log.d(TAG, "onTextChanged start :"+start +"  end :"+count);}
            public void beforeTextChanged(CharSequence s, int start, int count,int after) {
                Log.d(TAG, "beforeTextChanged start :"+start +"  after :"+after);
            }
    
            public void afterTextChanged(Editable s) {
                    int lastPosition = s.length()-1;
                char lastChar = s.charAt(lastPosition);
                Log.d(TAG, "afterTextChange last char"+lastChar );
            }
    
        });
    
    在您的代码中,应该是这样的:

    KeyLogEditText.addTextChangeListener(KeyLogTextWatcher );
    
    通过输入键盘上的每个符号,可以触发此监视程序中包含的每个方法。 由于您在输入后获得posistion,所以可以很容易地获得输入的字符

    要存储您提到的数据,SharedReference将比DB更快。(对DB的多次写入)如果目标至少为api 11,则可以简单地使用StringSet,如果目标较低,也可以使用StringSet,例如:


    .

    Hey@MP23!感谢您抽出时间撰写回复,我正在实施您的建议。但我有两个问题要问你:1)我如何准确地得到编辑文本中输入的确切字符?2) 我可以在应用程序使用后获取SharedPref并提取数据进行进一步分析吗?ad.1我已经更新了我的答案,因此现在在后文本更改方法中检索最后一个符号。请运行它并签入日志。ad.2共享参考功能作为简化的数据库,具有极大的快捷方式。对于舒尔,您应该在这里的Sotrage选项部分了解更多信息。每次提交后,这些数据都会保持不变。可以在所需的时刻检索数据。可以在任何活动或服务中检索数据。一些非常简单的例子好吧,我终于有时间完成了!我建议对数据进行批处理,这样你就不会打那么多数据库电话了
    KeyLogEditText.addTextChangeListener(KeyLogTextWatcher );