Android 在服务中获得软件按键

Android 在服务中获得软件按键,android,keyboard-events,Android,Keyboard Events,我正在尝试开发一个应用程序,根据键盘上的一些模式(如滑动,但不是那么复杂),它将执行一些操作。例如,如果用户同时按下两个键,它将执行一些操作。这必须是一个服务,因为我的系统没有gui。它只会做动作。我读到这是不可能的,因为它会造成一个安全漏洞,所以我愿意接受关于如何解决这个问题的建议。我曾经这样想过: 1.创建一个辅助功能服务并获取按键事件(对于硬键盘来说很容易,但是我不知道软键盘。) 你能给我一些其他的想法,或者帮助我在无障碍服务中获取软键事件吗? 谢谢 软键盘的工作方式是将所有事件发送到In

我正在尝试开发一个应用程序,根据键盘上的一些模式(如滑动,但不是那么复杂),它将执行一些操作。例如,如果用户同时按下两个键,它将执行一些操作。这必须是一个服务,因为我的系统没有gui。它只会做动作。我读到这是不可能的,因为它会造成一个安全漏洞,所以我愿意接受关于如何解决这个问题的建议。我曾经这样想过: 1.创建一个辅助功能服务并获取按键事件(对于硬键盘来说很容易,但是我不知道软键盘。) 你能给我一些其他的想法,或者帮助我在无障碍服务中获取软键事件吗?
谢谢

软键盘的工作方式是将所有事件发送到InputConnection。注意:通常情况下,它不会发送上下键事件-大多数键盘都是通过使用sendText命令来工作的,所以您想要的东西无论如何都是不可能的。但要想让它发挥作用,你需要实现一个InputConnection并使用它连接到键盘。你可能会伪造系统来创建一个键盘。但如果可以,它将不会向您发送输入,同时也无法在其上的其他位置键入-它将只向您发送输入,而不会向编辑框发送输入。要达到这一点,您必须使用InputManager将键盘连接到服务中的视图(可能是不可见的0高度视图)。如果是这样,应用程序中不可见服务上的ImputManager.showsoftwinput()函数可能足以使其工作。但它不会是永久性的——任何可编辑的字段在单击时都会窃取它。我使用可访问性服务的想法如何?我的意思是,对讲服务应该有一种方法来获取按键,这样它就可以大声地向用户读出他正在键入的内容,对吗?我从未尝试过,但由于软键盘不会生成按键事件,我猜它不会被调用。