實現原理
通過利用AccessibilityService輔助服務,監測屏幕內容,如監聽狀態欄的信息,屏幕跳轉等,以此來實現自動拆紅包的功能。關于AccessibilityService輔助服務,可以自行百度了解更多。
代碼基礎:
1.首先聲明一個RedPacketService繼承自AccessibilityService,該服務類有兩個方法必須重寫,如下:
/** * Created by cxk on 2017/2/3. * * 搶紅包服務類 */public class RedPacketService extends AccessibilityService { /** * 必須重寫的方法:此方法用了接受系統發來的event。在你注冊的event發生是被調用。在整個生命周期會被調用多次。 */ @Override public void onAccessibilityEvent(AccessibilityEvent event) { } /** * 必須重寫的方法:系統要中斷此service返回的響應時會調用。在整個生命周期會被調用多次。 */ @Override public void onInterrupt() { Toast.makeText(this, "我快被終結了啊-----", Toast.LENGTH_SHORT).show(); } /** * 服務已連接 */ @Override protected void onServiceConnected() { Toast.makeText(this, "搶紅包服務開啟", Toast.LENGTH_SHORT).show(); super.onServiceConnected(); } /** * 服務已斷開 */ @Override public boolean onUnbind(Intent intent) { Toast.makeText(this, "搶紅包服務已被關閉", Toast.LENGTH_SHORT).show(); return super.onUnbind(intent); }}2.對我們的RedPacketService進行一些配置,這里配置方法可以選擇代碼動態配置(onServiceConnected里配置),也可以直接在res/xml下新建.xml文件,沒有xml文件夾就新建。這里我們將文件命名為redpacket_service_config.xml,代碼如下:
<?xml version="1.0" encoding="utf-8"?><accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes="typeAllMask" android:accessibilityFeedbackType="feedbackGeneric" android:accessibilityFlags="flagDefault" android:canRetrieveWindowContent="true" android:description="@string/desc" android:notificationTimeout="100" android:packageNames="com.tencent.mm" />
accessibilityEventTypes:
響應哪一種類型的事件,typeAllMask就是響應所有類型的事件了,另外還有單擊、長按、滑動等。
accessibilityFeedbackType:
用什么方式反饋給用戶,有語音播出和振動。可以配置一些TTS引擎,讓它實現發音。
packageNames:
指定響應哪個應用的事件。這里我們是寫搶紅包助手,就寫微信的包名:com.tencent.mm,這樣就可以監聽微信產生的事件了。
notificationTimeout:
響應時間
description:
輔助服務的描述信息。
3.service是四大組件之一,需要在AndroidManifest進行配置,注意這里稍微有些不同:
<!--搶紅包服務--> <service android:name=".RedPacketService" android:enabled="true" android:exported="true" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/redpacket_service_config"></meta-data> </service>
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" 權限申請
android:resource="@xml/redpacket_service_config" 引用剛才的配置文件
核心代碼:
我們的紅包助手,核心思路分為三步走:
監聽通知欄微信消息,如果彈出[微信紅包]字樣,模擬手指點擊狀態欄跳轉到微信聊天界面→在微信聊天界面查找紅包,如果找到則模擬手指點擊打開,彈出打開紅包界面→模擬手指點擊紅包“ 主站蜘蛛池模板: 尚志市| 镇宁| 乌兰浩特市| 梧州市| 天峨县| 金坛市| 庆安县| 浦县| 双鸭山市| 太湖县| 河池市| 土默特左旗| 兴业县| 荆州市| 望奎县| 达孜县| 会同县| 尚义县| 米林县| 伊春市| 浦县| 恩平市| 会泽县| 博湖县| 普陀区| 抚顺县| 门源| 海淀区| 凉城县| 盘山县| 高碑店市| 永平县| 岱山县| 平山县| 中卫市| 滕州市| 襄樊市| 沭阳县| 鄂伦春自治旗| 滕州市| 连南|