gpt4 book ai didi

android - 构建一个简单的键盘记录器 Android 应用程序 : Accessibility research for Virtual keyboard

转载 作者:太空狗 更新时间:2023-10-29 13:32:30 27 4
gpt4 key购买 nike

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

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

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

因此,我需要在输入新条目后立即记录每个字符以及时间戳。我一直在尝试使用“ TextWatcher ”类进行实验

    EditText KeyLogEditText = (EditText) findViewById(R.id.editTextforKeyLog);
TextWatcher KeyLogTextWatcher = new TextWatcher() {

@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3)
{ }

@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3)
{ }

@Override
public void afterTextChanged(Editable arg0) {
// TODO Log the characters in the SQLite DB with a timeStamp etc.
// Here I call my database each time and insert an entry in the database table.
//I am yet to figure out how to find the latest-typed-character by user in the EditText

}

我的问题是:

  1. 这是实现它的正确方法吗?
  2. 我能否获取随时间输入的 Exactly ONE 字符并将其插入 SQLite 数据库以便稍后获取和分析?
  3. 或者 onKeyUp方法更有用? [我还没有使用过尝试过的方法,所以如果有人能指出我使用它来构建一个键盘记录器,如果这更简单的话,那就太好了!]

*提前感谢任何能以任何方式帮助我的人!

调整*

最佳答案

现在你的 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 );

这个 Watcher 中包含的每个方法都是通过从键盘输入每个符号来触发的。由于您在输入后获得位置,因此您可以轻松获得输入的字符

要存储您提到的数据,SharedPreferences 会比 DB 更快。 (许多写入数据库)如果您的目标至少是 api 11,您可以简单地使用 StringSet Editor.putStringSet如果您的目标较低,也有可能,例如:http://androidcodemonkey.blogspot.com/2011/07/store-and-get-object-in-android-shared.html

.

关于android - 构建一个简单的键盘记录器 Android 应用程序 : Accessibility research for Virtual keyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14011633/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com