登录
首页大数据时代微信朋友圈被折叠?会自动化不存在的
微信朋友圈被折叠?会自动化不存在的
2020-12-24
收藏

公众号:AirPython

作者:星安果

1.前言

上篇文章,我们使用无障碍自动化服务实现了微信朋友圈内容防折叠的效果

自动化篇 | 朋友圈被折叠?会自动化不存在的

但使用一段时间后,发现这种方式并不灵活!

主要体现在:

不灵活,偶尔会误处理

在手机系统及 UI 元素层面,适配性不强

本篇将介绍另外一种实现方式,即:开发一款简易的输入法,适配性强且方便快捷!

PS:如果想直接下载体验,可以通过文末方式获取

2. 步骤

2-1 创建键盘服务

首先,使用 Android Studio 创建一个项目(这里以 JAVA 为例,Kotlin 类似)

然后,自定义一个系统键盘输入服务类

  • 继承于 InputMethodService
  • 实现 KeyboardView.OnKeyboardActionListener 接口,并重写方法
微信朋友圈被折叠?会自动化不存在的
微信朋友圈被折叠?会自动化不存在的
微信朋友圈被折叠?会自动化不存在的

2-2 Manifest 配置键盘服务

在 AndroidManifest.xml 文件中,配置键盘服务,并在 service 的 meta-data 中引用元数据

微信朋友圈被折叠?会自动化不存在的

元数据定义在 res/xml 目录下,内容如下:

微信朋友圈被折叠?会自动化不存在的

需要注意的是,元数据文件可以通过 subtype 标签指定语言类型、键盘模型;为了方便,这里使用默认配置即可

2-3 键盘布局文件

在 res/layout 创建一个键盘布局文件

指定键区的背景色、按键文字大小、按键点击前后颜色背景等属性

微信朋友圈被折叠?会自动化不存在的

接着,在 res/xml 中创建键盘按键展示的内容、布局、按键 Code 值

  • keyWidth:宽度;keyHeight:高度
  • horizontalGap/verticalGap:按键水平方向/垂直方向的间距
  • codes:按键的 Code 值,方便事件处理
  • keyLabel:按键上的文字展示内容
  • keyIcon:按键的图标展示
  • isRepeatable:代表按键是可重复的,如果为 True,则长按可以重复触发按键事件,默认值为 False

按键区定义了 4 个常见按键,分别对应:防折叠输入、回退、长按清空、切换输入法

微信朋友圈被折叠?会自动化不存在的
微信朋友圈被折叠?会自动化不存在的2-4 创建键盘视图并设置监听

在键盘服务类中 onCreateInputView() 方法内,创建键盘视图并设置监听

微信朋友圈被折叠?会自动化不存在的默认创建的键盘,点击按键时的放大镜效果会影响美观,建议通过 setCandidatesViewShown(false) 关闭它

2-5 处理按键点击事件

重写 onKey(int key,int ints) 函数,其中 key 代表键盘 Code,通过它可以进行不同的事件处理

首先,我们拿到输入法的连接对象 InputConnection

使用它内置的 deleteSurroundingText() 方法即可以实现回退和长按清空的功能

微信朋友圈被折叠?会自动化不存在的对于朋友圈防折叠功能,我们依旧是分 2 步实现

首先,从系统剪切板中获取文本数据

微信朋友圈被折叠?会自动化不存在的接着,将文本内容进行切割,一个字符一个字符地模拟输入需要注意的是,可以通过指定睡眠时间,以控制输入的速度

3. 运行

由于项目中只存在一个 Service,不存在 Activity,这里需要配置项目运行参数

微信朋友圈被折叠?会自动化不存在的

然后运行项目,在手机设置中开启输入法

微信朋友圈被折叠?会自动化不存在的

最后,发布朋友圈的时候,切换到自定义的输入法,点击开始输入即可

需要注意的是,手机系统不一样,切换输入法的方式不一致

比如:魅族就需要在设置中先打开,然后输入的时候下拉状态栏,最后选择对应的输入法

微信朋友圈被折叠?会自动化不存在的

4. 最后

通过上面的步骤,即可以实现一个简易版本的朋友圈防折叠输入法!

当然,输入法的布局、按键功能都可以进行自定义,以实现更加复杂的功能;受限于篇幅,不展开说明!

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

数据分析咨询请扫描二维码

客服在线
立即咨询