IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 头条抢红包脚本源码 -> 正文阅读

[移动开发]头条抢红包脚本源码


```javascript









































"ui";




var 软件 = [
    { 名称: "抖音火山版9.5.5", src: "https://pp.myapp.com/ma_icon/0/icon_42256978_1596972379/96", 下载链接: "https://file-history.liqucn.com/upload/2018/286/e/com.ss.android.ugc.live_9.5.5_liqucn.com.apk" },
    { 名称: "今日头条7.8.6", src: "http://w5.eydata.net/b6c59351ee917b7651s://images.liqucn.com/mini/120x120/img/h01/h74/img_localize_eae8bce835ca68920193ed7602b6fb9b_512x512_120x120.png", 下载链接: "http://w5.eydata.net/b6c59351ee917b7651s://file-history.liqucn.com/upload/2019/291/s/com.ss.android.article.news_7.8.6_liqucn.com.apk" }
];


/*全局变量*/var 下载线程, 下载平台名称, 下载平台图标, 下载平台链接, 下载平台路径, 当前页面 = "首页";
var 主程序线程, 悬浮窗线程, 屏幕遮盖悬浮线程, 运行状态 = false;
var 屏幕遮盖状态 = false;
var 已抢红包, 抢到红包, 已参与福袋;
var 卡密到期时间, 卡密剩余时间;
var 历史主播名称;

var 头条滑动切换直播次数 = 0;

var 脚本名称 = "开心助手 qq 21989834"

var 平台 = [];
for (x in 软件) {
    平台.push(软件[x].名称);
}



var 页面 = "设置";


var 版本名称 = "3.0.0";
var 当前版本号 = 829;

threads.start(function () {
    if (auto.service == null) {
        app.startActivity({
            action: "android.settings.ACCESSIBILITY_SETTINGS"
        });
        threads.start(function () {
            alert("无障碍服务", "此脚本由无障碍模式开发\n务必开启无障碍服务");
        });
        exit();
    }

    if (floaty.checkPermission() != true) {
        toastLog("请授权悬浮窗权限");
        app.startActivity({
            action: "android.settings.action.MANAGE_OVERLAY_PERMISSION"
        });
        threads.start(function () {
            alert("悬浮窗权限", "请授权悬浮窗权限");
        });
        exit();
    }
    if (判断网络类型() == "没有网络") {
        toastLog("请连接网络再使用脚本");
        threads.start(function () {
            alert("网络异常", "请连接网络再使用脚本");
        });
        exit();
    }
    检查更新();
});








function 检查更新() {
    var 更新地址 = http_get("https://shimo.im/docs/PdQgKQx9HQjrGkDV/");
    if (更新地址 != null) {
        var 返回值 = 更新地址.match(/line=\"\S+\">\S*<\/p>/g);
        if (返回值 != null) {
            for (var i = 0; i <= 返回值.length - 1; i++) {
                var 返回值处理 = 返回值[i].split("</p>");
                返回值处理 = 返回值处理[0].split(">")[1].trim();
                if (返回值处理 != "<br/") {
                    if (返回值处理.indexOf(脚本名称) > -1) {
                        var 版本号 = parseInt(返回值处理.split("----")[1]);
                        if (版本号 > 当前版本号) {
                            app.openUrl(返回值处理.split("----")[2].trim());
                            threads.start(function () {
                                alert("脚本更新", "检查到更新文件");
                            });
                            LocalStorage.put("oldNeedle", false);
                            exit();
                        } else {
                            toastLog("已是最新版本");
                        }
                        return;
                    }
                }
            }
            toastLog("无更新文件");
        } else {
            toastLog("检查更新失败");
        }
    } else {
        toastLog("检查更新失败");
    }
}



var 本地存储 = storages.create("聚鲤科技"), 内容;

/*本地存储空间 对象*/var LocalStorage = storages.create("聚鲤科技6");
/*开发者ID*/var DeveloperID = "13301";
/*API 密码 */var ApiPassword = "200361";
/*软件名称 */var SoftwareName = "kxkj";


/*检查登陆状态*/
var 登陆数据 = LocalStorage.get("oldNeedle");
if (登陆数据 == undefined || 登陆数据 == "" || 登陆数据 == false) {
    登陆ui();
} else {
    首页ui();
    setTimeout(() => {
        threads.start(function () {
            SendHeartbeat();
        });
    }, 2000);
}




function 登陆ui() {
    ui.layout(
        <frame id="bg" bg="#FFFAF0">
            <horizontal w="auto" h="auto" layout_gravity="center_horizontal" marginTop="100">
                <img w="50" h="50" circle="true" src="https://uploader.shimo.im/f/BicfgiL54F7Y25Id.png!thumbnail" />
                <text text="开心助手" textColor="#000000" textSize="24sp" textStyle="bold" padding="8" />
            </horizontal>
            <card w="auto" h="50" cardCornerRadius="25dp"
                cardElevation="2dp" layout_gravity="center_horizontal" marginTop="180">
                <frame bg="#CFCFCF" w="300" id="激活码窗口">
                    <input singleLine="true" bg="#CFCFCF" id="激活码" w="auto" h="auto" layout_gravity="center" hint="激活码/卡密" textSize="18sp" textColorHint="#778899" />
                    <img alpha="0" id="清空激活码" w="20" h="20" tint="#FFFAFA" src="@drawable/{{['ic_close_black_48dp']}}" layout_gravity="center_vertical|right" marginRight="20" />
                </frame>
            </card>
            <card w="70" h="70" cardCornerRadius="35dp"
                cardElevation="2dp" layout_gravity="center_horizontal" marginTop="400">
                <ScrollView bg="#4876FF" >
                    <img id="登陆" w="50" h="50" tint="#F5F5F5" layout_gravity="center_vertical|center_horizontal" src="@drawable/{{['ic_label_outline_black_48dp']}}" />
                </ScrollView>
            </card>
            <vertical h="auto" w="auto" layout_gravity="center_horizontal|bottom" marginBottom="20">
                <horizontal marginBottom="6">
                    <text id="获取卡密" textSize="13sp" textStyle="bold" textColor="#4F4F4F" text="获取卡密" />
                    <text textSize="12sp" textColor="#828282" text="|" margin="30 0" />
                    <text id="在线客服" textSize="13sp" textStyle="bold" textColor="#4F4F4F" text="联系客服" />
                </horizontal>
                <text textSize="12sp" textColor="#828282" text="登陆即代表阅读并同意服务协议" />
            </vertical>
        </frame>
    );

    内容 = 本地存储.get("CDK"); if (内容 != undefined) { ui.激活码.setText(内容); };

    ui.激活码窗口.on("click", () => {
        ui.清空激活码.setAlpha(1);
    })
    ui.激活码.on("click", () => {
        ui.清空激活码.setAlpha(1);
    })
    ui.清空激活码.on("click", () => {
        if (ui.清空激活码.getAlpha() == 1) {
            ui.激活码.setText("");
        }
    })
    ui.bg.on("touch", () => {
        ui.清空激活码.setAlpha(0);
    })

    ui.登陆.on("click", () => {
        toastLog("登录中请稍候。。。")
        var CDK = ui.激活码.getText() + "".trim();
        本地存储.put("CDK", CDK);
        var 返回登陆结果 = CDKLogin();
        if (返回登陆结果[0] == true) {
            首页ui();
            /*心跳验证*/
            setTimeout(() => {
                threads.start(function () {
                    SendHeartbeat();
                });
            }, 3000)
        } else {
            dialogs.alert("登陆失败", 返回登陆结果[1]);
        }
    })
    ui.获取卡密.on("click", function () {
        浏览器ui("获取卡密", "http://2cccc.cc/verifyer2019/pub/card_sell/id/7212.html", "登陆ui");
    })
    ui.在线客服.on("click", function () {
        客服ui("登陆ui");
    })
}


function 首页ui() {
    importClass(android.view.MenuItem);
    importClass(com.google.android.material.bottomnavigation.BottomNavigationView);
    importClass(com.google.android.material.bottomnavigation.LabelVisibilityMode);
    ui.layout(
        <drawer id="drawer">
            <relative bg="#C1CDCD">
                <appbar bg="#708090" w="*" h="auto">
                    <toolbar id="toolbar" textStyle="bold" />
                </appbar>
                <viewpager id='vp' layout_below='appbar' layout_above='bnv' marginTop="55dp">
                    {/** 平台选择 */}
                    <frame>
                        <vertical margin="10 0" >
                            <scroll>
                                <vertical >
                                    <img w="100" h="100" circle="true" src="https://uploader.shimo.im/f/BicfgiL54F7Y25Id.png!thumbnail" layout_gravity="center" margin="0 10 " />
                                    {/** 抖音10.2.0 */}
                                    <frame id="平台_0" w="*" h="77dp">
                                        <frame marginBottom="2dp" bg="#ffffff" padding="20 10" >
                                            <img w="56" h="56" src="{{软件[0].src}}" />
                                            <vertical h="auto" w="auto" layout_gravity="center">
                                                <text text="{{软件[0].名称}}" textColor="#000000" textSize="21sp" />
                                                {/* <text text="抢直播间红包" textColor="#999999" textSize="12sp" marginTop="5" /> */}
                                            </vertical>
                                            <text id="下载0" w="auto" h="auto" text="下载" textSize="12sp" textStyle="bold" bg="#00C5CD" textColor="#ffffff" padding="15 5" gravity="center" layout_gravity="right|center" />
                                        </frame>
                                    </frame>
                                    {/**火山8.55  */}
                                    <frame id="平台_1" w="*" h="77dp">
                                        <frame marginBottom="2dp" bg="#ffffff" padding="20 10" >
                                            <img w="56" h="56" src="{{软件[1].src}}" />
                                            <vertical h="auto" w="auto" layout_gravity="center">
                                                <text text="{{软件[1].名称}}" textColor="#000000" textSize="21sp" />
                                                {/* <text text="抖音火山养号" textColor="#999999" textSize="12sp" marginTop="5" /> */}
                                            </vertical>
                                            <text id="下载1" w="auto" h="auto" text="下载" textSize="12sp" textStyle="bold" bg="#00C5CD" textColor="#ffffff" padding="15 5" gravity="center" layout_gravity="right|center" />
                                        </frame>
                                    </frame>
                                </vertical>

                            </scroll>
                        </vertical>

                    </frame>
                    {/** 平台设置 */}
                    <frame  >
                        <scroll padding="10 10" h="650" >
                            <vertical  >

                                <card w="*" h="auto"
                                    cardElevation="2dp" gravity="center_vertical" marginBottom="5dp" >
                                    <vertical >
                                        <text text="全局设置" textColor="#EE1289" textSize="18sp" />
                                        <vertical padding="8 0"  >
                                            <horizontal>
                                                <checkbox id="上限人数_box" text="上限人数:" textColor="#000000" textSize="15sp" />
                                                <input id="上限人数" text="200" textSize="15sp" textColorHint="#4F4F4F" inputType="number" />
                                                <text text="人" textColor="#000000" textSize="15sp" />
                                                <text text="直播间观看人数限制(选填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                            </horizontal>

                                        </vertical>
                                    </vertical>
                                </card>

                                <card w="*" h="auto"
                                    cardElevation="2dp" gravity="center_vertical" marginBottom="5dp">
                                    <vertical >
                                        <checkbox id="抢红包" text="《红包》" textColor="#EE1289" textSize="18sp" />
                                        <vertical padding="8 0"  >
                                            <horizontal>
                                                <checkbox id="提前抢" text="提前抢" textColor="#000000" textSize="15sp" />
                                                <checkbox id="准时抢" text="准时抢" textColor="#000000" textSize="15sp" />
                                                <text text="抢红包模式选择(必选)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                            </horizontal>
                                            <horizontal>
                                                <checkbox id="红包上限sj_box" text="红包上限时间:" textColor="#000000" textSize="15sp" />
                                                <input id="红包上限sj" text="120" textSize="15sp" textColorHint="#4F4F4F" inputType="number" />
                                                <text text="秒" textColor="#000000" textSize="15sp" />
                                                <text text="红包等待时间限制(选填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                            </horizontal>
                                            <vertical padding="7 0"  >
                                                <horizontal>
                                                    <text text="提前" textColor="#000000" textSize="15sp" />
                                                    <input id="提前点开红包sj" text="10" textSize="15sp" textColorHint="#4F4F4F" inputType="number" />
                                                    <text text="秒点开红包" textColor="#000000" textSize="15sp" />
                                                    <text text="整数秒单位(必填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                                </horizontal>
                                                <horizontal>
                                                    <text text="提前" textColor="#000000" textSize="15sp" />
                                                    <input id="提前抢红包sj" text="1500" textSize="15sp" textColorHint="#4F4F4F" inputType="number" />
                                                    <text text="毫秒抢红包" textColor="#000000" textSize="15sp" />
                                                    <text text="整数毫秒单位(1秒=1000毫秒 必填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                                </horizontal>
                                                <horizontal>
                                                    <text text="找寻红包时间:" textColor="#000000" textSize="15sp" />
                                                    <input id="找寻红包sj" text="10" textSize="15sp" textColorHint="#4F4F4F" inputType="number" />
                                                    <text text="秒" textColor="#000000" textSize="15sp" />
                                                    <text text="直播寻找红包时间(必填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                                </horizontal>
                                            </vertical>
                                        </vertical>
                                    </vertical>
                                </card>

                                <scroll id="头条福袋" h="0">
                                    <vertical>
                                        <card w="*" h="auto"
                                            cardElevation="2dp" gravity="center_vertical"  >
                                            <vertical >
                                                <checkbox id="参与福袋" text="《福袋》" textColor="#EE1289" textSize="18sp" />
                                                <vertical padding="8 0"  >
                                                    <horizontal>
                                                        <checkbox id="快速找寻" text="快速找寻" textColor="#000000" textSize="15sp" />
                                                        <checkbox id="普通找寻" text="普通找寻" textColor="#000000" textSize="15sp" />
                                                    </horizontal>
                                                    <text text="福袋只参与免费的,收费则不参与(必选)" textColor="#4F4F4F" textSize="10sp" marginLeft="7" />
                                                    <horizontal marginLeft="7">
                                                        <text text="找福袋时间:" textColor="#000000" textSize="15sp" />
                                                        <input id="找寻福袋sj" text="10" textSize="15sp" textColorHint="#4F4F4F" inputType="number" />
                                                        <text text="秒" textColor="#000000" textSize="15sp" />
                                                        <text text="直播寻找福袋时间(必填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                                    </horizontal>
                                                    <horizontal>
                                                        <checkbox id="福袋上限sj_box" text="福袋上限时间:" textColor="#000000" textSize="15sp" />
                                                        <input id="福袋上限sj" text="300" textSize="15sp" textColorHint="#4F4F4F" inputType="number" />
                                                        <text text="秒" textColor="#000000" textSize="15sp" />
                                                        <text text="福袋等待时间限制(选填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                                    </horizontal>

                                                    <horizontal>
                                                        <checkbox id="等待开奖再离开_box" text="等待开奖再离开" textColor="#000000" textSize="15sp" />
                                                        <text text="等待福袋开奖后再切换直播间(选填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                                    </horizontal>

                                                    <horizontal>
                                                        <checkbox id="普通找寻限制次数_box" text="普通找寻:" textColor="#000000" textSize="15sp" />
                                                        <input id="普通找寻限制次数" text="10" textSize="15sp" textColorHint="#4F4F4F" inputType="number" />
                                                        <text text="次刷新直播列表" textColor="#000000" textSize="15sp" />
                                                        <text text="(选填)" textColor="#4F4F4F" textSize="10sp" marginLeft="10" />
                                                    </horizontal>
                                                </vertical>
                                            </vertical>
                                        </card>
                                    </vertical>
                                </scroll>

                            </vertical>
                        </scroll>
                        <card w="50" h="50" cardCornerRadius="25dp"
                            cardElevation="2dp" layout_gravity="left|bottom" margin="15 0 0 60" >
                            <ScrollView bg="#708090" >
                                <img id="运行" w="40" h="40" tint="#76EEC6" layout_gravity="center" src="ic_play_arrow_black_48dp" />
                            </ScrollView>
                        </card>
                    </frame>
                    <scroll >
                        <vertical padding="10 10" >

                            <vertical padding="10 10" w="*" h="auto" bg="#ffffff" marginBottom="10dp">

                                <vertical id="激活码信息" w="auto" h="0" layout_gravity="left|center_vertical ">
                                    <text id="激活码_text" text="激活码:" textColor="#000000" textSize="15sp" />
                                    <text id="到期时间_text" text="到期时间:" textColor="#000000" textSize="15sp" marginTop="8" />
                                    <text id="剩余时间_text" text="剩余时间:" textColor="#000000" textSize="15sp" marginTop="8" />
                                </vertical>
                                <vertical id='登录' w="auto" h="auto" layout_gravity="center">
                                    <img w="50" h="50" circle="true" src="https://uploader.shimo.im/f/BicfgiL54F7Y25Id.png!thumbnail" layout_gravity="center" />
                                    <text text="登陆" w="auto" h="auto" textColor="#4F4F4F" textSize="12sp" marginTop="5" layout_gravity="center" />
                                </vertical>
                            </vertical>

                            <card w="*" h="auto" cardCornerRadius="15dp"
                                cardElevation="2dp" marginBottom="5dp">
                                <ScrollView bg="#ffffff">
                                    <frame padding="10 10" id="获取卡密">
                                        <text text="获取卡密" textColor="#000000" textSize="15sp" layout_gravity="center_vertical|center_horizontal" />
                                        <img w="30" h="30" tint="#DCDCDC" layout_gravity="center_vertical|center_horizontal|right" src="@drawable/{{['ic_keyboard_arrow_right_black_48dp']}}" />
                                    </frame>
                                </ScrollView>
                            </card>
                            <card w="*" h="auto" cardCornerRadius="15dp"
                                cardElevation="2dp" marginBottom="5dp">
                                <ScrollView bg="#ffffff" >
                                    <frame padding="10 10" id="在线客服">
                                        <text text="在线客服" textColor="#000000" textSize="15sp" layout_gravity="center_vertical|center_horizontal" />
                                        <img w="30" h="30" tint="#DCDCDC" layout_gravity="center_vertical|center_horizontal|right" src="@drawable/{{['ic_keyboard_arrow_right_black_48dp']}}" />
                                    </frame>
                                </ScrollView>
                            </card>
                            <card w="*" h="auto" cardCornerRadius="15dp"
                                cardElevation="2dp" marginBottom="5dp">
                                <ScrollView bg="#ffffff">
                                    <frame padding="10 10" id="退出登陆">
                                        <text text="退出登陆" textColor="#000000" textSize="15sp" layout_gravity="center_vertical|center_horizontal" />
                                        <img w="30" h="30" tint="#DCDCDC" layout_gravity="center_vertical|center_horizontal|right" src="@drawable/{{['ic_keyboard_arrow_right_black_48dp']}}" />
                                    </frame>
                                </ScrollView>
                            </card>

                        </vertical>
                    </scroll>
                </viewpager>

                <com.google.android.material.bottomnavigation.BottomNavigationView
                    id='bnv'
                    h='56'
                    layout_alignParentBottom='true'
                    layout_centerHorizontal='true'
                    bg='#FAFAFA' />

            </relative>
            <frame layout_gravity="left" bg="#C1CDCD" w="220" h="*">
                <ScrollView bg="#C1CDCD" w="*" h="150">
                    <img w="100" h="100" circle="true" src="https://uploader.shimo.im/f/BicfgiL54F7Y25Id.png!thumbnail" layout_gravity="center" />
                </ScrollView>

                <list id="menu" marginTop="150">
                    <horizontal bg="#FFFAFA" w="*" h="auto" marginTop="5" padding="8 10">
                        <img w="15" h="15" src="{{this.icon}}" tint="#696969" marginTop="2" />
                        <text textSize="13sp" text="{{this.title}}" textColor="#696969" marginLeft="8" />
                    </horizontal>
                </list>
                <text w="auto" h="auto" textSize="13sp" text="当前版本号:{{版本名称}}" textColor="#696969" layout_gravity="bottom|center_vertical" marginBottom="45" />
                <frame layout_gravity="bottom" bg="#FFFAFA" w="*" h="auto" padding="20 5">
                    <horizontal id="设置">
                        <img w="30" h="30" src="ic_settings_black_48dp" tint="#696969" />
                        <text textColor="#696969" textSize="19sp" text="设置" marginLeft="8" />
                    </horizontal>
                    <horizontal id="退出" layout_gravity="right" w="auto" h="auto">
                        <img w="30" h="30" src="ic_power_settings_new_black_48dp" tint="#696969" />
                        <text textColor="#696969" textSize="19sp" text="退出" marginLeft="8" />
                    </horizontal>
                </frame>

            </frame>
        </drawer >
    );


    var 登陆数据 = LocalStorage.get("oldNeedle");
    if (登陆数据 == undefined || 登陆数据 == "" || 登陆数据 == false) {
        登陆ui();
    } else {
        ui.登录.attr("h", "0");
        ui.激活码信息.attr("h", "90");
        内容 = 本地存储.get("CDK"); if (内容 != undefined) { ui.激活码_text.setText("激活码:" + 内容) };
        ui.到期时间_text.setText("到期时间: " + 卡密到期时间);
        ui.剩余时间_text.setText("剩余时间: " + 卡密剩余时间);
    }


    /*全局设置*/

    内容 = 本地存储.get("抢红包"); if (内容 == true) { ui.抢红包.checked = (true); }
    内容 = 本地存储.get("参与福袋"); if (内容 == true) { ui.参与福袋.checked = (true); }
    内容 = 本地存储.get("上限人数_box"); if (内容 == true) { ui.上限人数_box.checked = (true); }
    内容 = 本地存储.get("上限人数"); if (内容 != undefined) { ui.上限人数.setText(内容) };
    /*抢红包*/
    内容 = 本地存储.get("提前抢"); if (内容 == true) { ui.提前抢.checked = (true); }
    内容 = 本地存储.get("准时抢"); if (内容 == true) { ui.准时抢.checked = (true); }
    内容 = 本地存储.get("找寻红包sj"); if (内容 != undefined) { ui.找寻红包sj.setText(内容) };
    内容 = 本地存储.get("红包上限sj_box"); if (内容 == true) { ui.红包上限sj_box.checked = (true); }
    内容 = 本地存储.get("红包上限sj"); if (内容 != undefined) { ui.红包上限sj.setText(内容) };
    内容 = 本地存储.get("提前抢红包sj"); if (内容 != undefined) { ui.提前抢红包sj.setText(内容) };
    内容 = 本地存储.get("提前点开红包sj"); if (内容 != undefined) { ui.提前点开红包sj.setText(内容) };

    /*参与福袋*/
    内容 = 本地存储.get("快速找寻"); if (内容 == true) { ui.快速找寻.checked = (true); }
    内容 = 本地存储.get("普通找寻"); if (内容 == true) { ui.普通找寻.checked = (true); }
    内容 = 本地存储.get("找寻福袋sj"); if (内容 != undefined) { ui.找寻福袋sj.setText(内容) };
    内容 = 本地存储.get("福袋上限sj_box"); if (内容 == true) { ui.福袋上限sj_box.checked = (true); }
    内容 = 本地存储.get("福袋上限sj"); if (内容 != undefined) { ui.福袋上限sj.setText(内容) };
    内容 = 本地存储.get("等待开奖再离开_box"); if (内容 == true) { ui.等待开奖再离开_box.checked = (true); }
    内容 = 本地存储.get("普通找寻限制次数_box"); if (内容 == true) { ui.普通找寻限制次数_box.checked = (true); }
    内容 = 本地存储.get("普通找寻限制次数"); if (内容 != undefined) { ui.普通找寻限制次数.setText(内容) };


    /*底部菜单栏*/
    let bnv = ui.bnv;
    bnv.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);//1 不开动画 0 动画
    /** 添加item */
    let menu = bnv.getMenu();
    menu.add(0, 0, 0, "首页").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    menu.getItem(0).setIcon(getResID('ic_home_black_48dp', 'drawable'));
    menu.add(0, 1, 1, "设置").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    menu.getItem(1).setIcon(getResID('ic_settings_black_48dp', 'drawable'));
    menu.add(0, 2, 2, "我的").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    menu.getItem(2).setIcon(getResID('ic_person_black_48dp', 'drawable'));
    /** ViewPager 与  BottomNavigationView 联动*/
    /** 监听BottomNavigationView切换选中事件  */
    bnv.setOnNavigationItemSelectedListener({
        onNavigationItemSelected: function (item) {
            //跳转到对应的页面
            ui.vp.setCurrentItem(item.getItemId());
            return true;
        }
    });
    // 为ViewPager添加页面改变事件
    ui.vp.addOnPageChangeListener({
        onPageSelected: function (position) {
            // 将当前的页面对应的底部标签设为选中状态
            menu.getItem(position).setChecked(true);
        }
    });
    ui.vp.addOnPageChangeListener({
        onPageSelected: function (position) {
            // 将当前的页面对应的底部标签设为选中状态
            menu.getItem(position).setChecked(true);
            当前页面 = menu.getItem(position);
            if (当前页面 == "首页") {
                ui.toolbar.setTitle(脚本名称);
            } else if (当前页面 == "设置") {
                ui.toolbar.setTitle(页面);
                if (页面 == "未选择平台") {
                    alert("友情提示", "您尚未选择平台\n1.进入首页选择平台后再运行");
                }
            } else {
                ui.toolbar.setTitle(menu.getItem(position).getTitle());
            }
        }
    });

    // 初始化 设置ToolBar标题
    ui.toolbar.setTitle(脚本名称);
    /**
    * 获取资源ID
    * @param {*} name 
    * @param {*} type 
    */
    function getResID(name, type) {
        return context.getResources().getIdentifier(name, type, context.getPackageName());
    }
    /*标题抽屉栏*/
    // 让工具栏左上角可以打开侧拉菜单
    ui.toolbar.setupWithDrawer(ui.drawer);
    ui.menu.setDataSource([
        {
            title: "无障碍服务",
            icon: "@drawable/ic_android_black_48dp"
        },
        {
            title: "悬浮窗权限",
            icon: "@drawable/ic_extension_black_48dp"

        },
        {
            title: "查看日志",
            icon: "@drawable/ic_assignment_black_48dp"

        },
        {
            title: "提前/准时抢",
            icon: "@drawable/ic_developer_mode_black_48dp"

        },
        {
            title: "指针位置",
            icon: "@drawable/ic_mouse_black_48dp"

        },
        {
            title: "手机信息",
            icon: "@drawable/ic_tablet_android_black_48dp"
        },

        {
            title: "意见反馈",
            icon: "@drawable/ic_rate_review_black_48dp"

        },
        {
            title: "检查更新",
            icon: "@drawable/ic_cached_black_48dp"

        }
    ]);
    ui.menu.on("item_click", item => {
        switch (item.title) {
            case "无障碍服务": {
                alert("无障碍服务", "此脚本由无障碍模式开发\n务必开启无障碍服务").then(() => {
                    app.startActivity({
                        action: "android.settings.ACCESSIBILITY_SETTINGS"
                    });
                });
                break;
            }
            case "悬浮窗权限": {
                alert("悬浮窗权限", "脚本需要悬浮窗权限\n务必开启悬浮窗权限\n1.进入脚本权限设置界面\n2.找到《显示悬浮窗》《后台弹出界面》并给予权限").then(() => {
                    app.startActivity({
                        action: "android.settings.action.MANAGE_OVERLAY_PERMISSION"
                    });
                });
                break;
            };
            case "查看日志": {
                log("查看日志");
                app.startActivity("console");
                break;
            };

            case "提前/准时抢": {
                log("提前/准时抢")
                threads.start(function () {
                    奔放模式();
                });
                break;
            };
            case "手机信息": {
                log("手机信息")
                文本ui("手机信息", "手机信息", "首页ui")
                break;
            };
            case "指针位置": {
                log("指针位置")
                threads.start(function () {
                    指针位置();
                });
                break;
            };
            case "意见反馈": {
                log("意见反馈");
                浏览器ui("意见反馈", "https://shimo.im/forms/GJwxWJGTdKKcTYp8/fill", "首页ui")
                break;
            };
            case "检查更新": {
                log("检查更新");
                检查更新();
                break;
            }
        }
    })
    ui.设置.on("click", () => {
        app.startActivity("settings");
    })
    ui.退出.on("click", () => {
        exit();
    })

    /*第一页*/


    ui.平台_0.on("click", () => {
        页面 = 平台[0] + "设置";
        toastLog("设置" + 平台[0]);
        本地存储.put("设置页面储存", "0");
        ui.头条福袋.attr("h", "0dp");
        /*进入指定的页面*/ ui.vp.setCurrentItem(1);
        /*切换指定的导航栏*/menu.getItem(1).setChecked(true);
    })
    ui.平台_1.on("click", () => {
        页面 = 平台[1] + "设置";
        toastLog("设置" + 平台[1]);
        本地存储.put("设置页面储存", "1");
        ui.头条福袋.attr("h", "500dp");
        /*进入指定的页面*/ ui.vp.setCurrentItem(1);
        /*切换指定的导航栏*/menu.getItem(1).setChecked(true);
    })



    内容 = 本地存储.get("设置页面储存");
    if (内容 != undefined) {
        内容 = parseInt(内容);
        if (内容 == 1) {
            ui.头条福袋.attr("h", "500dp");
        }
        页面 = 平台[内容] + "设置"
    } else {
        页面 = "未选择平台";
    };




    ui.下载0.on("click", () => {
        下载提示(0)
    })
    ui.下载1.on("click", () => {
        下载提示(1)
    })

    /*第二页*/

    ui.准时抢.on("click", () => {
        if (ui.准时抢.checked == true) {
            alert("友情提示", "准时抢模式请点击左上角<抽屉栏>,提前/准时抢进行切换再运行");
        }
        ui.提前抢.checked = (false);
    })

    ui.提前抢.on("click", () => {
        if (ui.提前抢.checked == true) {
            alert("友情提示", "提前抢模式需点击左上角<抽屉栏>,提前/准时抢进行切换再运行");
        }
        ui.准时抢.checked = (false);
    })
    ui.快速找寻.on("click", () => {
        ui.普通找寻.checked = (false);
    })
    ui.普通找寻.on("click", () => {
        ui.快速找寻.checked = (false);
    })



    ui.运行.on("click", () => {
        if (运行状态 == false) {
            toastLog("开始运行");
            if (auto.service == null) {
                alert("无障碍服务", "此脚本由无障碍模式开发\n务必开启无障碍服务").then(() => {
                    app.startActivity({
                        action: "android.settings.ACCESSIBILITY_SETTINGS"
                    });
                });
                return;
            }


            /*全局设置  */

            /*储存运行副功能勾选状态  */

            if (ui.抢红包.checked == true) {
                if (ui.提前抢.checked == false && ui.准时抢.checked == false) {
                    alert("友情提示", "尚未选择抢红包模式").then(() => {
                    });
                    return;
                }
                if (ui.红包上限sj_box.checked == true) {
                    if (ui.红包上限sj.getText() == null || ui.红包上限sj.getText() == "" || ui.红包上限sj.getText() == undefined) {
                        alert("友情提示", "您选择了,限制红包上限时间,但是未填写参数").then(() => {
                        });
                        return;
                    }
                }
                if (ui.提前点开红包sj.getText() == null || ui.提前点开红包sj.getText() == "" || ui.提前点开红包sj.getText() == undefined) {
                    alert("友情提示", "您未填写提前点开红包参数").then(() => {
                    });
                    return;
                }
                if (ui.提前抢红包sj.getText() == null || ui.提前抢红包sj.getText() == "" || ui.提前抢红包sj.getText() == undefined) {
                    alert("友情提示", "您未填写提前抢红包参数").then(() => {
                    });
                    return;
                }
                if (ui.找寻红包sj.getText() == null || ui.找寻红包sj.getText() == "" || ui.找寻红包sj.getText() == undefined) {
                    alert("友情提示", "您未填写找寻红包时间").then(() => {
                    });
                    return;
                }
            }
            if (ui.上限人数_box.checked == true) {
                if (ui.上限人数.getText() == null || ui.上限人数.getText() == "" || ui.上限人数.getText() == undefined) {
                    alert("友情提示", "您选择了,上限人数限制,但未填写参数").then(() => {
                    });
                    return;
                }
            }

            if (ui.参与福袋.checked == true) {
                if (ui.快速找寻.checked == false && ui.普通找寻.checked == false) {
                    alert("友情提示", "尚未选择找寻福袋模式").then(() => {
                    });
                    return;
                }
                if (ui.找寻福袋sj.getText() == null || ui.找寻福袋sj.getText() == "" || ui.找寻福袋sj.getText() == undefined) {
                    alert("友情提示", "您未填写找福袋时间").then(() => {
                    });
                    return;
                }

                if (ui.普通找寻限制次数_box.checked == true) {
                    if (ui.普通找寻限制次数.getText() == "" || ui.普通找寻限制次数.getText() == null || ui.普通找寻限制次数.getText() == undefined) {
                        alert("友情提示", "您选择了普通找寻限制刷新次数,但是未填写参数").then(() => {
                        });
                        return;
                    }
                }
            }
            本地存储.put("上限人数_box", ui.上限人数_box.checked);
            本地存储.put("上限人数", ui.上限人数.getText().toString());

            /*抢红包*/

            本地存储.put("抢红包", ui.抢红包.checked);
            本地存储.put("提前抢", ui.提前抢.checked);
            本地存储.put("准时抢", ui.准时抢.checked);
            本地存储.put("找寻红包sj", ui.找寻红包sj.getText().toString());
            本地存储.put("红包上限sj_box", ui.红包上限sj_box.checked);
            本地存储.put("红包上限sj", ui.红包上限sj.getText().toString());
            本地存储.put("提前点开红包sj", ui.提前点开红包sj.getText().toString());
            本地存储.put("提前抢红包sj", ui.提前抢红包sj.getText().toString());

            /*参与福袋*/
            本地存储.put("参与福袋", ui.参与福袋.checked);
            本地存储.put("快速找寻", ui.快速找寻.checked);
            本地存储.put("普通找寻", ui.普通找寻.checked);
            本地存储.put("找寻福袋sj", ui.找寻福袋sj.getText().toString());
            本地存储.put("福袋上限sj_box", ui.福袋上限sj_box.checked);
            本地存储.put("福袋上限sj", ui.福袋上限sj.getText().toString());
            本地存储.put("等待开奖再离开_box", ui.等待开奖再离开_box.checked);
            本地存储.put("普通找寻限制次数_box", ui.普通找寻限制次数_box.checked);
            本地存储.put("普通找寻限制次数", ui.普通找寻限制次数.getText().toString());

            运行状态 = true;
            home();
            悬浮窗线程 = threads.start(悬浮窗);
            主程序线程 = threads.start(主程序);
            ui.运行.attr("tint", "red");
            ui.运行.attr("src", "ic_power_settings_new_black_48dp");

        } else {
            toastLog("结束运行");
            运行状态 = false;
            主程序线程.interrupt();
            悬浮窗线程.interrupt();
            ui.运行.attr("tint", "#76EEC6");
            ui.运行.attr("src", "ic_play_arrow_black_48dp");
        }
    })

    /*第三页*/
    ui.登录.on("click", () => {
        console.log("登陆点击了");
        登陆ui();
    })
    ui.获取卡密.on("click", function () {
        浏览器ui("获取卡密", "http://2cccc.cc/verifyer2019/pub/card_sell/code/RUXHBHH5XAUKLXKW.html", "首页ui");
    })

    ui.在线客服.on("click", function () {
        客服ui("首页ui");
    })

    ui.退出登陆.on("click", () => {
        if (ui.激活码_text.getText() == "激活码:") {
            toastLog("操作太快啦!")
            return;
        } else {
            log("退出登陆");
            var 退出登陆 = LogoutNeedle();
            if (退出登陆[0] != false) {
                LocalStorage.put("oldNeedle", false);
                dialogs.alert("退出提示", 退出登陆[1]);
                exit();
            } else {
                dialogs.alert("退出提示", 退出登陆[1]);
            }
        }
    });
}




function 延迟(a) {
    if (ui.操作延迟_box.checked == true) {
        var 延迟;
        var 延迟小 = parseInt(ui.操作延迟小.getText()) * 1000;
        var 延迟大 = parseInt(ui.操作延迟大.getText()) * 1000;
        延迟 = random(延迟小, 延迟大) * a;
        console.verbose('操作sj:' + 延迟);
        sleep(延迟);
    }
}




function 主程序() {
    var 包名;
    console.log(页面);
    sleep(3000);
    var 当前时间 = new Date();//创建时间
    var 当前日期 = 当前时间.getDate();
    内容 = 本地存储.get("时间");
    if (内容 == undefined || 内容 == "") {
        本地存储.put("时间", 当前日期);
        本地存储.put("已抢红包", 0);
        本地存储.put("抢到红包", 0);
        本地存储.put("已参与福袋", 0);
    } else {
        if (parseInt(内容) != 当前日期) {
            本地存储.put("时间", 当前日期);
            本地存储.put("已抢红包", 0);
            本地存储.put("抢到红包", 0);
            本地存储.put("已参与福袋", 0);
        }
    }
    内容 = 本地存储.get("已抢红包");
    if (内容 == undefined || 内容 == "") {
        已抢红包 = 0
        本地存储.put("已抢红包", 0);
    } else {
        已抢红包 = 内容;
    }

    内容 = 本地存储.get("抢到红包");
    if (内容 == undefined || 内容 == "") {
        抢到红包 = 0
        本地存储.put("抢到红包", 0);
    } else {
        抢到红包 = 内容;
    }
    内容 = 本地存储.get("已参与福袋");
    if (内容 == undefined || 内容 == "") {
        已参与福袋 = 0
        本地存储.put("已参与福袋", 0);
    } else {
        已参与福袋 = 内容;
    }

    悬浮窗文本设置("抢到红包", "抢到:" + 抢到红包, "灰色");
    悬浮窗文本设置("已抢红包", "已抢:" + 已抢红包, "灰色");
    悬浮窗文本设置("已参与福袋", "已参与:" + 已参与福袋, "灰色");

    if (页面 == "抖音火山版9.5.5设置") {
        悬浮窗文本设置("当前平台", "平台:火山短视频", "灰色");
        包名 = getPackageName("抖音火山版");
        if (包名 != null) {
            if (获取指定应用版本号(包名) == "9.5.5") {
                threads.start(function () {
                    火山弹窗监控();
                });
                火山红包();
            } else {
                threads.start(function () {
                    alert("友情提示", "<抖音火山版>版本错误,请下载指定版本<抖音火山版>");
                });
                exit();
            }
        } else {
            threads.start(function () {
                alert("友情提示", "尚未安装指定版本<抖音火山版>");
            });
            exit();
        }


    } else if (页面 == "今日头条7.8.6设置") {
        悬浮窗文本设置("当前平台", "平台:今日头条", "灰色");
        包名 = getPackageName("今日头条");
        if (包名 != null) {
            if (获取指定应用版本号(包名) == "7.8.6") {
                threads.start(function () {
                    头条弹窗监控();
                });
                头条红包福袋();
            } else {
                threads.start(function () {
                    alert("友情提示", "<今日头条>版本错误,请下载指定版本<今日头条>");
                });
                exit();
            }
        } else {
            threads.start(function () {
                alert("友情提示", "尚未安装指定版本<今日头条>");
            });
            exit();
        }
    }
}



function http_get(网址) {
    try {
        var 访问网址 = http.get(网址)
        var 返回值 = 访问网址.body.string();
        return 返回值;
    } catch (e) { }
}
function 获取指定应用版本号(packageName) {
    importPackage(android.content);
    var pckMan = context.getPackageManager();
    var packageInfo = pckMan.getPackageInfo(packageName, 0);
    return packageInfo.versionName;
}

function 头条弹窗监控() {
    while (true) {
        var 赠送玫瑰 = id("com.ss.android.liveplugin:id/tv_send_gift").text("立即赠送").visibleToUser(true).findOnce();
        if (赠送玫瑰 != null) {
            toastLog('主播讨礼物啦,快跑');
            关闭直播间提示();
        }
        var 关注提示 = id("com.ss.android.liveplugin:id/follow").textContains("立即关注").visibleToUser(true).findOnce();
        if (关注提示 != null) {
            toastLog('主播求关注啦')
            关闭直播间提示();
        }
        var 更新提示 = id("com.ss.android.article.news:id/ekf").visibleToUser(true).findOnce();
        if (更新提示 != null) {
            toastLog('关闭更新提示');
            var 关闭更新 = id("com.ss.android.article.news:id/ekd").findOne(2000);
            if (关闭更新 != null) {
                关闭更新.click();
            }
        }
        sleep(500)
    }
}



function 返回头条首页(导航) {
    悬浮窗文本设置("运行情况", '返回头条' + 导航, "红色");
    while (true) {
        context.startActivity(app.intent({
            action: "VIEW",
            className: "com.ss.android.article.news.activity.MainActivity",
            packageName: "com.ss.android.article.news"
        }).setFlags(335544320));
        var 首页导航栏 = id("com.ss.android.article.news:id/bgr").text(导航).visibleToUser(true).findOne(8000);
        if (首页导航栏 != null) {
            if (首页导航栏.selected() != true) {
                首页导航栏.parent().click();
            }
            return;
        }
    }
}


function 进入头条直播间() {
    头条滑动切换直播次数 = 0;
    悬浮窗文本设置("运行情况", '进入头条直播间', "灰色");
    while (true) {
        var 直播界面 = id("com.ss.android.liveplugin:id/entrance_text").text("更多直播").visibleToUser(true).findOne(3000);
        if (直播界面 != null) {
            悬浮窗文本设置("运行情况", '进入头条直播间_成功进入直播间', "灰色");
            return true;
        } else {
            悬浮窗文本设置("运行情况", '进入头条直播间_未在直播间', "灰色");
            var 西瓜视频界面 = id("com.ss.android.article.news:id/bgr").text("西瓜视频").visibleToUser(true).findOne(3000);
            if (西瓜视频界面) {
                if (西瓜视频界面.selected() != true) {
                    悬浮窗文本设置("运行情况", '进入头条直播间_进入西瓜视频', "灰色");
                    西瓜视频界面.parent().click();
                } else {
                    悬浮窗文本设置("运行情况", '进入头条直播间_已在西瓜视频界面', "灰色");
                }
                var 西瓜视频直播大厅 = packageName("com.ss.android.article.news").desc("直播").visibleToUser(true).findOne(2000);
                if (西瓜视频直播大厅 != null) {
                    悬浮窗文本设置("运行情况", '进入头条直播间_进入直播大厅', "灰色");
                    if (西瓜视频直播大厅.selected()==true) {
                        西瓜视频直播大厅.click();
                    }else{
                        西瓜视频直播大厅.click();
                        sleep(2000);
                        西瓜视频直播大厅.click();
                    }
                    var 进入直播 = id("com.ss.android.article.news:id/bjp").visibleToUser(true).findOne(6000);
                    if (进入直播 != null) {
                        悬浮窗文本设置("运行情况", '进入头条直播间_进入直播间', "灰色");
                        进入直播.click();
                        sleep(7000);
                    }
                }
            } else {
                悬浮窗文本设置("运行情况", '进入头条直播间_进入西瓜视频界面失败', "灰色");
                返回头条首页("西瓜视频");
            }
        }
    }
}



function 头条滑动切换直播间() {

    if (本地存储.get("普通找寻限制次数_box") == true) {
        头条滑动切换直播次数++;
        悬浮窗文本设置("运行情况", '切换直播间:' + 头条滑动切换直播次数 + "次", "灰色");
        sleep(1000);
        if (头条滑动切换直播次数 >= 本地存储.get("普通找寻限制次数")) {
            悬浮窗文本设置("运行情况", '切换直播间_刷新直播列表', "灰色");
            sleep(1000);
            返回头条首页("西瓜视频");
            进入头条直播间();
        }
    }
    悬浮窗文本设置("运行情况", '切换直播间', "灰色");
    while (true) {
        var 切换直播间 = id("com.ss.android.liveplugin:id/viewpager").findOne(4000);
        if (切换直播间 != null) {
            悬浮窗文本设置("运行情况", '切换直播间_开始切换', "灰色");
            切换直播间.scrollForward();
            sleep(5000);
            var 直播界面 = id("com.ss.android.liveplugin:id/entrance_text").text("更多直播").visibleToUser(true).findOne(5000);
            if (直播界面 != null) {
                悬浮窗文本设置("运行情况", '切换直播间_直播间加载成功', "灰色");
                var 主播名称 = id("com.ss.android.article.news:id/ema").visibleToUser(true).findOne(4000);
                if (主播名称 != null) {
                    var 当前主播名称 = 主播名称.text();
                    if (当前主播名称 == 历史主播名称) {
                        悬浮窗文本设置("运行情况", '直播间切换失败', "灰色");
                        历史主播名称 = 当前主播名称;
                        返回头条首页("西瓜视频");
                        进入头条直播间();
                    } else {
                        历史主播名称 = 当前主播名称;
                        return true;
                    }
                } else {
                    悬浮窗文本设置("运行情况", '直播间切换失败', "灰色");
                    返回头条首页("西瓜视频");
                    进入头条直播间();
                }

            } else {
                悬浮窗文本设置("运行情况", '切换直播间_直播间加载失败', "灰色");
            }
        } else {
            悬浮窗文本设置("运行情况", '切换直播间_未在直播间', "红色");
            进入头条直播间();
        }
    }
}




function 头条快速切换直播间() {
    var 返回次数 = 0;

    悬浮窗文本设置("运行情况", '快速切换直播间', "灰色");
    while (true) {
        var 西瓜视频直播大厅 = packageName("com.ss.android.article.news").desc("直播").visibleToUser(true).findOne(2000);
        if (西瓜视频直播大厅 != null) {
            悬浮窗文本设置("运行情况", '快速切换直播间_刷新直播大厅', "灰色");
            if (西瓜视频直播大厅.selected()==true) {
                西瓜视频直播大厅.click();
            }else{
                西瓜视频直播大厅.click();
                sleep(2000);
                西瓜视频直播大厅.click();
            }
            sleep(2000);
            悬浮窗文本设置("运行情况", '快速切换直播间_找寻福袋', "灰色");
            for (var i = 0; i < 4;) {
                var 进入福袋 = id("com.ss.android.article.news:id/bm2").findOne(2000);
                if (进入福袋 != null) {
                    悬浮窗文本设置("运行情况", '快速切换直播间_进入福袋', "灰色");
                    进入福袋.parent().parent().click();
                    var 直播界面 = id("com.ss.android.liveplugin:id/entrance_text").text("更多直播").visibleToUser(true).findOne(8000);
                    if (直播界面 != null) {
                        悬浮窗文本设置("运行情况", '快速切换直播间_成功', "灰色");
                        return true;
                    } else {
                        悬浮窗文本设置("运行情况", '快速切换直播间_失败', "红色");
                    }
                    break;
                } else {
                    i++;
                    悬浮窗文本设置("运行情况", '快速切换直播间_翻阅直播大厅:' + i, "红色");
                    var 滑动直播大厅 = id("com.ss.android.article.news:id/d1a").visibleToUser(true).findOne(1000);
                    if (滑动直播大厅 != null) {
                        滑动直播大厅.scrollForward();
                    }
                }
            }

        } else {
            if (返回次数 >= 2) {
                返回头条首页("西瓜视频");
                var 西瓜视频界面 = id("com.ss.android.article.news:id/bgr").text("西瓜视频").visibleToUser(true).findOne(3000);
                if (西瓜视频界面) {
                    if (西瓜视频界面.selected() != true) {
                        悬浮窗文本设置("运行情况", '快速切换直播间_进入西瓜视频', "灰色");
                        西瓜视频界面.parent().click();
                    } else {
                        悬浮窗文本设置("运行情况", '快速切换直播间_已在西瓜视频界面', "灰色");
                    }
                }
            } else {
                back();
                返回次数++;
                var 退出提示 = id("com.ss.android.liveplugin:id/live_dialog_btn_2").text("退出").findOne(2000);
                if (退出提示 != null) {
                    退出提示.click();
                }
            }
        }
    }
}







function 头条红包福袋() {
    var 红包上限时间 = parseInt(本地存储.get("红包上限sj"));
    var 直播间人数上限 = parseInt(本地存储.get("上限人数"));
    var 找寻红包时间 = parseInt(本地存储.get("找寻红包sj"));
    var 找寻福袋时间 = parseInt(本地存储.get("找寻福袋sj"));
    var 福袋上限时间 = parseInt(本地存储.get("福袋上限sj"));

    var 福袋, 福袋开奖时间, 分, 秒, 延迟;


    if (本地存储.get("快速找寻") == true) {
        头条快速切换直播间();
    } else if (本地存储.get("普通找寻") == true) {
        进入头条直播间();
    }


    while (true) {
        var 直播界面 = id("com.ss.android.liveplugin:id/entrance_text").text("更多直播").visibleToUser(true).findOne(3000);
        if (直播界面 != null) {
            log("在直播间")
            if (本地存储.get("上限人数_box") == true) {
                var 直播间人数 = id("com.ss.android.liveplugin:id/online_info").findOne(3000);
                if (直播间人数 != null) {
                    直播间人数 = 直播间人数.text();
                    if (直播间人数.indexOf("万") > -1) {
                        直播间人数 = 直播间人数.split("万")[0];
                        直播间人数 = 直播间人数 * 10000;
                    } else {
                        直播间人数 = parseInt(直播间人数);
                    }
                    悬浮窗文本设置("运行情况", '直播间人数:' + 直播间人数, "灰色");
                    sleep(1000);
                    if (直播间人数 >= 直播间人数上限) {
                        悬浮窗文本设置("运行情况", '直播间人数上限', "红色");
                        sleep(1000);

                        if (本地存储.get("快速找寻") == true) {
                            头条快速切换直播间();
                        } else if (本地存储.get("普通找寻") == true) {
                            头条滑动切换直播间();
                        }
                        continue;
                    }
                }
            }

            if (本地存储.get("参与福袋") == true) {
                悬浮窗文本设置("运行情况", '搜寻福袋', "灰色");
                福袋 = id("com.ss.android.liveplugin:id/count_down").visibleToUser(true).findOne(找寻福袋时间 * 1000);
                if (福袋 != null) {
                    log("找到福袋");
                    for (var i = 1; i <= 1; i++) {
                        log(i + "i")
                        if (本地存储.get("福袋上限sj_box") == true) {
                            福袋开奖时间 = 福袋.text().split(":");
                            分 = 福袋开奖时间[0] * 60;
                            秒 = 福袋开奖时间[1] * 1;
                            延迟 = 分 + 秒;
                            悬浮窗文本设置("运行情况", '福袋开奖sj:' + 延迟 + "秒", "灰色");
                            sleep(1000);
                            if (延迟 >= 福袋上限时间) {
                                悬浮窗文本设置("运行情况", '福袋等待时间上限', "红色");
                                sleep(1000);
                                break;
                            }
                        }

                        悬浮窗文本设置("运行情况", '点开福袋', "灰色");
                        福袋.parent().click()
                        sleep(3000);
                        var 一键参与福袋 = text("一键参与获取福袋").visibleToUser(true).findOne(4000);
                        if (一键参与福袋 != null) {
                            悬浮窗文本设置("运行情况", '一键参与福袋', "灰色");
                            已参与福袋++;
                            本地存储.put("已参与福袋", 已参与福袋);
                            悬浮窗文本设置("已参与福袋", "已参与:" + 已参与福袋, "灰色");
                            一键参与福袋.click();
                            sleep(1000);
                            if (本地存储.get("等待开奖再离开_box") == true) {
                                while (true) {
                                    福袋 = id("com.ss.android.liveplugin:id/count_down").visibleToUser(true).findOne(4000);
                                    if (福袋 != null) {
                                        福袋开奖时间 = 福袋.text().split(":");
                                        分 = 福袋开奖时间[0] * 60;
                                        秒 = 福袋开奖时间[1] * 1;
                                        延迟 = 分 + 秒;
                                        悬浮窗文本设置("运行情况", '福袋开奖sj:' + 延迟 + "秒", "灰色");
                                    } else {
                                        悬浮窗文本设置("运行情况", '福袋已开奖', "灰色");
                                        var 福袋发放记录 = id("com.ss.android.liveplugin:id/web_browser_fragment").findOne(4000);
                                        if (福袋发放记录 != null) {
                                            sleep(2000);
                                            back();
                                        }
                                        break;
                                    }
                                    sleep(1000);
                                }
                            } else {
                                sleep(3000);
                            }
                        } else {
                            悬浮窗文本设置("运行情况", '收费福袋,不参与', "灰色");
                            sleep(1000);
                            back();
                        }
                    }
                } else {
                    悬浮窗文本设置("运行情况", '未搜寻到福袋', "红色");
                    sleep(1000);
                }
            }
            if (本地存储.get("抢红包") == true) {
                悬浮窗文本设置("运行情况", '搜寻红包', "灰色");
                var 直播间红包 = id("com.ss.android.article.news:id/e85").visibleToUser(true).findOne(找寻红包时间 * 1000);
                if (直播间红包 != null) {

                    if (本地存储.get("红包上限sj_box") == true) {
                        var 红包开抢时间 = 直播间红包.text().split(":");
                        分 = 红包开抢时间[0] * 60;
                        秒 = 红包开抢时间[1] * 1;
                        延迟 = 分 + 秒;
                        悬浮窗文本设置("运行情况", '红包等待sj:' + 延迟 + "秒", "灰色");
                        if (延迟 >= 红包上限时间) {
                            悬浮窗文本设置("运行情况", '红包等待时间上限', "红色");
                            if (本地存储.get("快速找寻") == true) {
                                头条快速切换直播间();
                            } else if (本地存储.get("普通找寻") == true) {
                                头条滑动切换直播间();
                            }
                            continue;
                        }
                    }
                    头条抢红包();
                    悬浮窗文本设置("抢到红包", "抢到:" + 抢到红包, "不打印");
                    悬浮窗文本设置("已抢红包", "已抢:" + 已抢红包, "不打印");
                } else {
                    悬浮窗文本设置("运行情况", '未找到红包', "红色");
                    // sleep(1000);
                    // 头条切换直播间();
                }
            }

            if (本地存储.get("快速找寻") == true) {
                头条快速切换直播间();
            } else if (本地存储.get("普通找寻") == true) {
                头条滑动切换直播间();
            }
        } else {
            悬浮窗文本设置("运行情况", '未在直播间,开始切换进入', "红色");
            sleep(1000);
            if (本地存储.get("快速找寻") == true) {
                头条快速切换直播间();
            } else if (本地存储.get("普通找寻") == true) {
                头条滑动切换直播间();
            }
        }
    }
}

function 关闭直播间提示() {
    var X = random(998, 1080);
    var Y = random(550, 1295);
    var sj = random(10, 400);
    press(X, Y, sj);
}


function 头条抢红包() {
    var 红包;
    var 提前点开红包 = ui.提前点开红包sj.getText() * 1000;
    var 提前抢红包 = parseInt(ui.提前抢红包sj.getText());
    while (true) {
        var 直播间红包 = id("com.ss.android.article.news:id/e85").visibleToUser(true).findOne(4000);
        if (直播间红包 != null) {
            var 红包开抢时间 = 直播间红包.text().split(":");
            var 分 = 红包开抢时间[0];
            var 秒 = 红包开抢时间[1];
            var 延迟 = ((分 * 60) + (秒 * 1)) * 1000;
            悬浮窗文本设置("运行情况", '红包等待sj:' + (延迟 / 1000) + "秒", "灰色");
            if (延迟 <= 提前点开红包) {
                延迟 = 延迟 - 300;
                悬浮窗文本设置("运行情况", "点开红包", "灰色");
                直播间红包.parent().parent().click();

                if (ui.提前抢.checked == true) {
                    while (true) {
                        if (延迟 <= 提前抢红包) {
                            红包 = id("com.ss.android.liveplugin:id/fl_rush").findOne(3000);
                            if (红包 != null) {
                                var 范围 = 红包.bounds()
                                press(范围.centerX() + random(-30, 30), 范围.centerY() + random(-30, 30), 10);
                                已抢红包++;
                                本地存储.put("已抢红包", 已抢红包);
                                var 抢到 = id("com.ss.android.liveplugin:id/tv_card_title").textContains("已抢到").visibleToUser(true).findOne(5000);
                                if (抢到 != null) {
                                    悬浮窗文本设置("运行情况", 抢到.text(), "灰色");
                                    抢到红包++;
                                    本地存储.put("抢到红包", 抢到红包);
                                } else {
                                    悬浮窗文本设置("运行情况", "未抢到", "红色");
                                }
                                关闭直播间提示();
                                return;
                            } else {
                                悬浮窗文本设置("运行情况", "抢红包出错", "红色");
                                return;
                            }
                        } else {
                            延迟 = 延迟 - 100;
                            sleep(100);
                        }
                    }
                } else if (ui.准时抢.checked == true) {
                    红包 = id("com.ss.android.liveplugin:id/rush").clickable(true).findOne(提前点开红包 + 2000);
                    if (红包 != null) {
                        红包.click();
                        已抢红包++;
                        本地存储.put("已抢红包", 已抢红包);
                        var 抢到 = id("com.ss.android.liveplugin:id/tv_card_title").textContains("已抢到").visibleToUser(true).findOne(5000);
                        if (抢到 != null) {
                            悬浮窗文本设置("运行情况", 抢到.text(), "灰色");
                            抢到红包++;
                            本地存储.put("抢到红包", 抢到红包);
                        } else {
                            悬浮窗文本设置("运行情况", "未抢到", "红色");
                        }

                        关闭直播间提示();
                        return;
                    } else {
                        悬浮窗文本设置("运行情况", "抢红包出错", "红色");
                        return;
                    }
                } else {
                    alert("友情提示", "您尚未选择抢红包模式,请重新配置后启动");
                    exit();
                }
            }
        } else {
            悬浮窗文本设置("运行情况", '红包等待开抢错误', "红色");
            return;
        }
        sleep(500);
    }
}







function 火山弹窗监控() {
    while (true) {
        var 青少年模式 = id("com.ss.android.ugc.live:id/pm").text("进入儿童/青少年模式").visibleToUser(true).findOnce();
        if (青少年模式 != null) {
            toastLog('关闭青少年提示');
            var 我知道了 = id("com.ss.android.ugc.live:id/x2").text("我知道了").findOne(3000);
            if (我知道了 != null) {
                我知道了.click();
            }
        }

        var 赠送玫瑰 = id("com.ss.android.ugc.live:id/eav").visibleToUser(true).text("立即赠送").findOnce();
        if (赠送玫瑰 != null) {
            toastLog('主播讨礼物啦,快跑');
            关闭直播间提示();
        }
        var 关注提示 = id("com.ss.android.ugc.live:id/ss").textContains("关注主播").visibleToUser(true).findOnce();
        if (关注提示 != null) {
            toastLog('主播求关注,考虑要不要关注')
            var 随机关注 = random(1, 5);
            if (随机关注 == 1) {
                toastLog('看主播可怜关注它吧');
                var 关注 = id("com.ss.android.ugc.live:id/avx").text("关注").visibleToUser(true).findOne(1000);
                if (关注 != null) {
                    关注.click();
                } else {
                    toastLog('关注失败');
                    关闭直播间提示();
                }
            } else {
                toastLog('不听它的,快跑!!!');
                关闭直播间提示();
            }
        }


        sleep(500);
    }
}




function 返回火山首页(导航) {
    console.verbose('返回' + 导航);
    while (true) {
        context.startActivity(app.intent({
            action: "VIEW",
            className: "com.ss.android.ugc.live.main.MainActivity",
            packageName: "com.ss.android.ugc.live"
        }).setFlags(335544320));

        var 首页导航栏 = id("com.ss.android.ugc.live:id/title").text(导航).findOne(8000);
        if (首页导航栏 != null) {
            首页导航栏.parent().click();
            return;
        }
    }
}





function 火山红包() {

    var 红包上限时间 = parseInt(ui.红包上限sj.getText());
    var 直播间人数上限 = parseInt(ui.上限人数.getText());
    var 停留时间 = parseInt(ui.直播间停留sj.getText());
    if (停留时间 == undefined || 停留时间 == "" || 停留时间 == null) {
        alert("友情提示", "您尚未选择抢红包模式,请重新配置后启动");
        exit();
    }
    while (true) {
        var 直播间红包 = id("com.ss.android.ugc.live:id/e3e").visibleToUser(true).findOne(停留时间 * 1000);
        if (直播间红包 != null) {
            if (ui.上限人数_box.checked == true) {
                var 直播间人数 = id("com.ss.android.ugc.live:id/ceg").findOne(1000);
                if (直播间人数 != null) {
                    直播间人数 = 直播间人数.text();
                    if (直播间人数.indexOf("万") > -1) {
                        直播间人数 = 直播间人数.split("万")[0];
                        直播间人数 = 直播间人数 * 10000;
                    } else {
                        直播间人数 = parseInt(直播间人数);
                    }
                    悬浮窗文本设置("运行情况", '直播间人数:' + 直播间人数, "灰色");
                    if (直播间人数 >= 直播间人数上限) {
                        悬浮窗文本设置("运行情况", '直播间人数上限', "红色");
                        火山切换直播间();
                        continue;
                    }
                }
            }
            if (ui.红包上限sj_box.checked == true) {
                var 红包开抢时间 = 直播间红包.text().split(":");
                var 分 = 红包开抢时间[0] * 60;
                var 秒 = 红包开抢时间[1] * 1;
                var 延迟 = 分 + 秒;
                悬浮窗文本设置("运行情况", '红包等待sj:' + 延迟 + "秒", "不打印");
                if (延迟 >= 红包上限时间) {
                    悬浮窗文本设置("运行情况", '红包等待时间上限', "红色");
                    火山切换直播间();
                    continue;
                }
            }
            火山抢红包();

            悬浮窗文本设置("抢到红包", "抢到:" + 抢到红包, "不打印");
            悬浮窗文本设置("已抢红包", "已抢:" + 已抢红包, "不打印");
        } else {
            火山切换直播间();
        }
    }
}


function 火山切换直播间() {
    悬浮窗文本设置("运行情况", '切换直播间', "红色");
    返回火山首页("直播");
    sleep(2000);
    for (var i = 0; i < 4;) {
        var 红包 = id("com.ss.android.ugc.live:id/cw0").findOne(2000);
        if (红包 != null) {
            悬浮窗文本设置("运行情况", '进入红包直播间', "灰色");
            红包.parent().parent().click();
            sleep(4000);
            break;
        } else {
            i++;
            悬浮窗文本设置("运行情况", '未找到红包:' + i, "红色");
            var 滑动首页直播 = id("com.ss.android.ugc.live:id/lr").visibleToUser(true).findOne(1000);
            if (滑动首页直播 != null) {
                滑动首页直播.scrollForward();
            }
        }
    }
}

function 火山抢红包() {
    var 红包, 手慢了;
    var 提前点开红包 = 本地存储.get("提前点开红包sj") * 1000;

    var 提前抢红包 = parseInt(本地存储.get("提前抢红包sj"));

    while (true) {
        var 直播间红包 = id("com.ss.android.ugc.live:id/e3e").visibleToUser(true).findOne(4000);
        if (直播间红包 != null) {
            var 红包开抢时间 = 直播间红包.text().split(":");
            var 分 = 红包开抢时间[0];
            var 秒 = 红包开抢时间[1];
            var 延迟 = ((分 * 60) + (秒 * 1)) * 1000;
            悬浮窗文本设置("运行情况", '红包等待sj:' + (延迟 / 1000) + "秒", "不打印");
            if (延迟 <= 提前点开红包) {
                延迟 = 延迟 - 300;
                悬浮窗文本设置("运行情况", "点开红包", "灰色");
                直播间红包.parent().parent().click();
                if (ui.提前抢.checked == true) {
                    while (true) {
                        if (延迟 <= 提前抢红包) {
                            红包 = id("com.ss.android.ugc.live:id/as_").findOne(3000);
                            if (红包 != null) {
                                var 范围 = 红包.bounds()
                                press(范围.centerX() + random(-30, 30), 范围.centerY() + random(-30, 30), 10);
                                sleep(4000);
                                已抢红包++;
                                本地存储.put("已抢红包", 已抢红包);
                                手慢了 = id("com.ss.android.ugc.live:id/e2i").text("送你一个好运气").visibleToUser(true).findOne(3000);
                                if (手慢了 != null) {
                                    悬浮窗文本设置("运行情况", "未抢到红包", "红色");
                                } else {
                                    悬浮窗文本设置("运行情况", '抢到红包啦', "灰色");
                                    // sleep(3000);
                                    抢到红包++;
                                    本地存储.put("抢到红包", 抢到红包);
                                }

                                关闭直播间提示();
                                return;
                            } else {
                                悬浮窗文本设置("运行情况", "抢红包出错", "红色");
                                return;
                            }
                        } else {
                            延迟 = 延迟 - 100;
                            sleep(100);
                        }
                    }
                } else if (ui.准时抢.checked == true) {
                    红包 = id("com.ss.android.ugc.live:id/d18").clickable(true).findOne(提前点开红包 + 2000);
                    if (红包 != null) {
                        红包.click();
                        sleep(4000);
                        已抢红包++;
                        本地存储.put("已抢红包", 已抢红包);

                        手慢了 = id("com.ss.android.ugc.live:id/e2i").text("送你一个好运气").visibleToUser(true).findOne(3000);
                        if (手慢了 != null) {
                            悬浮窗文本设置("运行情况", "未抢到红包", "红色");
                        } else {
                            悬浮窗文本设置("运行情况", '抢到红包啦', "灰色");
                            // sleep(3000);
                            抢到红包++;
                            本地存储.put("抢到红包", 抢到红包);
                        }

                        关闭直播间提示();
                        return;
                    } else {
                        悬浮窗文本设置("运行情况", "抢红包出错", "红色");
                        return;
                    }
                } else {
                    alert("友情提示", "您尚未选择抢红包模式,请重新配置后启动");
                    exit();
                }

            }
        } else {
            悬浮窗文本设置("运行情况", '红包等待开抢错误', "红色");
            return;
        }
        sleep(500);
    }
}



function 判断网络类型() {
    var Service = context.getSystemService(context.CONNECTIVITY_SERVICE);
    var Network = Service.getActiveNetworkInfo();

    if (Network != null && Network.isAvailable()) {
        var name = Network.getTypeName();
        return (name == "MOBILE" ? "移动网络" : (name == "WIFI" ? "WIFI" : "未知网络"));
    } else {
        return "没有网络";
    }
}




function 悬浮窗() {
    window = floaty.window(
        <frame w="*" bg="#F5F5DC" alpha="0.9">
            <vertical layout_gravity="left|center" w="auto" h="auto">
                <img id="运行" circle="true" tint="red" src="ic_power_settings_new_black_48dp" w="40" h="40" ></img>
                <img id="返回首页" circle="true" tint="#708090" src="ic_home_black_48dp" w="40" h="40"></img>
            </vertical>
            <vertical layout_gravity="right|center_vertical" gravity="center" w="*" h="auto" >

                <text id="当前平台_text" text="" textColor="#000000" textSize="12sp" w="auto" h="auto" />
                <horizontal w="auto" h="auto">
                    <text text="红包:" textColor="#000000" textSize="12sp" w="auto" h="auto" />
                    <text id="已抢红包_text" text="" textColor="red" textSize="12sp" w="auto" h="auto" />
                    <text id="抢到红包_text" text="" textColor="red" textSize="12sp" w="auto" h="auto" marginLeft="10" />
                </horizontal>
                <horizontal w="auto" h="auto">
                    <text text="福袋:" textColor="#000000" textSize="12sp" w="auto" h="auto" />
                    <text id="已参与福袋_text" text="" textColor="red" textSize="12sp" w="auto" h="auto" />
                </horizontal>
                <horizontal w="auto" h="auto">
                    <text text="运行情况:" textColor="#000000" textSize="12sp" w="auto" h="auto" />
                    <text id="运行情况_text" text="" textColor="#000000" textSize="12sp" w="auto" h="auto" />
                </horizontal>
            </vertical>
        </frame>
    );
    window.setPosition(0, device.height - 500);
    window.setSize(device.width + 100, -2);
    setInterval(() => { }, 1000);

    if (运行状态 == false) {
        ui.运行.attr("tint", "#76EEC6");
        ui.运行.attr("src", "ic_play_arrow_black_48dp");
    }
    window.运行.on("click", function () {
        if (运行状态 == true) {
            运行状态 = false;
            window.运行情况_text.setText("停止运行");
            主程序线程.interrupt();

            window.运行.attr("tint", "#76EEC6");
            window.运行.attr("src", "ic_play_arrow_black_48dp");

        } else if (运行状态 == false) {
            运行状态 = true;
            window.运行情况_text.setText("开始运行");
            主程序线程 = threads.start(主程序);
            window.运行.attr("tint", "red");
            window.运行.attr("src", "ic_power_settings_new_black_48dp");

        }
    })
    window.返回首页.on("click", function () {
        运行状态 = false;
        主程序线程.interrupt();
        var intent = new Intent(context, activity.class);
        activity.startActivityForResult(intent, 0);
        toastLog("回到首页");
        ui.emitter.on("resume", function () {
            if (运行状态 == false) {
                if (ui.运行.attr("tint") == "red") {
                    ui.运行.attr("tint", "#76EEC6");
                    ui.运行.attr("src", "ic_play_arrow_black_48dp");
                }
            } else if (运行状态 == true) {
                if (ui.运行.attr("tint") == "#76EEC6") {
                    ui.运行.attr("tint", "red");
                    ui.运行.attr("src", "ic_power_settings_new_black_48dp");
                }
            }
        });
        window.close();
        悬浮窗线程.interrupt();
    })
}



function 悬浮窗文本设置(文本id, 文本内容, 打印颜色) {
    ui.run(function () {
        window[文本id + "_text"].setText(文本内容);
    });
    if (打印颜色 == "红色") {
        console.error(文本内容);
    } else if (打印颜色 == "灰色") {
        console.verbose(文本内容);
    }
}





function 下载提示(a) {
    confirm("下载提示", "是否需要下载《" + 平台[a] + "》")
        .then(clear => {
            if (clear) {
                toastLog("下载" + 平台[a]);
                下载平台(a, "首页ui");
            }
        });
}


function 下载平台(a, 返回ui) {
    下载平台名称 = 软件[a].名称, 下载平台图标 = 软件[a].src;
    下载平台链接 = 软件[a].下载链接;
    下载平台路径 = files.join(files.getSdcardPath(), 下载平台名称 + ".apk");
    if (a == 4 || a == 5) {
        app.openUrl(下载平台链接);
        return;
    }
    var threadId;
    ui.layout(
        <vertical>
            <appbar bg="#1C1C1C" >
                <horizontal  >
                    <img id="返回" w="50" h="50" tint="#F5F5F5" src="@drawable/{{['ic_keyboard_arrow_left_black_48dp']}}" />
                    <text layout_gravity="center" text="平台下载" textColor="#FFFAFA" textSize="20sp" textStyle="bold" marginLeft="80" />
                </horizontal>
            </appbar>
            <frame marginBottom="2px" bg="#ffffff" padding="10 10" w="{{device.width}}px" h="auto">
                <img w="56" h="56" src="{{下载平台图标}}" />
                <vertical h="auto" w="auto" marginLeft="70dp" layout_gravity="bottom">
                    <text text="{{下载平台名称}}" textColor="#000000" textSize="21sp" />
                    <progressbar id="进度条" w="180dp" style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal" />
                </vertical>
                <text w="auto" h="auto" textSize="15sp" marginLeft="265dp" id="progressNum" text="0" layout_gravity="bottom" />
            </frame>
        </vertical>
    );


    ui.返回.on("click", () => {
        threadId && threadId.isAlive() && threadId.interrupt();
        下载线程 && 下载线程.isAlive() && 下载线程.interrupt();
        if (返回ui == "登陆ui") {
            登陆ui();
        } else if (返回ui == "首页ui") {
            首页ui();
        }
    })
    var 下载线程 = threads.start(download);
    function download() {
        var filePath = files.join(files.getSdcardPath(), 下载平台名称 + ".apk");
        importClass('java.io.FileOutputStream');
        importClass('java.io.IOException');
        importClass('java.io.InputStream');
        importClass('java.net.MalformedURLException');
        importClass('java.net.URL');
        importClass('java.net.URLConnection');
        importClass('java.util.ArrayList');

        var url = new URL(下载平台链接);
        var conn = url.openConnection(); //URLConnection
        var inStream = conn.getInputStream(); //InputStream
        var fs = new FileOutputStream(filePath); //FileOutputStream
        var connLength = conn.getContentLength(); //int
        var buffer = util.java.array('byte', 1024); //byte[]
        var byteSum = 0; //总共读取的文件大小
        var byteRead; //每次读取的byte数

        threadId = threads.start(function () {
            while (true) {
                var 当前写入的文件大小 = byteSum;
                var progress = (当前写入的文件大小 / connLength) * 100;
                if (progress > 0.1) {
                    var progress = parseInt(progress).toString();
                    ui.run(function () {
                        ui.进度条.setProgress(progress);
                        ui.progressNum.setText(progress + '%');
                    });
                    if (当前写入的文件大小 >= connLength) {
                        break;
                    }
                }
                sleep(1000);
            }
        });
        while ((byteRead = inStream.read(buffer)) != -1) {
            byteSum += byteRead;
            //当前时间
            currentTime = java.lang.System.currentTimeMillis();
            fs.write(buffer, 0, byteRead); //读取
        }
        ui.run(function () {
            ui.进度条.setProgress("100");
            ui.progressNum.setText('100%');
        });
        threadId && threadId.isAlive() && threadId.interrupt();
        toastLog('下载完成');
        app.viewFile(filePath);
        return;
    }
}





function 浏览器ui(标题名称, 链接, 返回ui) {
    ui.layout(
        <vertical>
            <appbar bg="#1C1C1C" >
                <horizontal>
                    <img id="返回" w="50" h="50" tint="#F5F5F5" src="@drawable/{{['ic_keyboard_arrow_left_black_48dp']}}" />
                    <text id="标题名称" layout_gravity="center" text="" textColor="#FFFAFA" textSize="20sp" textStyle="bold" marginLeft="80" />
                </horizontal>
            </appbar>
            <webview id="webview" w="*" h="*" />
        </vertical>
    );
    ui.标题名称.setText(标题名称);
    ui.webview.loadUrl(链接);
    ui.返回.on("click", () => {
        if (返回ui == "登陆ui") {
            登陆ui();
        } else if (返回ui == "首页ui") {
            首页ui();
        }
    })
}

function 文本ui(标题名称, 文本, 返回ui) {
    ui.layout(
        <vertical>
            <appbar bg="#1C1C1C" >
                <horizontal>
                    <img id="返回" w="50" h="50" tint="#F5F5F5" src="@drawable/{{['ic_keyboard_arrow_left_black_48dp']}}" />
                    <text id="标题名称" layout_gravity="center" text="" textColor="#FFFAFA" textSize="20sp" textStyle="bold" marginLeft="80" />
                </horizontal>
            </appbar>
            <text id="文本" text="" textColor="#000000" textSize="15sp" />
        </vertical>
    );
    ui.标题名称.setText(标题名称);

    ui.返回.on("click", () => {
        if (返回ui == "登陆ui") {
            登陆ui();
        } else if (返回ui == "首页ui") {
            首页ui();
        }
    })

    内容 = "屏幕宽度:" + device.width + "\n屏幕高度:" + device.height + "\nbuildId:" + device.buildId + "\n主板:" + device.board + "\n制造商:" + device.brand + "\n工业设计名称:" + device.device + "\n产品名称:" + device.product + "\n型号:" + device.model + "\nbootloader版本:" + device.bootloader + "\n硬件名称:" + device.hardware + "\n唯一标识码:" + device.fingerprint + "\n硬件序列号:" + device.serial + "\nIncremental:" + device.incremental + "\nAndroid系统版本号:" + device.release + "\nBaseOS:" + device.baseOS + "\n安全补丁程序级别:" + device.securityPatch + "\n开发代号:" + device.codename + "\n内存总量:" + device.getTotalMem() + "\n当前可用内存:" + device.getAvailMem() + "\nAndroidId: " + device.getAndroidId() + "\nMac: " + device.getMacAddress() + "\nAPI: " + device.sdkInt + "\n电量: " + device.getBattery() + "\nIMEI: " + device.getIMEI()
    if (文本 == "手机信息") {
        ui.文本.setText(内容);
    } else {
        ui.文本.setText(文本);
    }
}

function 客服ui(返回ui) {
    ui.layout(
        <vertical>
            <appbar bg="#1C1C1C" >
                <horizontal>
                    <img id="返回" w="50" h="50" tint="#F5F5F5" src="@drawable/{{['ic_keyboard_arrow_left_black_48dp']}}" />
                    <text text="在线客服" layout_gravity="center" textColor="#FFFAFA" textSize="20sp" textStyle="bold" marginLeft="80" />
                </horizontal>
            </appbar>
            <img w="auto" h="auto" circle="true" src="" />
        </vertical>
    );
    ui.返回.on("click", () => {
        if (返回ui == "登陆ui") {
            登陆ui();
        } else if (返回ui == "首页ui") {
            首页ui();
        }
    })
}




/**
 * CDK登陆
 */
function CDKLogin() {
    //退出上一次的Needle
    var logoutResult = LogoutNeedle();
    console.log("退出登陆" + logoutResult[1]);
    var CDK = 本地存储.get("CDK");
    var loginResult = SendQLRequest(
        "apiv3/card_login",
        "card=" + CDK + "&software=" + SoftwareName
    );
    if (loginResult[0]) {
        var successData = loginResult[1];
        var endTime = successData["endtime"];
        var lessTime = successData["less_time"];
        var needle = successData["needle"];
        PutSt("oldNeedle", needle); //存储本次 的Needle
        return [true, needle, lessTime];
    } else {
        var failResult = loginResult[1];
        return [false, failResult];
    }
}

/**
 * 退出上一次的Needle
 */
function LogoutNeedle() {
    var CDK = 本地存储.get("CDK");
    var oldNeedle = LocalStorage.get("oldNeedle");
    if (oldNeedle != "" || oldNeedle != undefined || oldNeedle != false) {
        PutSt("oldNeedle", false); //存储本次 的Needle
        var logoutResult = SendQLRequest(
            "apiv3/card_logout",
            "card=" + CDK + "&needle=" + oldNeedle
        );
        if (logoutResult[0]) {
            return [true, oldNeedle + " 退出成功!"];
        } else {
            return [false, oldNeedle + " 退出失败!"];
        }
    } else {
        return [true, "上次无存储的Needle"];
    }
}

/**
 * 卡密心跳
 * @param {string} cdkNeedle
 */
function SendHeartbeat() {
    var CDK = 本地存储.get("CDK");
    var cdkNeedle = LocalStorage.get("oldNeedle");
    do {
        log("心跳验证中");
        var heartbeatResult = SendQLRequest(
            "apiv3/card_ping",
            "card=" + CDK + "&software=" + SoftwareName + "&needle=" + cdkNeedle
        );
        log("cdkNeedle:" + cdkNeedle)
        if (heartbeatResult[0]) {
            var successData = heartbeatResult[1];
            var endTime = successData["endtime"];
            var lessTime = successData["less_time"];
            log("剩余时间" + lessTime);
            if (lessTime != null && lessTime != "") {
                ui.run(function () {
                    ui.激活码_text.setText("激活码:" + CDK);
                    卡密到期时间 = endTime;
                    ui.到期时间_text.setText("到期时间: " + 卡密到期时间);
                    var 提取字符串 = lessTime.replace(/【/g, "");
                    卡密剩余时间 = 提取字符串.replace(/】/g, "");
                    ui.剩余时间_text.setText("剩余时间: " + 卡密剩余时间);
                });
                sleep(5 * 60 * 1000); //休息5分钟
            }
        } else {
            var failResult = heartbeatResult[1];
            LocalStorage.put("oldNeedle", false);
            threads.start(function () {
                alert("注册码异常", failResult);
            });
            exit();
        }
    } while (true);
}

/**
 * 访问权朗api
 * @param {string}} api
 * @param {string} apiParams
 */
function SendQLRequest(api, apiParams) {
    var qlHostArray = [
        "http://napi.2cccc.cc/",
        "http://api2.2cccc.cc/",
        "http://api3.2cccc.cc/"
    ];
    var connectTimes = 0;

    while (true) {
        try {
            var recode_taobao = http.get("http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp")

            if (recode_taobao.statusCode >= 200 && recode_taobao.statusCode < 300) {
                log("页面获取成功!")
                var taobaotime = recode_taobao.body.json();
                if (taobaotime != null) {
                    break;
                }
            } else if (recode_taobaos.statusCode == 404) {
                log("页面没找到哦...");
            } else {
                log("错误: " + recode_taobao.statusCode + " " + recode_taobao.statusMessage);
            }

        } catch (e) { }
    }

    // log("你好"+taobaotime.data.t)

    var timeStamp = taobaotime.data.t.substring(0, 10);
    // log("timeStamp" + timeStamp);
    var sign = HexMd5(timeStamp + "" + ApiPassword);
    var common_params =
        "center_id=" + DeveloperID + "&timestamp=" + timeStamp + "&sign=" + sign;
    connectTimes = 0;
    var qlResult = "";

    do {
        connectTimes = connectTimes + 1;

        qlResult = http
            .get(
                qlHostArray[Math.floor(Math.random() * (3 - 0) + 0)] +
                api +
                "?" +
                common_params +
                "&" +
                apiParams
            )
            .body.string();

        if (connectTimes > 10) {
            return [false, "权朗回执超时"];
        }
    } while (qlResult.substring(2, 6) != "code");

    qlResult = JSON.parse(qlResult);

    if (qlResult["code"] == "1") {
        if (
            HexMd5(qlResult["timestamp"] + ApiPassword).toUpperCase() ==
            qlResult["sign"].toUpperCase() &&
            Math.abs(timeStamp - qlResult["timestamp"]) < 700
        ) {
            return [true, qlResult["data"]];
        } else {
            return [false, "请检查API密码是否填写正确"];
        }
    } else {
        return [false, qlResult["msg"]];
    }
}

//--------Helper---------

/**
 * 判断是否 不是 空
 * @param {any}} content 内容
 */
function IsNotNullOrEmpty(content) {
    return (
        content != null &&
        content != undefined &&
        content != "" &&
        content != " " &&
        content != "  "
    );
}

/**
 * 存储空间 存入 键值数据
 * @param {string} key 键名
 * @param {any} value 值
 */
function PutSt(key, value) {
    //   cw(key + " : " + value);
    if (IsNotNullOrEmpty(value)) {
        LocalStorage.put(key, value);
    } else {
        //cw("key:" + key + "----> value为空,跳过保存");
    }
}

/**
 * 获取 存储控件中的 数据
 * @param {string} key 键名
 * @param {any} defaultValue 默认值
 */
function GetSt(key, defaultValue) {
    var data = LocalStorage.get(key);
    // cw(key + " : " + data);
    if (IsNotNullOrEmpty(data)) {
        return data;
    } else {
        if (defaultValue == undefined) {
            defaultValue = "";
        }
        //cw(key + " : 返回默认值->>" + defaultValue);
        return defaultValue;
    }
}
//-------------------------------------

//-------MD5---------------------
//(autojs 调用java 的MD5方法有bug, 生成出来的是错误的结果.所以用 下面的js md5)
/**
 * 16进制MD5(常用)
 * @param {any} s
 */
function HexMd5(s) {
    return binl2hex(core_md5(str2binl(s), s.length * chrsz));
}
function B64Md5(s) {
    return binl2str(core_md5(str2binl(s), s.length * chrsz));
}
function StrMd5(key, data) {
    return binl2hex(core_hmac_md5(key, data));
}
function HexHmacMd5(key, data) {
    return binl2hex(core_hmac_md5(key, data));
}
function B64HmacMd5(key, data) {
    return binl2b64(core_hmac_md5(key, data));
}
function StrHmacMd5(key, data) {
    return binl2str(core_hmac_md5(key, data));
}

var hexcase = 0;
var b64pad = "";
var chrsz = 8;
function md5_vm_test() {
    return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}
function core_md5(x, len) {
    x[len >> 5] |= 0x80 << len % 32;
    x[(((len + 64) >>> 9) << 4) + 14] = len;
    var a = 1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d = 271733878;
    for (var i = 0; i < x.length; i += 16) {
        var olda = a;
        var oldb = b;
        var oldc = c;
        var oldd = d;
        a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
        d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
        c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
        b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
        a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
        d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
        c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
        b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
        a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
        d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
        c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
        b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
        a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
        d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
        c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
        b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
        a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
        d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
        c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
        b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
        a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
        d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
        c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
        b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
        a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
        d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
        c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
        b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
        a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
        d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
        c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
        b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
        a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
        d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
        c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
        b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
        a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
        d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
        c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
        b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
        a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
        d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
        c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
        b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
        a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
        d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
        c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
        b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
        a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
        d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
        c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
        b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
        a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
        d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
        c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
        b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
        a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
        d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
        c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
        b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
        a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
        d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
        c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
        b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
        a = safe_add(a, olda);
        b = safe_add(b, oldb);
        c = safe_add(c, oldc);
        d = safe_add(d, oldd);
    }
    return Array(a, b, c, d);
}
function md5_cmn(q, a, b, x, s, t) {
    return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
}
function md5_ff(a, b, c, d, x, s, t) {
    return md5_cmn((b & c) | (~b & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t) {
    return md5_cmn((b & d) | (c & ~d), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t) {
    return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t) {
    return md5_cmn(c ^ (b | ~d), a, b, x, s, t);
}
function core_hmac_md5(key, data) {
    var bkey = str2binl(key);
    if (bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
    var ipad = Array(16),
        opad = Array(16);
    for (var i = 0; i < 16; i++) {
        ipad[i] = bkey[i] ^ 0x36363636;
        opad[i] = bkey[i] ^ 0x5c5c5c5c;
    }
    var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
    return core_md5(opad.concat(hash), 512 + 128);
}
function safe_add(x, y) {
    var lsw = (x & 0xffff) + (y & 0xffff);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xffff);
}
function bit_rol(num, cnt) {
    return (num << cnt) | (num >>> (32 - cnt));
}
function str2binl(str) {
    var bin = Array();
    var mask = (1 << chrsz) - 1;
    for (var i = 0; i < str.length * chrsz; i += chrsz)
        bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << i % 32;
    return bin;
}
function binl2str(bin) {
    var str = "";
    var mask = (1 << chrsz) - 1;
    for (var i = 0; i < bin.length * 32; i += chrsz)
        str += String.fromCharCode((bin[i >> 5] >>> i % 32) & mask);
    return str;
}
function binl2hex(binarray) {
    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    for (var i = 0; i < binarray.length * 4; i++) {
        str +=
            hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xf) +
            hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xf);
    }
    return str;
}
function binl2b64(binarray) {
    var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var str = "";
    for (var i = 0; i < binarray.length * 4; i += 3) {
        var triplet =
            (((binarray[i >> 2] >> (8 * (i % 4))) & 0xff) << 16) |
            (((binarray[(i + 1) >> 2] >> (8 * ((i + 1) % 4))) & 0xff) << 8) |
            ((binarray[(i + 2) >> 2] >> (8 * ((i + 2) % 4))) & 0xff);
        for (var j = 0; j < 4; j++) {
            if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
            else str += tab.charAt((triplet >> (6 * (3 - j))) & 0x3f);
        }
    }
    return str;
}






function 指针位置() {
    app.startActivity({
        action: "android.intent.action.VIEW", //此处可为其他值
        packageName: "com.android.settings",
        className: "com.android.settings.Settings$DevelopmentSettingsActivity"
        //此处可以加入其他内容,如data、extras
    });
    textContains("开发者").waitFor();
    while (!textContains("指针位置").exists()) {
        sleep(50);
        if (scrollDown() == false) {
            while (!textContains("指针位置").exists()) {
                sleep(50);
                scrollUp();
                sleep(100);
            }
        }
        sleep(100);
    }
    var zz = textContains("指针位置").findOne(5000);
    if (zz) {
        a = click("指针位置");
        toastLog("指针位置切换成功:" + a);
        sleep(100);
        back();
    }
}


function 奔放模式() {
    var 动画缩放, 开关;
    内容 = 本地存储.get("奔放模式");
    if (内容 == "0.5") {
        动画缩放 = "1"
        开关 = '关闭';
    } else if (内容 == "1") {
        动画缩放 = "0.5"
        开关 = '开启';
    } else {
        动画缩放 = "0.5"
        开关 = '开启';
    }
    app.startActivity({
        action: "android.intent.action.VIEW", //此处可为其他值
        packageName: "com.android.settings",
        className: "com.android.settings.Settings$DevelopmentSettingsActivity"
    });
    textContains("开发者").waitFor();
    while (!textContains("窗口动画").exists()) {
        sleep(50);
        if (scrollDown() == false) {
            while (!textContains("窗口动画").exists()) {
                sleep(50);
                scrollUp();
                sleep(100);
            }
        }
        sleep(100);
    }
    var zz = textContains("窗口动画").findOne(5000);
    if (zz) {
        a = click("窗口动画");
        sleep(500);
        a = click(动画缩放);
        sleep(500);
        a = click("过渡动画");
        sleep(500);
        a = click(动画缩放);
        sleep(500);
        a = click("动画程序");
        sleep(500);
        a = click(动画缩放);
        sleep(500);
        本地存储.put("奔放模式", 动画缩放);
        toastLog("成功" + 开关 + "奔放模式");
        back();
    }
}




  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:38:03  更:2021-10-11 17:38:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:48:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码