最新公告
  • 本站源碼資源類型廣泛,涵蓋PHP網站源碼、遊戲源碼、主題模板、擴張插件等一系列優質資源分享以供學習研究。歡迎加入VIP
  • 自動搶紅包精靈是一款讓你不再錯過任何一個紅包的手機軟件,軟件實時的爲你提供最好的服務,給你最好的服務,操作簡單隻要輕輕一點就能輕鬆搶到紅包,喜歡的用戶快來下載吧!自動搶紅包精靈軟件特色:1.QQ和微信紅包自動搶2.操作簡單,只需簡單操作就可自動搶紅包3.反應迅速,紅包統統拿來,一個都跑不掉[b]關鍵Service代碼:[/b][p=24, null, left]注:此前在15年12月時,用的Eclipse開發這個,後來沒有時間切到AS上去,如運行在AS可以的話,可提pr實現原理1.1 狀態說明private static final String WECHAT_OPEN_CH = "拆紅包";private static final String WECHAT_VIEW_SELF_CH = "查看紅包";private static final String WECHAT_VIEW_OTHERS_CH = "領取紅包";private static final String WECHAT_NOTIFICATION_TIP = "[微信紅包]";1.2 根據階段選擇不同的入口在每次窗體狀態發生變化後,根據當前所在的階段選擇入口。        /* 如果戳開但還未領取 */        if (mNeedUnpack && (mUnpackNodeList != null)) {        Log.d(TAG, "事件----> start performAction 戳開但還未領取");            int size = mUnpackNodeList.size();            if (size > 0) {                AccessibilityNodeInfo cellNode = mUnpackNodeList.get(size - 1);                cellNode.performAction(AccessibilityNodeInfo.ACTION_CLICK);                mNeedUnpack = false;            }            Log.d(TAG, "事件----> end performAction 戳開但還未領取");        }屏幕內容檢測和自動化點擊的實現    /** 打開通知欄消息*/    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)    private void openNotify(AccessibilityEvent event) {        if(event.getParcelableData() == null || !(event.getParcelableData() instanceof Notification)) {            return;        }        //將微信的通知欄消息打開        Notification notification = (Notification) event.getParcelableData();        PendingIntent pendingIntent = notification.contentIntent;        Log.d(TAG, "事件----> 打開通知欄消息 " + event);        try {            pendingIntent.send();        } catch (PendingIntent.CanceledException e) {            e.printStackTrace();        }    }和其他插件一樣,這裏使用的是Android API提供的AccessibilityService。這個類位於android.accessibilityservice包內,開啓服務後就會自動做一些操作 像現在360的自動安裝apk,也是開啓了此服務。AccessibilityService 服務在後臺運行,等待系統在發生 AccessibilityEvent 事件時回調。這些事件指的是用戶界面上發生的狀態變化, 比如焦點變更、按鈕按下等等。服務可以請求“查詢當前窗口中內容”的能力。 開發輔助服務需要繼承該類並實現其抽象方法。2.1 配置AccessibilityService在這個例子中,我們需要監聽的事件是當紅包來或者滑動屏幕時引起的屏幕內容變化,和點開紅包時窗體狀態的變化,因此我們只需要在配置XML的accessibility-service標籤中加入一條android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged" 或在onAccessibilityEvent回調函數中對事件進行一次類型判斷final int eventType = event.getEventType(); if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED || eventType == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) { // ... } 除此之外,由於我們只監聽微信,還需要指定微信的包名android:packageNames="com.tencent.mm" 爲了獲取窗口內容,我們還需要指定android:canRetrieveWindowContent="true" 其他配置請看代碼。2.2 獲取紅包所在的節點首先,我們要獲取當前屏幕的根節點,下面兩種方式效果是相同的:      /* 聊天會話窗口,遍歷節點匹配“領取紅包”和"查看紅包" */        List nodes1 = this.findAccessibilityNodeInfosByTexts(        this.rootNodeInfo,         new String[]{                WECHAT_VIEW_OTHERS_CH, WECHAT_VIEW_SELF_CH });        if (!nodes1.isEmpty()) {            String nodeId = Integer.toHexString(System.identityHashCode(this.rootNodeInfo));            if (!nodeId.equals(lastFetchedHongbaoId)) {                mLuckyMoneyReceived = true;                mReceiveNodeList = nodes1;            }            return;        }2.3 紅包標識符    /**     * 將節點對象的id和紅包上的內容合併     * 用於表示一個唯一的紅包     *     * @param node 任意對象     * @return 紅包標識字符串     */    private String getHongbaoText(AccessibilityNodeInfo node) {        /* 獲取紅包上的文本 */        String content;        try {            AccessibilityNodeInfo i = node.getParent().getChild(0);            content = i.getText().toString();        } catch (NullPointerException npe) {            return null;        }        Log.d(TAG, "事件----> start getHongbaoText() " + content);        return content;    }

     



    內容加載中..
    1. 本站所有資源來源於用戶上傳和網絡,如有侵權請郵件聯繫站長!
    2. 分享目的僅供大家學習和交流,不能確保資源完整性和時效性,請在下載後24小時內刪除!
    3. 不得使用於非法商業用途,不得違反國家法律。否則後果自負!
    4. 本站提供的源碼、模板、插件等等其他資源,都不包含技術服務請大家諒解!
    5. 如有鏈接無法下載、失效或廣告,請聯繫管理員處理!
    6. 本站資源售價只是贊助,收取費用僅維持本站的日常運營所需!

    耘藝源碼網 » Android紅包精靈開源項目源碼
    • XX:Thursday, 01/01/1970