"ui";
var myApp ={};
myApp.isRun = false;
myApp.minHBTime = 8;
myApp.maxHBTime = 15;
myApp.homeActivity = "com.ss.android.ugc.aweme.main.MainActivity";
myApp.tqTime = 3;
myApp.qNum = 0;
myApp.qCNum = 0;
//tabs 数据
var tabs_data = {
//tabs 背景
bg: "#ffffff",
selectColor: {
//当前页面选中颜色
on: "#00ffff",
//当前页面未选中颜色
off: "#999999"
},
//图标大小
srcSize: 18,
//字体大小
textSize: 12,
//动画缩放比例 未加入动画效果
zoom: 1.2,
//是否显示指示器小横条
tabs_h: true,
//tabs 按钮数据
data: [
["设置", "@drawable/ic_settings_black_48dp"],
["通用设置", "@drawable/ic_settings_black_48dp"],
["日志", "@drawable/ic_assignment_black_48dp"],
],
}
//tabs按钮 布局视图信息
var tabs_view = []
//tabs按钮 当前选中按钮
var selectView = 0;
//自定义控件 tabs按钮
var Tabs_btn_layout = function () {
//继承ui.Widget
util.extend(Tabs_btn_layout, ui.Widget);
function Tabs_btn_layout() {
//调用父类构造函数
ui.Widget.call(this);
//自定义属性data ,定义控件的每个参数 传入值为整数
this.defineAttr("data", (view, attr, value, defineSetter) => {
//获取当前控件的参数值 tabs_data.data[value] 赋值到arr数组
arr = tabs_data.data[value]
//设定 _text控件文本
view._text.setText(arr[0])
//设定 _src控件图片
view._src.attr("src", arr[1])
//把当前控件信息集合到tabs_view数组里面
tabs_view[tabs_view.length] = view
//如果当前控件为初始值 则设定控件颜色为选中颜色 selectView==value==0
if (value == selectView) {
view._src.attr("tint", tabs_data.selectColor.on)
view._text.setTextColor(colors.parseColor(tabs_data.selectColor.on))
}
});
}
Tabs_btn_layout.prototype.render = function () {
return (
//1.0.0-1 修改 w="*" 参数 屏幕方向发生变化时 宽度自适配
<vertical id="_bg" w="*" bg="{{tabs_data.bg}}" padding="0 10" gravity="center" >
<img w="{{tabs_data.srcSize}}" h="{{tabs_data.srcSize}}" id="_src" tint="{{tabs_data.selectColor.off}}" />
<text w="auto" id="_text" textSize="{{tabs_data.textSize}}" textColor="{{tabs_data.selectColor.off}}" />
</vertical>
)
}
ui.registerWidget("tabs_btn-layout", Tabs_btn_layout);
return Tabs_btn_layout;
}()
//自定义控件 tabs
var Tabs_layout = function () {
util.extend(Tabs_layout, ui.Widget);
function Tabs_layout() {
ui.Widget.call(this);
this.defineAttr("data", (view, attr, value, defineSetter) => {
//遍历 tabs_data.data数组
for (var i = 0; i < tabs_data.data.length; i++) {
time = i
//1.0.0-1 增加 layout_weight="1"参数 屏幕方向发生变化时 宽度自适配
ui.inflate(<tabs_btn-layout data="{{time}}" layout_weight="1" />, view._tabs, true)
}
//根据tabs_h值设置 _color颜色
tabs_data.tabs_h ? _color = tabs_data.selectColor.on : _color = "#00000000";
view.tabs.selectedTabIndicatorColor = colors.parseColor(_color);//设置tabs指示器颜色
});
}
Tabs_layout.prototype.render = function () {
return (
<card w="*" h="auto" cardElevation="5" foreground="?selectableItemBackground">
<horizontal id="_tabs" />
<tabs id="tabs" />
</card>
)
}
ui.registerWidget("tabs-layout", Tabs_layout);
return Tabs_layout;
}()
ui.layout(
<frame>
<vertical>
<appbar w="*" h="auto">
<toolbar id="toolbar" title="{{tabs_data.data[0][0]}}" />
</appbar>
<viewpager w="*" id="viewpager" layout_alignParentBottom="true" >
<frame >
<vertical>
<Switch id="rootSwith" text="无障碍服务:" checked="{{auto.service != null}}" w="auto" textStyle="bold" />
<horizontal> <text text="抢取时间:"/> <input id="minHBTime" text="{{myApp.minHBTime}}"/><text text="~"/> <input id="maxHBTime" text="{{myApp.maxHBTime}}"/><text text="(提前几秒进直播)"/> </horizontal>
<button id="startRun" text="启动" />
<text text="QQ群: 856728443 " />
<text text="本程序仅供参考学使用,如若非法使用概不负责"/>
</vertical>
</frame>
<frame >
<vertical>
</vertical>
</frame>
<frame>
<vertical>
<text text="日志" />
<com.stardust.autojs.core.console.ConsoleView id="console" layout_weight="1" />
<text h="50px" w="*" />
</vertical>
</frame>
</viewpager>.
</vertical>
<tabs-layout data="" layout_gravity="bottom" />
</frame>
)
ui.tabs.setupWithViewPager(ui.viewpager);//绑定ViewPager到指示器
//页面更改侦听器
ui.viewpager.setOnPageChangeListener({
//已选定页面发生改变时触发
onPageSelected: function (index) {
// log("上次选中" + tabs_view[selectView]._text.text())
//设置selectView上次页面 图案和字体颜色为未选中颜色 tabs_data.selectColor.off
tabs_view[selectView]._src.attr("tint", tabs_data.selectColor.off)
tabs_view[selectView]._text.setTextColor(colors.parseColor(tabs_data.selectColor.off))
//设置当前页面 图案和字体颜色为选中颜色 tabs_data.selectColor.on
tabs_view[index]._src.attr("tint", tabs_data.selectColor.on)
tabs_view[index]._text.setTextColor(colors.parseColor(tabs_data.selectColor.on))
//更改标题 title 内容
ui.toolbar.setTitle(tabs_view[index]._text.text())
//设置当前页面为 index
selectView = index
}
})
ui.console.setConsole(runtime.console);
// 设置控制台字体颜色
let c = new android.util.SparseArray();
let Log = android.util.Log;
c.put(Log.VERBOSE, new java.lang.Integer(colors.parseColor("#dfc0c0c0")));
c.put(Log.DEBUG, new java.lang.Integer(colors.parseColor("#cc000000")));
c.put(Log.INFO, new java.lang.Integer(colors.parseColor("#ff64dd17")));
c.put(Log.WARN, new java.lang.Integer(colors.parseColor("#ff2962ff")));
c.put(Log.ERROR, new java.lang.Integer(colors.parseColor("#ffd50000")));
c.put(Log.ASSERT, new java.lang.Integer(colors.parseColor("#ffff534e")));
ui.console.setColors(c);
/* 禁止返回键退出脚本 */
ui.emitter.on('back_pressed', function (event) {
event.consumed = true;
});
//无障碍监听
ui.rootSwith.on("check", function (checked) {
// 用户勾选无障碍服务的选项时,跳转到页面让用户去开启
if (checked && auto.service == null) {
app.startActivity({
action: "android.settings.ACCESSIBILITY_SETTINGS"
});
}
if (!checked && auto.service != null) {
auto.service.disableSelf();
}
})
// 当用户回到本界面时,resume事件会被触发
ui.emitter.on("resume", function () {
// 此时根据无障碍服务的开启情况,同步开关的状态
ui.rootSwith.checked = auto.service != null;
});
threads.start(function(){
//请求截图
if (!requestScreenCapture()) {
ui.run(function(){
toastLog("请求截图失败!");
})
exit();
}
// 屏蔽音量键调节声音
events.setKeyInterceptionEnabled("volume_up", true);
//启用按键监听
events.observeKey();
//监听音量键按下
events.onKeyDown("volume_up", () => {
log('按音量键停止');
toastLog("停止脚本");
myApp.isRuning = false;
mainThreads.interrupt();
// exit(); //停止、退出脚本
});
})
var mainThreads = null;
ui.startRun.on("click",function(){
myApp.minHBTime = ui.minHBTime.getText();
myApp.maxHBTime = ui.maxHBTime.getText();
threads.start(function(){
let fy= floaty.rawWindow(<vertical alpha="0.6">
<card w="*" h="32" bg="#333333" gravity="center_vertical"><vertical h="auto" padding="15 0 10 0">
<text id="qNum" text="抢 0 次" textColor="#FFFFFF"/>
</vertical>
<View bg="#F44336" w="5" h="*"/></card>
<card w="*" h="32" bg="#333333" gravity="center_vertical">
<vertical h="auto" padding="15 0 10 0">
<text id="qCNum" text="成 0 次" textColor="#FFFFFF"/>
</vertical>
<View bg="#4CAF50" w="5" h="*"/></card>
<card w="*" h="32" bg="#00aa00" gravity="center_vertical"><vertical h="auto" padding="15 0 10 0">
<text id="hq" text="获取" textColor="#FFFFFF" />
</vertical>
<View bg="#F44336" w="5" h="*"/></card>
</vertical>);
fy.setPosition(0,700);
setInterval(()=>{}, 1000);
fy.hq.click(()=>{
myApp.isRun = !myApp.isRun;
if(myApp.isRun){
fy.hq.setText("暂停");
toastLog("开始抢红包");
mainThreads = threads.start(function(){
startQ(fy);
})
}
else{
fy.hq.setText("开始");
mainThreads.interrupt();
toastLog("暂停")
}
})
})
mainThreads = threads.start(function(){
// start();
})
})
function start(){
sleep(5000);
ui.run(function(){
toastLog("开始获取");
})
startQ();
return;
let app = launchApp("抖音");
sleep(2000);
log("app:"+app);
if(app){
log(currentActivity());
waitForActivity(myApp.homeActivity);
sleep(2000);
if(openZB()){
sleep(5000);
popup();
log("1111111111");
// ui.run(function(){
// let w = floaty.rawWindow(<vertical alpha="0.6">
// <card w="*" h="32" bg="#333333" gravity="center_vertical"><vertical h="auto" padding="15 0 10 0">
// <text id="grab" text="抢 0 次" textColor="#FFFFFF"/>
// </vertical>
// <View bg="#F44336" w="5" h="*"/></card>
// <card w="*" h="32" bg="#333333" gravity="center_vertical">
// <vertical h="auto" padding="15 0 10 0">
// <text id="succeed" text="成 0 次" textColor="#FFFFFF"/>
// </vertical>
// <View bg="#4CAF50" w="5" h="*"/></card></vertical>);
// w.setPosition(0,500);
// setInterval(()=>{}, 1000);
// })
startQ();
}
}else{
console.log("启动失败");
ui.run(function(){
toastLog("启动失败");
})
}
}
function startQ(fy){
ui.run(function(){
toastLog("开始抢");
})
sleep(5000);
while(true){
if(id("g8k").exists()){
log("找到紅包");
let parent = id("g8k").findOne();
let currentHB = parent.findOne(textContains(":"));
if(currentHB){
let t = currentHB.text().split(":");
log(t);
if(t.length==2){
log(t[0] +":"+t[1]);
let s = parseInt( t[0])*60+parseInt( t[1]);
if(myApp.minHBTime<=s&&myApp.maxHBTime>=s){
log("等待抢红包");
if(currentHB.bounds().centerX()>0&¤tHB.bounds().centerY()>0){
log(currentHB.bounds().centerX()+","+currentHB.bounds().centerY());
sleep((s-parseInt( myApp.tqTime))*1000);
click(currentHB.bounds().centerX(),currentHB.bounds().centerY());
// id("br0").waitFor();
if(dd(fy)){
if(getHBTime()>0){
continue;
}
}
sleep(5000);
}
}
}
}else{
log("没有显示红包时间");
}
}else{
log("没找到红包");
ui.run(function(){
toast("没找到红包");
})
}
swipe(device.width-350,device.height-300,device.width-300,300,random(200,300));
sleep(8000);
}
}
function getHBTime(){
if(id("g8k").exists()){
let parent = id("g8k").findOne();
let currentHB = parent.findOne(textContains(":"));
if(currentHB){
let t = currentHB.text().split(":");
if(t.length==2){
let s = parseInt( t[0])*60+parseInt( t[1]);
return s;
}
}
}
return -1;
}
//等待抢
function dd(fy){
log("1111-->");
log("----->"+id("br0").exists());
if(id("br0").exists()){
let b = id("br0").findOne().bounds();
log("2222222222");
if(b.centerX()>0&&b.centerY()>0){
log("111111111")
while(true){
click(b.centerX(),b.centerY());
if(text("看看大家手气").exists()||id("a7f").exists()){
click(device.width-10,device.height/2);
myApp.qNum++;
ui.run(function(){
fy.qNum.setText("已抢"+ myApp.qNum+"次");
})
return true;
break;
}else if(text("奖励已放入你的账户").exists()){
myApp.qCNum++;
myApp.qNum++;
ui.run(function(){
fy.qCNum.setText("已抢"+ myApp.qCNum+"次");
})
ui.run(function(){
fy.qNum.setText("成功"+ myApp.qNum+"次");
})
return true;
break;
}else if(text("奖励已放入你的礼物背包").exists()){
myApp.qCNum++;
myApp.qNum++;
ui.run(function(){
fy.qCNum.setText("成功"+ myApp.qCNum+"次");
})
ui.run(function(){
fy.qNum.setText("已抢"+ myApp.qNum+"次");
})
return true;
}else if(text("送你一个好运气").exists()){
myApp.qNum++;
ui.run(function(){
fy.qNum.setText("已抢"+ myApp.qNum+"次");
})
return true;
}else{
sleep(50);
}
}
}
}
return false;
}
function openZB(){
let img =images.grayscale(captureScreen());
if(img){
let template = images.grayscale(images.read("./res/zb.png"));
//截图并找图
var p = findImage(img, template,{
threshold:0.6
});
if(p){
log("打开直播");
ui.run(function(){
toastLog("打开直播");
})
click(p.x,p.y);
sleep(1000);
}
template = null;
return true;
}else{
sleep(1000);
log("截图为失败");
}
img.recycle();
ui.run(function(){
toastLog("打开直播失败请手动打开直播");
})
return false;
}
function killapp() {
for (let i = 1; i < 6; i++) {
app['openAppSetting'](PKG);
var stop_obj = textMatches('/(.*停止.*|.*结束.*)/')["findOne"](5000);
if (stop_obj != null) {
var stop_obj2 = className("Button")["textMatches"]('/(.*停止.*|.*结束.*)/')['findOne'](1000);
if (stop_obj2 != null) {
if (stop_obj2["enabled"]() == true) {
if (stop_obj2["click"]() == true) {
var ok_ojb = className('Button')["text"]('确定')["findOne"](1000);
if (ok_ojb != null) {
ok_ojb['click']();
break;
}
var stop_contrl = className('Button')["textContains"]('停止')["findOne"](1000);
if (stop_contrl != null) {
stop_contrl["click"]();
break;
}
}
} else {
break;
}
}
}
sleep(1000)
}
log('finish-end');
home()
sleep(2000)
}