队列抢红包_微信抢红包插件 English Version

bbfb7f02837c6f6340640904821e022a.png

这个Android插件可以帮助你在微信群聊抢红包时战无不胜。当检测到红包时,插件会自动点击屏幕,人工点击的速度无法比拟。

你正在查看的是dev分支,这个分支包含大量实验性的修改,不再更新。如果你希望有一个可以立即使用的插件请切换到stable分支

注: stable分支的插件只点击最新的红包,根据目前测试抢红包成功率100%。dev分支在stable分支的基础上尝试了大量修改和优化,能使用但无法保证稳定性。

下面的文档仅针对dev分支

预期特性

  1. 可以抢屏幕上显示的所有红包,同类插件往往只能获取最新的一个红包。
  2. 智能跳过已经戳过的红包,避免频繁点击影响正常使用。
  3. 红包日志 (默认未开启),方便查看抢过的红包内容。
  4. 性能优化,感受不到插件的存在,可一直后台开启,不影响日常聊天。
  5. 由于这是一份教学代码,项目的文档和注释都比较完整,代码适合阅读。

实现原理

1. 抢红包流程的逻辑控制

这个插件通过一个Stage类来记录当前对应的阶段。Stage类被设计成单例并惰性实例化,因为一个Service不需要也不应该处在不同的阶段。对外暴露阶段常量和entering和getCurrentStage两个方法,分别记录和获取当前的阶段。

public class Stage {

    private static Stage stageInstance;

    public static final int FETCHING_STAGE = 0, OPENING_STAGE = 1, FETCHED_STAGE = 2, OPENED_STAGE = 3;

    private int currentStage = FETCHED_STAGE;

    private Stage() {}

    public static Stage getInstance() {
        if (stageInstance == null) stageInstance = new Stage();
        return stageInstance;
    }

    public void entering(int _stage) {
        stageInstance.currentStage = _stage;
    }

    public int getCurrentStage() {
        return stageInstance.currentStage;
    }
}

1.1 阶段说明

阶段说明FETCHING_STAGE正在读取屏幕上的红包,此时不应有别的操作FETCHED_STAGE已经结束一个FETCH阶段,屏幕上的红包都已加入待抢队列OPENING_STAGE正在拆红包,此时不应有别的操作OPENED_STAGE红包成功抢到,进入红包详情页面

1.程序以FETCHED_STAGE 开始,将屏幕上的红包加入待抢队列:

--> FETCHED_STAGE --> FETCHING_STAGE  --> FETCHED_STAGE -->

2.处理待抢队列中的红包:

--> [CLICK] --> OPENING_STAGE --> [CLICK] --> OPENED_STAGE --> [BACK] --> FETCHED_STAGE -->(抢到)

--> [CLICK] --> OPENING_STAGE --> [BACK] --> FETCHED_STAGE -->(没抢到)

3.不断重复流程1和2

1.2 根据阶段选择不同的入口

在每次窗体状态发生变化后,根据当前所在的阶段选择入口。

switch (Stage.getInstance().getCurrentStage()) {
    case Stage.OPENING_STAGE:
        // .......
        Stage.getInstance().entering(Stage.FETCHED_STAGE);
        performGlobalAction(GLOBAL_ACTION_BACK);
        break;
    case Stage.OPENED_STAGE:
        Stage.getInstance().entering(Stage.FETCHED_STAGE);
        performGlobalAction(GLOBAL_ACTION_BACK);
        break;
    case Stage.FETCHED_STAGE:
        if (nodesToFetch.size() > 0) {
            AccessibilityNodeInfo node = nodesToFetch.remove(nodesToFetch.size() -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值