欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android微信自動搶紅包插件優(yōu)化和實現(xiàn)

 更新時間:2016年12月07日 10:44:26   作者:AndroidMsky  
這篇文章主要為大家詳細(xì)介紹了Android微信自動搶紅包插件優(yōu)化和實現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

又是興趣系列

網(wǎng)上有很多自動強(qiáng)紅包的例子和代碼,筆者也是做了一些優(yōu)化。

先說說自己的兩個個優(yōu)勢

1.可以在聊天界面自動強(qiáng)不依賴于通知欄推送
2.可以在屏幕熄滅的時候的時候點亮屏幕自動搶(目前只測過flyme)

先上圖:

代碼傳送門:
https://github.com/AndroidMsky/WXhongbao
歡迎點星星~

原理:

通過AccessibilityService監(jiān)聽到狀態(tài)欄通知,進(jìn)行模擬點擊,獲取屏幕中view節(jié)點為領(lǐng)取紅包的list并且點擊最后一個。
如果不通過狀態(tài)欄通知,通過視圖變化AccessibilityEvent的2048事件也是就

public static final int TYPE_WINDOW_CONTENT_CHANGED = 0x00000800;

每次接受到新消息都會有這個時間的回調(diào):

public void onAccessibilityEvent(AccessibilityEvent event) {
 int eventType = event.getEventType();
 if (auto)
  Log.e("AAAAAAAA", "有事件" + eventType);
 switch (eventType) {
  //當(dāng)通知欄發(fā)生改變時
  case 2048:
  pubclassName = event.getClassName().toString();

  Log.e("AAAAAAAA", "有2048事件" + pubclassName + auto);

  if (!auto && pubclassName.equals("android.widget.TextView") && ALL) {
   Log.e("AAAAAAAA", "有2048事件被識別" + auto + pubclassName);
   getLastPacket(1);
  }
  if (auto && WXMAIN) {
   getLastPacket();
   auto = false;
  }

  break;

所以在接受的時候,去處理一下去點擊領(lǐng)取紅包。然而這個方法會被頻發(fā)調(diào)用,我們就加一個”Android.widget.TextView”事件類的篩選,然后還是會被很頻繁調(diào)用,會比較遲性能耗電。
那就加個布爾ALL標(biāo)志位,讓用戶控制是否開啟聊天界面內(nèi)也搶紅包的模式。
為了不反復(fù)領(lǐng)取要記錄上次界面內(nèi)的紅包數(shù)量在紅包增加的時候才去領(lǐng)?。?/p>

private void getLastPacket(int c) {

 Log.e("AAAAAAAA", "新方法" + parents.size());
 AccessibilityNodeInfo rootNode = getRootInActiveWindow();
 recycle(rootNode);
 Log.e("AAAAAAAA", "last++" + lastbagnum + "當(dāng)前頁面紅包數(shù)" + parents.size());
 if (parents.size() > 0 && WXMAIN) {
  Log.e("AAAAAAAA", "頁面大于O且在微信界面");
  if (lastbagnum < parents.size())
  parents.get(parents.size() - 1).performAction(AccessibilityNodeInfo.ACTION_CLICK);
  lastbagnum = parents.size();
  parents.clear();
 }
 }

目前在通過插件領(lǐng)過幾個紅包后,一個聊天界面突然發(fā)第一個紅包(沒有通知欄)會有一定幾率領(lǐng)取不到,再繼續(xù)發(fā)就正常了,應(yīng)該是清空問題,該bug筆者也在更改邏輯中。

點亮屏幕方法(有密碼肯定是不行的):

private void wakeAndUnlock2(boolean b)
 {
 if(b)
 {
  //獲取電源管理器對象
  pm=(PowerManager) getSystemService(Context.POWER_SERVICE);

  //獲取PowerManager.WakeLock對象,后面的參數(shù)|表示同時傳入兩個值,最后的是調(diào)試用的Tag
  wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");

  //點亮屏幕
  wl.acquire();

  //得到鍵盤鎖管理器對象
  km= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
  kl = km.newKeyguardLock("unLock");

  //解鎖
  kl.disableKeyguard();
 }
 else
 {
  //鎖屏
  kl.reenableKeyguard();

  //釋放wakeLock,關(guān)燈
  wl.release();
 }

 }

接受到通知欄的紅包消息亮屏設(shè)置標(biāo)志位為自動領(lǐng)取,調(diào)取領(lǐng)取函數(shù):

if (content.contains("[微信紅包]")) {
    if (event.getParcelableData() != null &&
     event.getParcelableData() instanceof Notification) {
    Notification notification = (Notification) event.getParcelableData();
    PendingIntent pendingIntent = notification.contentIntent;
    try {
     auto = true;
     wakeAndUnlock2(true);
     pendingIntent.send();
     Log.e("demo", "進(jìn)入微信" + auto + event.getClassName().toString());
    } catch (Exception e) {
     e.printStackTrace();
    }
    }
   }

點擊界面控件方法:(不同微信版本控件id不一樣我的是6.3.25)如果不知道怎么獲取這個id可以看下面的參考文獻(xiàn)最后一個,右側(cè)的resource-id就是這個id

 click("com.tencent.mm:id/bag");

在Activity中設(shè)置聊天中領(lǐng)取開關(guān):

public void start(View v) {
 if (AirAccessibilityService.ALL) {
  AirAccessibilityService.ALL = false;
  ((Button) v).setText("對話內(nèi)監(jiān)控+關(guān)");
 } else {
  AirAccessibilityService.ALL = true;
  ((Button) v).setText("對話內(nèi)監(jiān)控+開");
 }
 ;

 }

AccessibilityService的確很吊,你用AccessibilityService或者root后的安卓手機(jī)能干太多事了,或好或壞,但畢竟技術(shù)是無罪的。

同時也推薦我的文章:

安卓手機(jī)變攝像頭,自動接起QQ電話

歡迎關(guān)注作者。歡迎評論討論。歡迎拍磚。 如果覺得這篇文章對你有幫助,歡迎打賞, 歡迎star,F(xiàn)ork我的github。 喜歡作者的也可以Follow。也算對作者的一種支持。 本文Github代碼鏈接
https://github.com/AndroidMsky/WXhongbao

也是看了很多資料謝謝各路英雄好漢們
參考文章:

Android喚醒、解鎖屏幕代碼實例

Android實現(xiàn)微信自動搶紅包的程序

Android AccessibilityService實現(xiàn)微信搶紅包插件

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • android圖像繪制(五)畫布保存為指定格式/大小的圖片

    android圖像繪制(五)畫布保存為指定格式/大小的圖片

    將圖片進(jìn)行編輯(放縮,涂鴉等),最后保存成指定格式、大小的圖片,接下來將介紹保存方法,感興趣的朋友可以了解下啊
    2013-01-01
  • Android中Fragment多層嵌套時onActivityResult無法正確回調(diào)問題的解決方法

    Android中Fragment多層嵌套時onActivityResult無法正確回調(diào)問題的解決方法

    這篇文章主要介紹了Android中Fragment多層嵌套時onActivityResult無法正確回調(diào)問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android對話框AlertDialog與DatePickerDialog及TimePickerDialog使用詳解

    Android對話框AlertDialog與DatePickerDialog及TimePickerDialog使用詳解

    這篇文章主要介紹了Android對話框中的提醒對話框AlertDialog、日期對話框DatePickerDialog、時間對話框TimePickerDialog使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • ContentProvider啟動流程示例解析

    ContentProvider啟動流程示例解析

    這篇文章主要為大家介紹了ContentProvider啟動流程示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 關(guān)于Android Studio封裝SDK的那些事兒

    關(guān)于Android Studio封裝SDK的那些事兒

    這篇文章主要給大家介紹了關(guān)于Android Studio封裝SDK的那些事兒,文中通過圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 快速解決進(jìn)入fragment時不能彈出軟件盤的問題

    快速解決進(jìn)入fragment時不能彈出軟件盤的問題

    下面小編就為大家?guī)硪黄焖俳鉀Q進(jìn)入fragment時不能彈出軟件盤的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android藍(lán)牙通信編程

    Android藍(lán)牙通信編程

    這篇文章主要為大家詳細(xì)介紹了Android藍(lán)牙通信編程內(nèi)容,非常詳細(xì)的藍(lán)牙通信教程,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android實現(xiàn)ViewPage輪播圖效果

    Android實現(xiàn)ViewPage輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)ViewPage輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Android使用Service實現(xiàn)簡單音樂播放實例

    Android使用Service實現(xiàn)簡單音樂播放實例

    這篇文章主要為大家詳細(xì)介紹了Android使用Service實現(xiàn)簡單音樂播放實例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android 浮動編輯框的具體實現(xiàn)代碼

    Android 浮動編輯框的具體實現(xiàn)代碼

    本篇文章主要介紹了Android 浮動編輯框的具體實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論