主頁 >  其他 > 活動js代碼[擼貓]

活動js代碼[擼貓]

2020-11-03 22:31:49 其他

//=================================================================================
var 連續提交 = “無”
ui.lianxutijiao.on(“check”, (checked)=>{
if(checked){
連續提交= “有”
toast(“已開啟連續提交功能,此功能必須填寫坐標!”);
}
else
{
連續提交 = “無”
}
});
ui.zuobiao.click(function () {
if(ui.zuobiao.getText()==“點擊獲取坐標”) {
ui.zuobiao.setText(“取消獲取坐標”);
threads.start(獲取坐標);
device.keepScreenOn()//保持螢屏常亮
}else{
ui.zuobiao.setText(“點擊獲取坐標”);
console.clear();
console.hide();
threads.shutDownAll();
device.cancelKeepingAwake();
}
})

ui.taobao.on(“click”,function(){
app.openUrl(“https://docs.qq.com/doc/DU0pSZ3BTWXl4U1pk”)
})
ui.jingdong.on(“click”,function(){
app.openUrl(“https://docs.qq.com/doc/DU0pSZ3BTWXl4U1pk”)
})
var 開啟重繪 = “無”
var 提前重繪 = “無”
ui.shuaxin.on(“check”, (checked)=>{
if(checked){
開啟重繪= “有”
提前重繪 = “有”
toast(“已開啟購物車自動重繪功能!”);
}
else
{
開啟重繪 = “無”
提前重繪 = “無”
}
});
var 自動付款 = “無”
ui.pay1.on(“check”, (checked)=>{
if(checked){
自動付款= “有”
toast(“已開啟自動付款”);
}
else
{
自動付款 = “無”
}
});

var 自動勾選 = “無”
var 手動勾選 = “有”
ui.jiance.on(“check”, (checked)=>{
if(checked){
自動勾選= “有”
toast(“已開啟自動勾選商品,并檢測價格進行結算!”);
手動勾選 = “無”
}
else
{
自動勾選 = “無”
}
});
//淘寶密碼隱藏
ui.bt1.on(“check”, (checked)=>{
if (ui.bt1.getText() == “隱藏密碼”) {
ui.bt1.setText(“顯示密碼”);
ui.h.visibility = 8;
toast(“密碼已隱藏!”);
} else {
ui.bt1.setText(“隱藏密碼”);
ui.h.visibility = 0;
toast(“密碼已顯示!”);
}
});

var 平臺類別2=“蘇寧頁面”
ui.model_one.on(“check”, (checked)=>{
if(checked){
平臺類別2=“蘇寧頁面”
toast(“已切換到蘇寧頁面搶購模式”)
}
});
ui.model_two.on(“check”, (checked)=>{
if(checked){
平臺類別2=“蘇寧購物車”
toast(“已切換到蘇寧購物車搶購模式”)
}
});

var 平臺類別=“京東頁面”
ui.model_tree.on(“check”, (checked)=>{
if(checked){
平臺類別=“京東頁面”
toast(“已切換到京東頁面搶購模式”)
}
});
ui.model_four.on(“check”, (checked)=>{
if(checked){
平臺類別=“京東購物車”
toast(“已切換到京東購物車搶購模式”)
}
});
ui.model_five.on(“check”, (checked)=>{
if(checked){
平臺類別=“京東BP鏈接”
toast(“已切換到京東BP鏈接搶購模式”)
}
});

var 測驗 = “無”
ui.ceshi.on(“check”, (checked)=>{
if(checked){
測驗 = “有”
}
else
{
測驗 = “無”
}
});
//創建選項選單(右上角)
ui.emitter.on(“create_options_menu”, menu=>{
menu.add(“日志”);
menu.add(“關于”);
});
//監聽選項選單點擊
ui.emitter.on(“options_item_selected”, (e, item)=>{
switch(item.getTitle()){
case “關于”:
alert(“關于”, “使用方法、問題反饋、版本更新,請咨詢微信客服:baohuikf”);
break;
case “日志”:
app.startActivity(“console”);
break;
}
e.consumed = true;
});
activity.setSupportActionBar(ui.toolbar);

//設定滑動頁面的標題
ui.viewpager.setTitles(["淘寶","京東","蘇寧","其他"]);
//讓滑動頁面和標簽欄聯動
ui.tabs.setupWithViewPager(ui.viewpager);
//讓工具列左上角可以打開側拉選單
ui.toolbar.setupWithDrawer(ui.drawer);

ui.menu.setDataSource([
    {
     title: "咨詢微信客服:baohuikf",
        icon: "@drawable/ic_favorite_black_48dp"
},
     
{
     title: "使用教程",
        icon: "@drawable/ic_description_black_48dp"
},


{
     title: "退出",
     icon: "@drawable/ic_exit_to_app_black_48dp"
},

]);

    ui.menu.on("item_click", item =>{
     switch(item.title){
        case"咨詢微信客服:baohuikf":
        app.openUrl("https://resoumen.com/a/qg/wx.png"); 
 }
});
     
ui.menu.on("item_click", item =>{
    switch(item.title){
        case"使用教程":
        app.openUrl("https://docs.qq.com/doc/DU0pSZ3BTWXl4U1pk");
}
});


ui.menu.on("item_click", item => {
    switch(item.title){
        case "退出":
        ui.finish();
        break;
}
});


//這里是無障礙觸發方式
ui.autoService.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.autoService.checked = auto.service != null; });
//開啟懸浮窗權限
ui.overlayService.on(“check”, function (checked) {
// 用戶勾選無障礙服務的選項時,跳轉到頁面讓用戶去開啟
if (checked) {
int = app.startActivity({
packageName: “com.android.settings”,
className: “com.android.settings.Settings$AppDrawOverlaySettingsActivity”,
data: “package:” + auto.service.getPackageName().toString()
});
toast(“請打開懸浮窗開關”);
}

 if (!checked && auto.service != null) {
     auto.service.disableSelf();
     toast("已關閉懸浮窗權限");
     }
});


ui.ok_bp.on("click", () => {
    // engines.execScriptFile("tb_bp.js");
    "ui";

var color = “#009688”;
ui.statusBarColor("#ff4040")
ui.layout(



<toolbar id=“toolbar"paddingTop=“5dp” title=“聚劃算百億補貼模式” bg=”#ff4040" />

        <viewpager id="viewpager">
            //這是聚劃算百億補貼界面
            <frame> //start
            <ScrollView>
            <vertical>
            <Switch id="autoService" text="無障礙服務" checked="{{auto.service != null}}" padding="8 8 8 8" textSize="13sp"/>
            {/* <Switch id="overlayService" text="懸浮窗權限" checked="{{auto.service != null}}" padding="8 8 8 8"textSize="13sp" />  */}
            <text textSize="13sp" id="networkTesttwo" textColor="#ff0000" margin="0 5" text="點擊校準淘寶時間!"/>

            <radiogroup orientation="horizontal">
            <checkbox id ="pay1" text="自動付款"/>
                            <checkbox id ="bt1" text="隱藏密碼" checked="false"/>
            <checkbox id ="tijiao" text="檢測提交價格"/>
            </radiogroup>
            
            <horizontal>
            <text id="lianjie" text="請輸入聚劃算商品BP鏈接!支持聚劃算百億補貼!如何獲取BP鏈接請點擊我!" textColor="#ff0000" w="auto" />
            </horizontal>


            <text textSize="14sp" textColor="black" text="商品BP鏈接:" />
            <input id="id1" textColor="gray"  text="h5.m.taobao.com/cart/order.html?buyParam=610051376150_1_0" w="*"/>

        
            <horizontal>
            <text textSize="13sp" textColor="black" text="提前搶購時間"/>
            <input id="delaytime_two" textColor="gray" inputType="number" text="700" w="80"/>
            <text textSize="13sp" textColor="black" text="毫秒"  />
            </horizontal>

            <horizontal>
            <text textSize="13sp" textColor="black" text="提交訂單頻率"  />
            <input id="interval" textColor="gray" inputType="number" text="100" w="80"/>
            <text textSize="13sp" textColor="black" text="毫秒"  />
            </horizontal>

            <horizontal>
            <text textSize="13sp" textColor="black" text="搶購持續時間" />
            <input id="lastTime_two" textColor="gray" inputType="number" text="10" w="80"/>
            <text textSize="13sp" textColor="black" text="秒"  />
            </horizontal>

            <horizontal>
            <text textSize="14sp" textColor="black" text="商品價格不等于"  />
            <input id="password_7" textColor="gray" inputType="number|numberDecimal" text="10" w="80"/>
            <text textSize="14sp" textColor="black" text="元不提交"  />
            </horizontal>

            <linear id="h" layout_gravity="center">                         
            <horizontal>
            <text textSize="13sp" textColor="black" text="支付密碼:" />
            <input id="password_1" textColor="gray"  text="*" w="45"/>
            <input id="password_2" textColor="gray"  text="*" w="45"/>
            <input id="password_3" textColor="gray"  text="*" w="45"/>
            <input id="password_4" textColor="gray"  text="*" w="45"/>
            <input id="password_5" textColor="gray"  text="*" w="45"/>
            <input id="password_6" textColor="gray"  text="*" w="45"/>
            </horizontal>
            </linear>

            <text  textSize="13sp" textColor="black" text="請輸入搶購時間,格式為:2020/04/14 12:00:00"/> 
            <input hint="請輸入搶購時間,格式必須正確" textColor="gray" id="startTime_two" /> 
            //定義按鈕的大小顏色和文本
            <colored-button  id="ok_two"      layout_gravity="center"      color="#ff5500"  text="開始運行"/>
            <colored-button  id="fastTbUrlOpen"       layout_gravity="center"     color="#ff5500"  text="點擊跳轉"/>
            </vertical>
            </ScrollView>
            </frame> //end

        </viewpager>        
    </vertical>
</drawer>

);

ui.lianjie.on(“click”,function(){
app.openUrl(“https://docs.qq.com/doc/DU0pSZ3BTWXl4U1pk”)
})
//BP跳轉
ui.fastTbUrlOpen.on(“click”, () => {
if(ui.id1.text() ==""){
toast(“請輸入聚劃算商品的BP鏈接!”)
}
else {
var url = ui.id1.text();
app.startActivity({
action: “android.intent.action.VIEW”,
data: “taobao://” + url,
packageName: “com.taobao.taobao”,
});
}
});
var 不提交訂單 = “無”
var 提交訂單 = “有”
ui.tijiao.on(“check”, (checked)=>{
if(checked){
不提交訂單 = “有”
提交訂單 = “無”
toast(“檢測商品提交價格,大于預定價格不提交!”);
}
else
{
不提交訂單 = “無”
提交訂單 = “有”
}
});
//密碼隱藏
ui.bt1.on(“check”, (checked)=>{
if (ui.bt1.getText() == “隱藏密碼”) {
ui.bt1.setText(“顯示密碼”);
ui.h.visibility = 8;
toast(“密碼已隱藏!”);
} else {
ui.bt1.setText(“隱藏密碼”);
ui.h.visibility = 0;
toast(“密碼已顯示!”);
}
});
//自動付款
var 自動付款 = “無”
ui.pay1.on(“check”, (checked)=>{
if(checked){
自動付款= “有”
toast(“已開啟自動付款”);
}
else
{
自動付款 = “無”
}
});

//這里是無障礙觸發方式
ui.autoService.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.autoService.checked = auto.service != null; });
// //開啟懸浮窗權限
// ui.overlayService.on(“check”, function (checked) {
// // 用戶勾選無障礙服務的選項時,跳轉到頁面讓用戶去開啟
// if (checked) {
// int = app.startActivity({
// packageName: “com.android.settings”,
// className: “com.android.settings.Settings$AppDrawOverlaySettingsActivity”,
// data: “package:” + auto.service.getPackageName().toString()
// });
// toast(“請打開懸浮窗開關”);
// }

// if (!checked && auto.service != null) {
// auto.service.disableSelf();
// toast(“已關閉懸浮窗權限”);
// }
// });

// 獲取時分秒用于記錄日志
function logWithTime(msg) {
    console.info(formatDate(getNow()) + " " + msg);
   }

   // 檢測淘寶網路延遲和時間偏差
   var NTP = {
   requiredResponses: 3,
   serverTimes: [],//服務器時間
   serverDelay: [],//服務器延遲
   serverUrl: "http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp",
   resyncTime: 0, // minutes
   sync: function () {
       var offset = storage.get("NTPClockOffset");//獲取時鐘偏移
       if (offset) {
           try {
               var t = offset.split("|")[1];
               var d = NTP.fixTime() - parseInt(t, 10);
               if (d < (1000 * 60 * NTP.resyncTime)) {
                   return false;
               }
           } catch (e) {
           }
       }
       NTP.getServerTime();
   },
   getNow: function () {
       var date = new Date();
       return date.getTime();
   },
   //分析服務器回應
   parseServerResponse: function (data) {
       var NtpStartTime = storage.get("NtpStartTime");
       var NtpStopTime = NTP.getNow();
       var origtime = parseInt(data.data.t);//起始時間
       var delay = ((NtpStopTime - NtpStartTime) / 2);//延遲
       var offset = NtpStopTime - origtime - delay;//抵消
       NTP.serverTimes.push(offset);
       NTP.serverDelay.push(delay);

       // 因為網路問題,需要多次獲取偏移值,獲取平均值
       if (NTP.serverTimes.length >= NTP.requiredResponses) {
           var sumOffset = 0;
           var sumDelay = 0;
           var i = 0;
           for (i = 0; i < NTP.serverTimes.length; i++) {
               sumOffset += NTP.serverTimes[i];
               sumDelay += NTP.serverDelay[i];
           }
           var averageOffset = Math.round(sumOffset / i);
           var averageDelay = Math.round(sumDelay / i);
           storage.put("NTPClockOffset", averageOffset + '|' + NTP.fixTime()); // 保存獲得offset時的時間戳
           storage.put("NTPClockDelay", averageDelay); // 保存獲得offset時的時間戳
       } else {
           NTP.getServerTime();
       }
   },
   //獲取服務器時間并判斷是否獲取成功
   getServerTime: function () {
       var NtpStartTime = NTP.getNow();
       storage.put("NtpStartTime", NtpStartTime);
       var res = http.get(NTP.serverUrl);
       if (res.statusCode !== 200) {
           toast("獲取網路時間失敗: " + res.statusCode + " " + res.statusMessage);
           return false;
       } else {
           NTP.parseServerResponse(res.body.json());
       }
   },
   //固定時間
   fixTime: function (timeStamp) {
       if (!timeStamp) {
           timeStamp = NTP.getNow();
       }
       var offset = storage.get("NTPClockOffset");
       try {
           if (!offset) {
               offset = 0;
           } else {
               offset = offset.split("|")[0];
           }
           if (isNaN(parseInt(offset, 10))) {
               return timeStamp;
           }
           return timeStamp + parseInt(offset, 10);
       } catch (e) {
           return timeStamp;
       }
   }

};

   // 獲取默認開始時間
   function getTime() {
       var fmt = "YYYY-MM-dd hh:mm:ss";
       var d = new Date();
       var hh = d.getHours();
       var mm = d.getMinutes();
       var ss = d.getSeconds();
       if (mm < 30) {
        mm = 30
        ss = 00
       }
       else{
        hh+=1
        mm = 00
        ss = 00       
       }
        
       var o = {
           "Y+": d.getYear() + 1900,
           "M+": d.getMonth() + 1,
           "d+": d.getDate(),
           "h+": hh,
           // "m+": d.getMinutes(),
           // "s+": d.getSeconds()
           "m+": mm,
           "s+": ss
       };
       for (var k in o) {
           if (new RegExp("(" + k + ")").test(fmt)) {
               fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 4) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
           }
       }
       fmt = fmt.replace(/-/g, '/');
       return fmt;
     };

     //定義初始化界面資料
     var storage = storages.create("tmalltaobaohelper.byfly");
     threads.start(NTP.sync);

     //初始化淘寶界面
   setTimeout(initConfig_two, 500);
   function initConfig_two() {
       NTPClockOffset = storage.get("NTPClockOffset", "0");
       NTPClockDelay = storage.get("NTPClockDelay", "0");
   if (!NTPClockOffset) {
       NTPClockOffset = 0;
   } else {
       NTPClockOffset = parseInt(NTPClockOffset.split("|")[0]);
   }
   if (NTPClockOffset < 0) {
       var offset_str = "慢了" + -NTPClockOffset + 'ms,'
   } else {
       offset_str = "快了" + NTPClockOffset + 'ms,'
   }
   if (NTPClockDelay < 50) {
       var good_str = "網速評估:"+"您的網路延遲低于50ms,非常優秀!"
   } 
   else if (NTPClockDelay < 100) {
       var good_str = "網速評估:"+"您的網路延遲低于100ms,優秀!"
   } 
   else if (NTPClockDelay>100 && NTPClockDelay<200) {
       var good_str = "網速評估:"+"您的網路延遲高于100ms,搶購可能會有影響!"
   } 
   else {
       good_str = "網速評估:"+"您的網路質量不佳,建議切換網路!"
   }

   ui.networkTesttwo.on("click",function(){
       ui.networkTesttwo.setText("時間校準:"+"本地時間比淘寶" + offset_str +"已經為您校準了淘寶時間!"+'\n'+ "網路延遲:" + NTPClockDelay+'\n'+good_str );
       });       

       ui.startTime_two.setText(getTime());
       ui.interval.setText(storage.get("interval", "100").toString());
       ui.lastTime_two.setText(storage.get("lastTime_two", "10").toString());   
       ui.delaytime_two.setText(storage.get("delaytime_two", "700").toString());  
     }

          // 時間戳轉時間字串
function add0(m) {
    return m < 10 ? '0' + m : m
}
function getNow() {
    var now = new Date().getTime();
    return now - NTPClockOffset; 
}

function formatDate(needTime) {
    //needTime是整數,否則要parseInt轉換
    var time = new Date(parseInt(needTime));
    var h = time.getHours();
    var mm = time.getMinutes();
    var s = time.getSeconds();
    var S = time.getMilliseconds();
    return add0(h) + ':' + add0(mm) + ':' + add0(s)+":"+add0(S);
}


  // 檢測時間字串是否有效
function strDateTime(str) {
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    var r = str.match(reg);
    if (r == null) return false;
    var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
    return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
}

var storage3 = storages.create("這個是一個檔案名2");
for (i = 0; i < 7; i++) {
var content2 = storage3.get("password_" + (i + 1));
 
if (content2) {
    ui["password_" + (i + 1)].setText(content2);
}}

var storage4 = storages.create("這個是一個檔案");
for (i = 0; i < 1; i++) {
var content4 = storage4.get("id" + (i + 1));
 
if (content4) {
    ui["id" + (i + 1)].setText(content4);
}
}

  // 淘寶程式主要邏輯
  ui.ok_two.click(function () {
    // 檢查無障礙服務
    if (auto.service == null) {
           toast("請先開啟無障礙服務!");
           return;
       }
       arr = new Array();
       for (i = 0; i < 7; i++) {
       var content2 = ui["password_" + (i + 1)].getText() + "";
       storage3.put("password_" + (i + 1), content2);
       arr.push(content2);
       };


       arr2 = new Array();
       for (i = 0; i < 1; i++) {
       var content4 = ui["id" + (i + 1)].getText() + "";
       storage4.put("id" + (i + 1), content4);
       arr2.push(content4);
       };


   //接收界面資料
       startTime_two = ui.startTime_two.getText().toString();
       interval = parseInt(ui.interval.getText());
       lastTime_two = parseInt(ui.lastTime_two.getText());
       delaytime_two = parseInt(ui.delaytime_two.getText());
       if (!strDateTime(startTime_two)) {
           ui.startTime_two.setError("日期錯誤,請重新輸入!");
           return;
       }
       //傳遞界面資料      
       storage.put("interval", interval);
       storage.put("lastTime_two", lastTime_two);
       storage.put("delaytime_two", delaytime_two);

       //按下開始運行
         if(ui.ok_two.getText()=="開始運行") {
           ui.ok_two.setText("停止運行");    
           threads.start(main_two);
           device.keepScreenOn()//保持螢屏常亮
       }else{
           ui.ok_two.setText("開始運行");
           console.clear();
           console.hide();
           threads.shutDownAll();
           device.cancelKeepingAwake();   
           }

});
//這是淘寶主程式
function main_two() {
var middle = device.width / 2 -400;
console.setPosition(middle, 0);
console.setGlobalLogConfig({ “file”: “/sdcard/日志.txt” });
console.show();
var DetailPage =0;
var notDetailPage = 0;
var notInDetailPage = 0

logWithTime("歡迎使用淘寶BP鏈接模式!"); 
sleep(800); 
logWithTime("請勿用于非法用途");  
sleep(800); 
logWithTime("請打開手機淘寶,并重新切換到點擊跳轉頁面!");
sleep(800); 
var startTime2 = new Date(Date.parse(startTime_two)).getTime();
var endTime = new Date(startTime2.valueOf() + lastTime_two * 1000).getTime();
var Panningingtime = startTime2 - delaytime_two;

reviewtime();
 //判斷實際時間是否大于搶購時間

function reviewtime(){
var tt = getNow();
if (tt > Panningingtime) {
console.warn(“您的時間已經錯過了哦,請重新輸入時間!”);
sleep(2000);
console.clear();
console.hide();
threads.shutDownAll();
}
if (tt < Panningingtime){
logWithTime(“您的搶購時間為:” + formatDate(Panningingtime));
logWithTime(“距離搶購時間還剩”+(startTime2-tt)/1000+“秒”+“請耐心等待”);
}
}
// 檢測是否在商品詳情頁
x = setInterval(function () {
var t = getNow();
if (t < Panningingtime) {
if (className(“android.widget.Button”).text(“點擊跳轉”).exists()) {
if (DetailPage === 0) {
logWithTime(“已找到跳轉按鈕,請等待…”);
DetailPage++;
notDetailPage = 0
}

    } else {
        if (notInDetailPage === 0) {
            logWithTime("未找到跳轉按鈕,否則無法進行跳轉!");
            DetailPage = 0;
            notInDetailPage++
        }
    }
} else {
    not_in_Detail_Page = 0;  // 商品詳情頁狀態復位
    clearInterval(x)
}

}, 500);

z = setInterval(function () {
var t = getNow();
if(t >= Panningingtime && t < endTime){
logWithTime(“開始搶購”)
BP鏈接();
clearInterval(z);
}
},10)
};
function BP鏈接()
{
var 價格值 = ui.password_7.text()
var 跳轉 = “有”
var Crowding = 0;
var cishu = 0;
var endTime = lastTime_two * 1000;
var password_1 = ui.password_1.text()*1;
var password_2 = ui.password_2.text()*1;
var password_3 = ui.password_3.text()*1;
var password_4 = ui.password_4.text()*1;
var password_5 = ui.password_5.text()*1;
var password_6 = ui.password_6.text()*1;
//如果在購物車
threads.start(function(){
setInterval(function(){
if(跳轉 == “有”){
if (className(“android.widget.Button”).text(“點擊跳轉”).exists()) {
logWithTime(“準備跳轉”);
className(“android.widget.Button”).text(“點擊跳轉”).findOne().click()
logWithTime(“已跳轉”);
跳轉 = “無”
}}
},100)
})
threads.start(function(){
setInterval(function(){
if (className(“android.widget.TextView”).text(“加入購物車”).exists()) {
var 領卷購買=id(“com.taobao.taobao:id/detail_main_sys_button”).findOne()
press(領卷購買.bounds().centerX()+344,領卷購買.bounds().centerY(),1)
id(“confirm”).findOne().click()
}
}, 100);
});

    threads.start(function(){
        setInterval(function(){ 
    if (id("confirm").exists()) {
        id("confirm").findOne().click()
    }
    }, 100);
    });    

    if(不提交訂單 == "有"){
        var 校驗價格 = "真"
        if(校驗價格 == "真"){
            threads.start(function(){
                setInterval(function(){  
                if(className("android.widget.TextView").text("¥"+價格值).depth(12).exists()&&className("android.widget.TextView").text("提交訂單").exists())
                {
                    logWithTime("已找到符合預定價格的商品,開始提交訂單!");
                    className("android.widget.TextView").text("提交訂單").findOne().click();
                    找到了 = "真"
                }   
                else if(className("android.widget.TextView").text("提交訂單").exists())
                {
                    logWithTime("沒有找到符合預定價格的商品,不提交訂單!");
                    Panic_buying_end()
                }                 
        },200)
        })
        }
        }


    if(提交訂單 == "有"){
    threads.start(function(){
        setInterval(function(){
        if (className("android.widget.TextView").text("提交訂單").exists()) {
                logWithTime("正在嘗試提交訂單");
                className("android.widget.TextView").text("提交訂單").findOne().click();
                logWithTime("訂單已提交");             
                }
            },10)
        })}
    threads.start(function(){
        setInterval(function(){
        if (className("android.widget.TextView").textContains("加載中").exists()) {
                if (Crowding === 0){
                    Crowding = 1
                    logWithTime("頁面加載中");
                    }          
                }
            },10)
        })
        threads.start(function(){
            setInterval(function(){
        if (className("android.widget.TextView").text("我知道了").exists()) {
                    className("android.widget.TextView").text("我知道了").findOne().click();
                    found = true;
                    cishu++;
                    logWithTime("第" + cishu + "次擁擠了,再試一次吧!");             
                }
            },10)
        })
    threads.start(function(){
        setInterval(function(){
        if (className("android.widget.TextView").text("立即付款").exists()) {
            if(自動付款 == "無"){
                    logWithTime("搶購成功!請支付!");
                    device.cancelKeepingAwake(); 
                    Panic_buying_end()             
                }}
                if(自動付款 == "有")
                {
                    click("立即付款")                            
                } 
            },200)
        })  
        var 密碼1 = "真"
        var 密碼2 = "假"
        var 密碼3 = "假"
        var 密碼4 = "假"
        var 密碼5 = "假"
        var 密碼6 = "假"
        threads.start(function(){
            setInterval(function(){ 
            if (className("android.widget.TextView").text("請輸入支付密碼").exists()) { 
                if(密碼1 == "真"&&className("android.widget.TextView").text(password_1).exists()){click(password_1);密碼2 = "真";sleep(10)}
                if(密碼2 == "真"&&className("android.widget.TextView").text(password_2).exists()){click(password_2);密碼3 = "真";sleep(10)}
                if(密碼3 == "真"&&className("android.widget.TextView").text(password_3).exists()){click(password_3);密碼4 = "真";sleep(10)}
                if(密碼4 == "真"&&className("android.widget.TextView").text(password_4).exists()){click(password_4);密碼5 = "真";sleep(10)}
                if(密碼5 == "真"&&className("android.widget.TextView").text(password_5).exists()){click(password_5);密碼6 = "真";sleep(10)}
                if(密碼6 == "真"&&className("android.widget.TextView").text(password_6).exists()){click(password_6);Panic_buying_end()}
            } 
        },300)
        })
    threads.start(function(){
        setInterval(function(){ 
        if (className("android.view.View").desc("查看訂單").findOne().parent().exists()) { 
            logWithTime("支付成功!");
            Panic_buying_end()
        }
    },10)
    })  
    threads.start(function(){
        setInterval(function(){ 
            sleep(endTime)
            logWithTime("超出預定搶購時長,搶購結束");
            device.cancelKeepingAwake();
            Panic_buying_end();           
         
    },10)
})  

}

function Panic_buying_end(){
device.cancelKeepingAwake()//關閉螢屏常亮
logWithTime(“本次搶購結束”);
threads.shutDownAll()
}

});
// 獲取時分秒用于記錄日志
function logWithTime(msg) {
 console.info(formatDate(getNow()) + " " + msg);
}

// 檢測淘寶網路延遲和時間偏差
var NTP = {
requiredResponses: 3,
serverTimes: [],//服務器時間
serverDelay: [],//服務器延遲
serverUrl: "http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp",
resyncTime: 0, // minutes
sync: function () {
    var offset = storage.get("NTPClockOffset");//獲取時鐘偏移
    if (offset) {
        try {
            var t = offset.split("|")[1];
            var d = NTP.fixTime() - parseInt(t, 10);
            if (d < (1000 * 60 * NTP.resyncTime)) {
                return false;
            }
        } catch (e) {
        }
    }
    NTP.getServerTime();
},
getNow: function () {
    var date = new Date();
    return date.getTime();
},
//分析服務器回應
parseServerResponse: function (data) {
    var NtpStartTime = storage.get("NtpStartTime");
    var NtpStopTime = NTP.getNow();
    var origtime = parseInt(data.data.t);//起始時間
    var delay = ((NtpStopTime - NtpStartTime) / 2);//延遲
    var offset = NtpStopTime - origtime - delay;//抵消
    NTP.serverTimes.push(offset);
    NTP.serverDelay.push(delay);

    // 因為網路問題,需要多次獲取偏移值,獲取平均值
    if (NTP.serverTimes.length >= NTP.requiredResponses) {
        var sumOffset = 0;
        var sumDelay = 0;
        var i = 0;
        for (i = 0; i < NTP.serverTimes.length; i++) {
            sumOffset += NTP.serverTimes[i];
            sumDelay += NTP.serverDelay[i];
        }
        var averageOffset = Math.round(sumOffset / i);
        var averageDelay = Math.round(sumDelay / i);
        storage.put("NTPClockOffset", averageOffset + '|' + NTP.fixTime()); // 保存獲得offset時的時間戳
        storage.put("NTPClockDelay", averageDelay); // 保存獲得offset時的時間戳
    } else {
        NTP.getServerTime();
    }
},
//獲取服務器時間并判斷是否獲取成功
getServerTime: function () {
    var NtpStartTime = NTP.getNow();
    storage.put("NtpStartTime", NtpStartTime);
    var res = http.get(NTP.serverUrl);
    if (res.statusCode !== 200) {
        toast("獲取網路時間失敗: " + res.statusCode + " " + res.statusMessage);
        return false;
    } else {
        NTP.parseServerResponse(res.body.json());
    }
},
//固定時間
fixTime: function (timeStamp) {
    if (!timeStamp) {
        timeStamp = NTP.getNow();
    }
    var offset = storage.get("NTPClockOffset");
    try {
        if (!offset) {
            offset = 0;
        } else {
            offset = offset.split("|")[0];
        }
        if (isNaN(parseInt(offset, 10))) {
            return timeStamp;
        }
        return timeStamp + parseInt(offset, 10);
    } catch (e) {
        return timeStamp;
    }
}

};

// 獲取默認開始時間
function getTime() {
    var fmt = "YYYY-MM-dd hh:mm:ss";
    var d = new Date();
    var hh = d.getHours();
    var mm = d.getMinutes();
    var ss = d.getSeconds();
    if (mm < 30) {
        mm = 30
        ss = 00
    }
    else{
        hh+=1
        mm = 00
        ss = 00    
    }
     
    var o = {
        "Y+": d.getYear() + 1900,
        "M+": d.getMonth() + 1,
        "d+": d.getDate(),
        "h+": hh,
        // "m+": d.getMinutes(),
        // "s+": d.getSeconds()
        "m+": mm,
        "s+": ss
    };
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 4) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    }
    fmt = fmt.replace(/-/g, '/');
    return fmt;
  };

  //定義初始化界面資料
  var storage = storages.create("tmalltaobaohelper.byfly");
  threads.start(NTP.sync);

  //初始化蘇寧界面資料
setTimeout(initConfig, 500);

function initConfig() {  

    ui.startTime.setText(getTime());      
    ui.interval.setText(storage.get("interval", "100").toString());
    ui.lastTime.setText(storage.get("lastTime", "10").toString());      
    ui.delaytime.setText(storage.get("delaytime", "800").toString());       
  }
  //初始化淘寶界面
setTimeout(initConfig_two, 500);
function initConfig_two() {
    NTPClockOffset = storage.get("NTPClockOffset", "0");
    NTPClockDelay = storage.get("NTPClockDelay", "0");
if (!NTPClockOffset) {
    NTPClockOffset = 0;
} else {
    NTPClockOffset = parseInt(NTPClockOffset.split("|")[0]);
}
if (NTPClockOffset < 0) {
    var offset_str = "慢了" + -NTPClockOffset + 'ms,'
} else {
    offset_str = "快了" + NTPClockOffset + 'ms,'
}
if (NTPClockDelay < 50) {
    var good_str = "網速評估:"+"您的網路延遲低于50ms,非常優秀!"
} 
else if (NTPClockDelay < 100) {
    var good_str = "網速評估:"+"您的網路延遲低于100ms,優秀!"
} 
else if (NTPClockDelay>100 && NTPClockDelay<200) {
    var good_str = "網速評估:"+"您的網路延遲高于100ms,搶購可能會有影響!"
} 
else {
    good_str = "網速評估:"+"您的網路質量不佳,建議切換網路!"
}

ui.networkTesttwo.on("click",function(){
    ui.networkTesttwo.setText("時間校準:"+"本地時間比淘寶" + offset_str +"已經為您校準了淘寶時間!"+'\n'+ "網路延遲:" + NTPClockDelay+'\n'+good_str );
    });       

    ui.startTime_two.setText(getTime());
    ui.interval.setText(storage.get("interval", "100").toString());
    ui.lastTime_two.setText(storage.get("lastTime_two", "10").toString());   
    ui.delaytime_two.setText(storage.get("delaytime_two", "200").toString()); 
    ui.count.setText(storage.get("count", "3").toString());

  }
   
//初始化京東界面資料
  setTimeout(initConfig_tree, 500);
  function initConfig_tree() {

    ui.startTime_tree.setText(getTime());
    ui.interval.setText(storage.get("interval", "100").toString());
    ui.lastTime_tree.setText(storage.get("lastTime_tree", "10").toString());      
    ui.delaytime_tree.setText(storage.get("delaytime_tree", "800").toString());
     
  }

//獲取京東時間
var thread = threads.start(function(){ //頁面網路延時提示
timestamp1 = new Date().getTime();
r = http.get(“https://a.jd.com//ajax/queryServerData.html”);
timestamp2 = new Date().getTime()
JDnetwork_delay = timestamp2-timestamp1 //網路延時
var objj = r.body.json();
JDtime_difference = timestamp1-objj.serverTime//網路時間差
if (JDtime_difference < 0) {
var JDoffset_str = “慢了” + -JDtime_difference + ‘ms,’
} else {
JDoffset_str = “快了” + JDtime_difference + ‘ms,’
}
if (JDnetwork_delay < 50) {
var JDgood_str = “網速評估:”+“您的網路延遲低于50ms,非常優秀!”
}
else if (JDnetwork_delay < 100) {
var JDgood_str = “網速評估:”+“您的網路延遲低于100ms,優秀!”
}
else if (JDnetwork_delay>100 && JDnetwork_delay<200) {
var JDgood_str = “網速評估:”+“您的網路延遲高于100ms,搶購可能會有影響!”
}
else {
JDgood_str= “網速評估:”+“您的網路質量不佳,建議切換網路!”
}
ui.networkTest_tree.on(“click”,function(){
ui.networkTest_tree.setText(“時間校準:”+“本地時間比京東” + JDoffset_str+“已經為您校準了京東時間!”+’\n’+“網路延時:”+JDnetwork_delay+’\n’+JDgood_str);
});

});

//獲取蘇寧時間
var thread2 = threads.start(function(){
timestamp1 = new Date().getTime();
recode_suning = http.get(“http://quan.suning.com/getSysTime.do”);
timestamp2 = new Date().getTime();
SNnetwork_delay = timestamp2-timestamp1
var suningTime = recode_suning.body.json();
var nowdate = suningTime.sysTime2;
var nowdate2 = nowdate.replace(/-/g,’/’);
var nowtime = new Date(nowdate2).getTime();
SNtime_difference =timestamp1 - nowtime ;
if (SNtime_difference < 0) {
var SNoffset_str = “慢了” + -SNtime_difference + ‘ms,’
} else {
SNoffset_str = “快了” + SNtime_difference + ‘ms,’
}
if (SNnetwork_delay< 50) {
var SNgood_str = “網速評估:”+“您的網路延遲低于50ms,非常優秀!”
}
else if (SNnetwork_delay < 100) {
var SNgood_str = “網速評估:”+“您的網路延遲低于100ms,優秀!”
}
else if (SNnetwork_delay>100 && SNnetwork_delay<200) {
var SNgood_str = “網速評估:”+“您的網路延遲高于100ms,搶購可能會有影響!”
}
else {
SNgood_str= “網速評估:”+“您的網路質量不佳,建議切換網路!”
}
ui.networkTest.on(“click”,function(){
ui.networkTest.setText(“時間校準:”+“本地時間比蘇寧” + SNoffset_str+“已經為您校準了蘇寧時間!”+’\n’+“網路延時:”+SNnetwork_delay+’\n’+SNgood_str);
});
});

  // 時間戳轉時間字串
function add0(m) {
    return m < 10 ? '0' + m : m
}
function getNow() {
    var now = new Date().getTime();
    return now - NTPClockOffset; 
}

function formatDate(needTime) {
    //needTime是整數,否則要parseInt轉換
    var time = new Date(parseInt(needTime));
    var h = time.getHours();
    var mm = time.getMinutes();
    var s = time.getSeconds();
    var S = time.getMilliseconds();
    return add0(h) + ':' + add0(mm) + ':' + add0(s)+":"+add0(S);
}


  // 檢測時間字串是否有效
function strDateTime(str) {
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    var r = str.match(reg);
    if (r == null) return false;
    var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
    return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
}
 
// 蘇寧程式主要邏輯
ui.ok.click(function () {
    // 檢查無障礙服務
    if (auto.service == null) {
        toast("請先開啟無障礙服務!");
        return;
    }
//接收界面資料
startTime = ui.startTime.getText().toString();

interval = parseInt(ui.interval.getText());
lastTime = parseInt(ui.lastTime.getText());
delaytime = parseInt(ui.delaytime.getText());
if (!strDateTime(startTime)) {
    ui.startTime.setError("日期錯誤,請重新輸入!");
    return;
}
//傳遞界面資料      
storage.put("interval", interval);
storage.put("lastTime", lastTime);
storage.put("delaytime", delaytime);

if(ui.ok.getText()=="開始運行") {
    ui.ok.setText("停止運行");    
    model_change();
    device.keepScreenOn()//保持螢屏常亮
}else{
    ui.ok.setText("開始運行");
    console.clear();
    console.hide();
    threads.shutDownAll();
    device.cancelKeepingAwake();   
    }

});
function model_change()
{
if(平臺類別2==“蘇寧頁面”){
device.keepScreenOn();
threads.start(main);
}
if(平臺類別2==“蘇寧購物車”){
device.keepScreenOn();
threads.start(sn購物車);
}
}

var storage3 = storages.create("這個是一個檔案名2");
for (i = 0; i < 7; i++) {
var content2 = storage3.get("password_" + (i + 1));
 
if (content2) {
    ui["password_" + (i + 1)].setText(content2);
}
}

var storage6 = storages.create("這個是一個檔案名6");
for (i = 0; i < 2; i++) {
var content6 = storage6.get("X" + (i + 1));
 
if (content6) {
    ui["X" + (i + 1)].setText(content6);
}}

// 淘寶程式主要邏輯
ui.ok_two.click(function () {
 // 檢查無障礙服務
 if (auto.service == null) {
        toast("請先開啟無障礙服務!");
        return;
    }
    arr = new Array();
    for (i = 0; i < 7; i++) {
    var content2 = ui["password_" + (i + 1)].getText() + "";
    storage3.put("password_" + (i + 1), content2);
    arr.push(content2);
    };

    arr6 = new Array();
    for (i = 0; i < 2; i++) {
    var content6 = ui["X" + (i + 1)].getText() + "";
    storage6.put("X" + (i + 1), content6);
    arr6.push(content6);
    };
//接收界面資料
    startTime_two = ui.startTime_two.getText().toString();
    interval = parseInt(ui.interval.getText());
    count= parseInt(ui.count.getText());
    lastTime_two = parseInt(ui.lastTime_two.getText());
    delaytime_two = parseInt(ui.delaytime_two.getText());
    if (!strDateTime(startTime_two)) {
        ui.startTime_two.setError("日期錯誤,請重新輸入!");
        return;
    }
    //傳遞界面資料      
    storage.put("interval", interval);
    storage.put("count", count);
    storage.put("lastTime_two", lastTime_two);
    storage.put("delaytime_two", delaytime_two);

    //按下開始運行

      if(ui.ok_two.getText()=="開始運行") {
        var X軸判斷 = ui.X1.text();
        var Y軸判斷 = ui.X2.text();        
        if(X軸判斷.length==0&&連續提交=="有")
        {
            toast("您選擇了連續提交模式,但未輸入X軸坐標!")
            ui.X1.setError("您選擇了連續提交模式,但未輸入X軸坐標!")
            return;
        }
        if(Y軸判斷.length==0&&連續提交=="有")
        {
            toast("您選擇了連續提交模式,但未輸入Y軸坐標!")
            ui.X2.setError("您選擇了連續提交模式,但未輸入Y軸坐標!")
            return;
        }
        if(X軸判斷.length>=5&&連續提交=="有") {
            ui.X1.setError("您的坐標有誤,請重新輸入!");
            return;
        }     
        if(Y軸判斷.length>=5&&連續提交=="有") {
            ui.X2.setError("您的坐標有誤,請重新輸入!");
            return;              
        } 
    if(連續提交=="無"||連續提交=="有"){
            ui.ok_two.setText("停止運行");    
            threads.start(main_two);
            device.keepScreenOn()//保持螢屏常亮
    }}else{
        ui.ok_two.setText("開始運行");
        console.clear();
        console.hide();
        threads.shutDownAll();
        device.cancelKeepingAwake();   
        }   

});

 // 京東程式主要邏輯
 ui.ok_tree.click(function () {
    // 檢查無障礙服務
    if (auto.service == null) {
        toast("請先開啟無障礙服務!");
        return;
}

//接收界面資料
startTime_tree = ui.startTime_tree.getText().toString();
interval = parseInt(ui.interval.getText());
lastTime_tree = parseInt(ui.lastTime_tree.getText());
delaytime_tree = parseInt(ui.delaytime_tree.getText());
if (!strDateTime(startTime_tree)) {
    ui.startTime.setError("日期錯誤,請重新輸入!");
    return;
}
//傳遞界面資料      
storage.put("interval", interval);
storage.put("lastTime_tree", lastTime_tree);
storage.put("delaytime_tree", delaytime_tree);

   //按下開始運行
if (ui.ok_tree.getText().toString() === '開始運行') {
    // 一直保持螢屏常亮
    device.keepScreenOn();
    model_change2();
    ui.ok_tree.setText('停止運行');
} else {
    console.clear();
    console.hide();
    threads.shutDownAll();
    device.cancelKeepingAwake();
    ui.ok_tree.setText('開始運行');
}

});

function model_change2()
{
if(平臺類別==“京東頁面”){
device.keepScreenOn();
threads.start(main_tree);
}
if(平臺類別==“京東購物車”){
device.keepScreenOn();
threads.start(京東購物車);
}
if(平臺類別==“京東BP鏈接”){
device.keepScreenOn();
threads.start(京東BP鏈接);
}
}

  //這是蘇寧主程式 
  function main() {
    var middle = device.width / 2 -400;      
    console.setPosition(middle, 0);
    console.setGlobalLogConfig({ "file": "/sdcard/日志.txt" });
    console.show();
    var DetailPage =0;
    var notDetailPage = 0;
    var notInDetailPage = 0

    logWithTime("歡迎使用蘇寧秒殺助手"); 
    sleep(800); 
    logWithTime("請勿用于非法用途");  
    sleep(800); 
    logWithTime("請進入所要搶購商品的詳情頁");
    sleep(800); 
        
    var startTime2 = new Date(Date.parse(startTime)).getTime();
    var endTime = new Date(startTime2.valueOf() + lastTime * 1000).getTime();
    var Panningingtime = startTime2 - delaytime;


    reviewtime();
     //判斷實際時間是否大于搶購時間
function reviewtime(){
    var shijian = getNow();
       if (shijian > Panningingtime) {
            console.warn("您的時間已經錯過了哦,請重新輸入時間!");
            sleep(2000);
            console.clear();
            console.hide();
            threads.shutDownAll();
        }
       if(shijian < Panningingtime){
            logWithTime("您的搶購時間為:" + formatDate(Panningingtime));
            logWithTime("距離搶購時間還剩"+(startTime2-shijian)/1000+"秒"+"請耐心等待");
            }
        }
         // 檢測是否在商品詳情頁
x = setInterval(function () {
    var t = getNow();
    if (t < Panningingtime) {
        if (className("android.widget.TextView").text("已選").exists()) {
            if (DetailPage === 0) {
                logWithTime("已進入商品詳情頁,請等待");
                DetailPage++;
                notDetailPage = 0
            }

        } else {
            if (notInDetailPage === 0) {
                logWithTime("未進入商品詳情頁,請前往,否則無法進行購買!");
                DetailPage = 0;
                notInDetailPage++
            }
        }
    } else {
        not_in_Detail_Page = 0;  // 商品詳情頁狀態復位
        clearInterval(x)
    }

}, 500);

z = setInterval(function () {
var t = getNow();
if(t >= Panningingtime && t < endTime){
logWithTime(“開始搶購”)
蘇寧頁面();
clearInterval(z);
}
},10)
};
function 蘇寧頁面()
{
var Crowding = 0;
var endTime = lastTime*1000;
// 如果在搶購商品詳情頁面
threads.start(function(){
setInterval(function(){
if(className(“android.widget.Button”).text(“立即搶購”).exists()){
logWithTime(“準備點擊搶購中”);
click(“立即搶購”);
click(“確定”);
click(“提交訂單”);
logWithTime(“準備點擊確定”);
}
}, 10);
});

    threads.start(function(){
        setInterval(function(){
        if(className("android.widget.TextView").text("立即搶購").exists())
        {
            logWithTime("準備點擊搶購中");
            click("立即搶購"); 
            click("提交訂單"); 
            logWithTime("準備提交訂單");   
        }   
    }, 10);
    });  

    threads.start(function(){
        setInterval(function(){  
    if(className("android.widget.TextView").textContains("立即購買").exists()){
        logWithTime("準備點擊購買中");
        click("立即購買");
        click("確定");
        click("提交訂單"); 
        logWithTime("準備點擊確定");
    }
    }, 10);
    });  
    threads.start(function(){
        setInterval(function(){
    if(className("android.widget.TextView").textContains("馬上搶").exists()){
        logWithTime("準備點擊馬上搶");
        click("馬上搶")
        logWithTime("馬上搶已點擊");
        }
    }, 10);
    });  
         // 如果在確定界面
    threads.start(function(){
        setInterval(function(){
    if (className("android.widget.TextView").text("確定").exists()) {
        click("確定");
        logWithTime("確定已點擊");
    }
    }, 10);
    });
        // 如果在提交訂單界面
    threads.start(function(){
        setInterval(function(){
     if (className("android.widget.TextView").text("提交訂單").exists()) {
        logWithTime("正在嘗試提交訂單");
        click("提交訂單");
        logWithTime("訂單已提交");
    }
    }, 10);
    });
    threads.start(function(){
        setInterval(function(){
    if (className("android.widget.TextView").text("知道了").exists()) {
        className("android.widget.TextView").text("知道了").findOne().click();
        Crowding++;
        logWithTime("第" + Crowding + "次擁擠了,再試一次吧!");             
    }
    }, 10);
    });
        // 搶購成功
    threads.start(function(){
            setInterval(function(){
    if (className("android.widget.TextView").text("蘇寧收銀臺").exists()) {
        logWithTime("搶購成功!請支付!");
        device.cancelKeepingAwake(); 
        Panic_buying_end();             
    }
    }, 10);
    });
    threads.start(function(){
        setInterval(function(){
        sleep(endTime)
        logWithTime("超出預定搶購時長,搶購結束");
        device.cancelKeepingAwake();
        Panic_buying_end();
    }, 10);
    });

}
//這是淘寶主程式
function main_two() {
var middle = device.width / 2 -400;
console.setPosition(middle, 0);
console.setGlobalLogConfig({ “file”: “/sdcard/日志.txt” });
console.show();
var DetailPage =0;
var notDetailPage = 0;
var notInDetailPage = 0
var notChecked = 0;

logWithTime("歡迎使用淘寶秒殺助手"); 
sleep(800); 
logWithTime("請勿用于非法用途");  
sleep(800); 
logWithTime("本模式屬于淘寶購物車搶購模式");  
sleep(800);
logWithTime("請您進入購物車,否則無法進行購買!");
sleep(800); 
    
var startTime2 = new Date(Date.parse(startTime_two)).getTime();
var endTime = new Date(startTime2.valueOf() + lastTime_two * 1000).getTime();
var Panningingtime = startTime2 - delaytime_two;

reviewtime();
 //判斷實際時間是否大于搶購時間

function reviewtime(){
var tt = getNow();
if (tt > Panningingtime) {
console.warn(“您的時間已經錯過了哦,請重新輸入時間!”);
sleep(2000);
console.clear();
console.hide();
threads.shutDownAll();
}
if (tt < Panningingtime){
logWithTime(“您的搶購時間為:” + formatDate(Panningingtime));
logWithTime(“距離搶購時間還剩”+(startTime2-tt)/1000+“秒”+“請耐心等待”);
}
}
// 檢測是否在商品詳情頁
x = setInterval(function () {
var t = getNow();
if (t < Panningingtime) {
if (id(“button_cart_charge”).exists() || className(“android.widget.TextView”).text(“全選”).exists()) {
if (DetailPage === 0) {
logWithTime(“已進入購物車,請耐心等待…”);
DetailPage++;
notDetailPage = 0
}

    } else {
        if (notInDetailPage === 0) {
            logWithTime("未進入購物車,請前往,否則無法進行購買!");
            DetailPage = 0;
            notInDetailPage++
        }
    }
} else {
    not_in_Detail_Page = 0;  // 商品詳情頁狀態復位
    clearInterval(x)
}
//判斷是否勾選商品
if(提前重繪=="有")
{
    if (notChecked === 0){
        notChecked = 1
    logWithTime("請您勿勾選商品!");
    sleep(1000)
    logWithTime("需要提前重繪,將自動隱藏控制臺!");
    console.hide()
    }
} 
if(手動勾選 == "有"){
    if (className("android.widget.TextView").text("結算").exists()) {
            found = true;
        if (notChecked === 0){
            notChecked = 1
            desc("全選").findOne().click()
            logWithTime("檢測到您未勾選商品,以為您自動勾選!");
        }
    }
}  
else{
    if (notChecked === 0){
        notChecked = 1
    logWithTime("請您勿勾選商品!");
    }
}

}, 500);
z = setInterval(function () {
var t = getNow();
if(t >= Panningingtime && t < endTime){
logWithTime(“開始搶購”)
淘寶購物車();
clearInterval(z);
}
},10)
};
function 淘寶購物車()
{
var i = 1;
var Crowding = 0;
var Success = 0;
var found = false;
var endTime = lastTime_two * 1000
var password_1 = ui.password_1.text()*1;
var password_2 = ui.password_2.text()*1;
var password_3 = ui.password_3.text()*1;
var password_4 = ui.password_4.text()*1;
var password_5 = ui.password_5.text()*1;
var password_6 = ui.password_6.text()*1;
var 提交訂單X軸 = ui.X1.text()*1;
var 提交訂單Y軸 = ui.X2.text()*1;
var 價格值 = ui.password_7.text()
var count = ui.count.text()*1
if(提前重繪==“有”){
threads.start(function(){
setInterval(function(){
if(開啟重繪==“有”){
if(className(“android.widget.TextView”).text(“結算”))
{
logWithTime(“開始重繪”);
gesture(400, [500, 500], [500, 900])
logWithTime(“已重繪”);
開啟重繪 = “無”
}
}
},10)
})

    threads.start(function(){
        setInterval(function(){
     if(className("android.widget.TextView").text("加載完成").exists()){
        logWithTime("準備勾選");
        className("android.view.View").desc("勾選按鈕,商品未選中,雙擊選中商品").findOne().click()
        logWithTime("已勾選");
        }
    },10)
    })
    }      

if(自動勾選 == "有"){
    var 全選 = "有"
    threads.start(function(){
        setInterval(function(){ 
        if(全選 == "有"){
    if (className("android.widget.CheckBox").desc("全選").exists()&&className("android.widget.TextView").textContains("結算").exists()) { 
        desc("全選").findOne().click() 
        全選 = "無"
    }}
    },100)
    })

    var 校驗價格 = "真"
    if(校驗價格 == "真"){
        threads.start(function(){
            setInterval(function(){ 
            if(className("android.widget.TextView").text("¥"+價格值).depth(15).exists()&&className("android.widget.TextView").textContains("結算(").exists())
            {
                logWithTime("已找到符合預定價格的商品,開始結算!");
                className("android.widget.TextView").textContains("結算(1)").findOne().click();
            }        
            else if(className("android.widget.TextView").textContains("結算(").exists())
            {
                全選 = "有"
                logWithTime("未找到符合預定價格的商品,不結算,取消再次勾選!");
                desc("取消全選").findOne().click()
            }          
    },200)
    })
    }
    }else
    {
        threads.start(function(){
            setInterval(function(){
        if (className("android.widget.TextView").textContains("結算(").exists()) {      
               logWithTime("準備點擊結算");
               className("android.widget.TextView").textContains("結算(").findOne().click();
               found = true; 
               logWithTime("結算已點擊"); 
               if(測驗 =="有") 
               {    sleep(100) 
                   logWithTime("測驗模式不提交訂單!");
                   Panic_buying_end();
               }      
            }
        },10)
        })
    }

threads.start(function(){
    setInterval(function(){ 
if (className("android.widget.TextView").text("失效寶貝").exists() && className("android.widget.TextView").text("商品不能購買").exists()&&count>0) {
    logWithTime("檢測到商品已失效或無法購買,即將回傳結算界面開始重試!");
        logWithTime("已回傳結算界面,準備重試!");
        sleep(random(10,30))
        back();
        count = count - 1;
        logWithTime("已重試"+i+"次");
        i++;
}
}, 100);
});
//不測驗時才提交訂單
var 提交訂單 = "真"
if(測驗 =="無"&&連續提交=="有") { 
    threads.start(function(){
        setInterval(function(){
if(className("android.widget.TextView").text("提交訂單").exists()&&提交訂單 == "真")
    {
        var x=1             
    while(true){
        if(x<50){
            press(提交訂單X軸,提交訂單Y軸,10)
            x++;
            logWithTime("正在嘗試提交訂單");
        }
    if(x==50){
        break
        }
     }
     提交訂單 = "假"
    }
    },10)
    })
    }
    if(測驗 =="無"&&連續提交=="無") { 
        threads.start(function(){
            setInterval(function(){ 
     if (className("android.widget.TextView").text("提交訂單").exists()&&className("android.widget.TextView").text("配送方式").exists()) {
            logWithTime("正在嘗試提交訂單");
            className("android.widget.TextView").text("提交訂單").findOne().click();
            logWithTime("訂單已提交");             
            }
        }, 10);
        });
        }
    threads.start(function(){
        setInterval(function(){
    if (className("android.widget.TextView").textContains("加載中").exists()) {
        if (Crowding === 0){
            Crowding = 1
            logWithTime("頁面加載中");
            }
            found = true;            
        }
    }, 10);
});


threads.start(function(){
    setInterval(function(){ 
if (className("android.widget.TextView").text("立即付款").exists()) {
    if(自動付款 == "無"){
            logWithTime("搶購成功!請支付!");
            found = true;
            Success++;
            device.cancelKeepingAwake();  
            Panic_buying_end();             
        }}
        if(自動付款 == "有")
        {
            click("立即付款") 
        }
    }, 200);
});
var 密碼1 = "真"
var 密碼2 = "假"
var 密碼3 = "假"
var 密碼4 = "假"
var 密碼5 = "假"
var 密碼6 = "假"
threads.start(function(){
    setInterval(function(){ 
    if (className("android.widget.TextView").text("請輸入支付密碼").exists()) { 
        if(密碼1 == "真"&&className("android.widget.TextView").text(password_1).exists()){click(password_1);密碼2 = "真";sleep(10)}
        if(密碼2 == "真"&&className("android.widget.TextView").text(password_2).exists()){click(password_2);密碼3 = "真";sleep(10)}
        if(密碼3 == "真"&&className("android.widget.TextView").text(password_3).exists()){click(password_3);密碼4 = "真";sleep(10)}
        if(密碼4 == "真"&&className("android.widget.TextView").text(password_4).exists()){click(password_4);密碼5 = "真";sleep(10)}
        if(密碼5 == "真"&&className("android.widget.TextView").text(password_5).exists()){click(password_5);密碼6 = "真";sleep(10)}
        if(密碼6 == "真"&&className("android.widget.TextView").text(password_6).exists()){click(password_6);Panic_buying_end()}
    } 
},300)
})
threads.start(function(){
    setInterval(function(){ 
    if (className("android.view.View").desc("查看訂單").findOne().parent().exists()) { 
        logWithTime("支付成功!");
        Panic_buying_end()
    }
},10)
})  
threads.start(function(){
    setInterval(function(){ 
    sleep(endTime)
    logWithTime("超出預定搶購時長,搶購結束");
    device.cancelKeepingAwake();
    Panic_buying_end();           
}, 10);
});  

}
//這是京東主程式
function main_tree() {
var middle = device.width / 2 -400;
console.setPosition(middle, 0);
console.setGlobalLogConfig({ “file”: “/sdcard/日志.txt” });
console.show();
var DetailPage =0;
var notDetailPage = 0;
var notInDetailPage = 0

logWithTime("歡迎使用京東秒殺助手"); 
sleep(800); 
logWithTime("請勿用于非法用途");  
sleep(800); 
logWithTime("請您進入商品詳情頁,否則無法進行購買!");
sleep(800); 
    
var startTime2 = new Date(Date.parse(startTime_tree)).getTime();
var endTime = new Date(startTime2.valueOf() + lastTime_tree* 1000).getTime();
var Panningingtime = startTime2 - delaytime_tree;


reviewtime();
 //判斷實際時間是否大于搶購時間

function reviewtime(){
var tt = getNow();
if (tt > Panningingtime) {
console.warn(“您的時間已經錯過了哦,請重新輸入時間!”);
sleep(2000);
console.clear();
console.hide();
threads.shutDownAll();
}
if (tt < Panningingtime){
logWithTime(“您的搶購時間為:” + formatDate(Panningingtime));
logWithTime(“距離搶購時間還剩”+(startTime2-tt)/1000+“秒”+“請耐心等待”);
}
}
// 檢測是否在商品詳情頁
x = setInterval(function () {
var t = getNow();
if (t < Panningingtime) {
if (className(“android.widget.LinearLayout”).clickable(true).depth(9).exists()) {
if (DetailPage === 0) {
logWithTime(“已進入商品詳情頁,請耐心等待…”);
DetailPage++;
notDetailPage = 0
}

    } else {
        if (notInDetailPage === 0) {
            logWithTime("未進入商品詳情頁,請前往,否則無法進行購買!");
            DetailPage = 0;
            notInDetailPage++
        }
    }
} else {
    not_in_Detail_Page = 0;  // 商品詳情頁狀態復位
    clearInterval(x)
}

}, 500);

z = setInterval(function () {
var t = getNow();
if(t >= Panningingtime && t < endTime){
logWithTime(“開始搶購”)
京東頁面();
clearInterval(z);
}
},10)
};
function 京東頁面()
{
var endTime = lastTime_tree * 1000;
var Crowding = 0;
threads.start(function(){
setInterval(function(){
if (text(“立即搶購”).exists()) {
logWithTime(“準備點擊搶購”);
click(“立即搶購”)
logWithTime(“立即搶購已點擊”);
}
},10)
})
threads.start(function(){
setInterval(function(){
if (text(“立即購買”).exists()) {
logWithTime(“準備點擊購買”);
click(“立即購買”)
logWithTime(“立即購買已點擊”);
}
},10)
})
threads.start(function(){
setInterval(function(){
if (text(“提交訂單”).exists()) {
logWithTime(“頁面加載中”);
logWithTime(“正在嘗試提交訂單”);
click(“提交訂單”);
logWithTime(“訂單已提交”);
}
},10)
})
threads.start(function(){
setInterval(function(){
if (text(“我知道了”).exists()) {
click(“我知道了”)
Crowding++;
logWithTime(“第” + Crowding + “次擁擠了,再試一次吧!”);
}
},10)
})
threads.start(function(){
setInterval(function(){
if (text(“確定”).exists()) {
logWithTime(“準備點擊確定”);
click(“確定”)
logWithTime(“確定已點擊”);
}
},10)
})
threads.start(function(){
setInterval(function(){
if (className(“android.widget.TextView”).text(“京東收銀臺”).exists()) {
logWithTime(“搶購成功!請支付!”);
device.cancelKeepingAwake();
Panic_buying_end();
}
},10)
})
threads.start(function(){
setInterval(function(){
sleep(endTime)
logWithTime(“超出預定搶購時長,搶購結束”);
device.cancelKeepingAwake();
Panic_buying_end();
},10)
})
}
//這是蘇寧購物車主程式
function sn購物車() {
var middle = device.width / 2 -400;
console.setPosition(middle, 0);
console.setGlobalLogConfig({ “file”: “/sdcard/日志.txt” });
console.show();
var DetailPage =0;
var notDetailPage = 0;
var notInDetailPage = 0

    logWithTime("歡迎使用蘇寧秒殺助手"); 
    sleep(800); 
    logWithTime("請勿用于非法用途");  
    sleep(800); 
    logWithTime("請進入購物車");
    sleep(800); 
        
    var startTime2 = new Date(Date.parse(startTime)).getTime();
    var endTime = new Date(startTime2.valueOf() + lastTime * 1000).getTime();
    var Panningingtime = startTime2 + delaytime;


    reviewtime();
     //判斷實際時間是否大于搶購時間
function reviewtime(){
    var shijian = getNow();
       if (shijian > Panningingtime) {
            console.warn("您的時間已經錯過了哦,請重新輸入時間!");
            sleep(2000);
            console.clear();
            console.hide();
            threads.shutDownAll();
        }
       if(shijian < Panningingtime){
            logWithTime("您的搶購時間為:" + formatDate(Panningingtime));
            logWithTime("距離搶購時間還剩"+(startTime2-shijian)/1000+"秒"+"請耐心等待");
            }
        }
         // 檢測是否在商品詳情頁
x = setInterval(function () {
    var t = getNow();
    if (t < Panningingtime) {
        if (className("android.widget.TextView").text("購物車").exists()) {
            if (DetailPage === 0) {
                logWithTime("已進入購物車,請等待");
                DetailPage++;
                notDetailPage = 0
            }

        } else {
            if (notInDetailPage === 0) {
                logWithTime("未進入購物車,請前往,否則無法進行購買!");
                DetailPage = 0;
                notInDetailPage++
            }
        }
    } else {
        not_in_Detail_Page = 0;  // 商品詳情頁狀態復位
        clearInterval(x)
    }

}, 500);

z = setInterval(function () {
    var t = getNow();
    if(t >= Panningingtime && t < endTime){                
        logWithTime("開始搶購")
        SN購物車();
        clearInterval(z);        
    }  
  },100)

};
function SN購物車()
{
var Crowding = 0;
var endTime = lastTime * 1000;
// 如果在購物車
var 勾選 = “有”
threads.start(function(){
setInterval(function(){
if(勾選 ==“有”){
if(className(“android.widget.CheckBox”).enabled(true).exists()){
className(“android.widget.CheckBox”).enabled(true).findOne().click()
勾選 = “無”
click(“去結算”)
click(“提交訂單”)
}}
},10)
})
// 如果在提交訂單界面
threads.start(function(){
setInterval(function(){
if (className(“android.widget.TextView”).text(“提交訂單”).exists()) {
logWithTime(“正在嘗試提交訂單”);
click(“提交訂單”);
logWithTime(“訂單已提交”);
}
}, 10);
});
threads.start(function(){
setInterval(function(){
if(className(“android.widget.TextView”).text(“去結算(1)”).exists()){
logWithTime(“正在嘗試結算”);
click(“去結算”)
sleep(random(10,25))
logWithTime(“已結算”);
}
if(className(“android.widget.TextView”).text(“去結算(2)”).exists()){
logWithTime(“正在嘗試結算”);
click(“去結算”)
sleep(random(10,25))
logWithTime(“已結算”);
}
if(className(“android.widget.TextView”).text(“去結算(3)”).exists()){
logWithTime(“正在嘗試結算”);
click(“去結算”)
sleep(random(10,25))
logWithTime(“已結算”);
}
}, 50);
});
//需要領卷購買
threads.start(function(){
setInterval(function(){
if(className(“android.widget.TextView”).text(“領券結算(1)”).exists()){
logWithTime(“正在嘗試結算”);
click(“領券結算(1)”)
sleep(random(10,25))
logWithTime(“已結算”);
}
if(className(“android.widget.TextView”).text(“領券結算(2)”).exists()){
logWithTime(“正在嘗試結算”);
click(“領券結算(2)”)
sleep(random(10,25))
logWithTime(“已結算”);
}
if(className(“android.widget.TextView”).text(“領券結算(3)”).exists()){
logWithTime(“正在嘗試結算”);
click(“領券結算(3)”)
sleep(random(10,25))
logWithTime(“已結算”);
}
}, 50);
});
threads.start(function(){
setInterval(function(){
if (className(“android.widget.TextView”).text(“知道了”).exists()) {
className(“android.widget.TextView”).text(“知道了”).findOne().click();
Crowding++;
logWithTime(“第” + Crowding + “次擁擠了,再試一次吧!”);
}
}, 200);
});
// 搶購成功
threads.start(function(){
setInterval(function(){
if (className(“android.widget.TextView”).text(“蘇寧收銀臺”).exists()) {
logWithTime(“搶購成功!請支付!”);
device.cancelKeepingAwake();
Panic_buying_end()
}
}, 200);
});
threads.start(function(){
setInterval(function(){
sleep(endTime)
logWithTime(“超出預定搶購時長,搶購結束”);
device.cancelKeepingAwake();
Panic_buying_end();
},200)
});
}

//京東購物車模式
function 京東購物車() {
var middle = device.width / 2 -400;
console.setPosition(middle, 0);
console.setGlobalLogConfig({ “file”: “/sdcard/日志.txt” });
console.show();
var DetailPage =0;
var notDetailPage = 0;
var notInDetailPage = 0
var notChecked = 0

logWithTime("歡迎使用京東秒殺助手"); 
sleep(800); 
logWithTime("請勿用于非法用途");  
sleep(800); 
logWithTime("請您進入購物車,否則無法進行購買!");
sleep(800); 
    
var startTime2 = new Date(Date.parse(startTime_tree)).getTime();
var endTime = new Date(startTime2.valueOf() + lastTime_tree* 1000).getTime();
var Panningingtime = startTime2 - delaytime_tree;


reviewtime();
 //判斷實際時間是否大于搶購時間

function reviewtime(){
var tt = getNow();
if (tt > Panningingtime) {
console.warn(“您的時間已經錯過了哦,請重新輸入時間!”);
sleep(2000);
console.clear();
console.hide();
threads.shutDownAll();
}
if (tt < Panningingtime){
logWithTime(“您的搶購時間為:” + formatDate(Panningingtime));
logWithTime(“距離搶購時間還剩”+(startTime2-tt)/1000+“秒”+“請耐心等待”);
}
}
// 檢測是否在商品詳情頁
x = setInterval(function () {
var t = getNow();
if (t < Panningingtime) {
if (className(“android.widget.TextView”).text(“購物車”).depth(14).exists()) {
if (DetailPage === 0) {
logWithTime(“已進入購物車,請耐心等待…”);
DetailPage++;
notDetailPage = 0
}

    } else {
        if (notInDetailPage === 0) {
            logWithTime("未進入購物車,請前往,否則無法進行購買!");
            DetailPage = 0;
            notInDetailPage++
        }
    }
} else {
    not_in_Detail_Page = 0;  // 商品詳情頁狀態復位
    clearInterval(x)
}

if (className("android.widget.TextView").text("去結算(0)").exists()) {
    if (notChecked === 0){
        notChecked = 1
        logWithTime("檢測到您未勾選商品,將自動為您勾選!");
        click("全選")
    }
    }

}, 500);

z = setInterval(function () {
var t = getNow();
if(t >= Panningingtime && t < endTime){
logWithTime(“開始搶購”)
購物車();
clearInterval(z);
}
},10)
};
function 購物車()
{
var endTime = lastTime_tree * 1000;
var Crowding = 0

threads.start(function(){
    setInterval(function(){
if (className("android.widget.TextView").textContains("去結算(").exists()) {   
    logWithTime("準備結算");   
    className("android.widget.TextView").textContains("去結算(").findOne().click();   
    logWithTime("已結算,準備進入提交訂單頁面!");
 }
},10)
}) 
threads.start(function(){
    setInterval(function(){ 
if (className("android.widget.TextView").textContains("填寫訂單").exists()) {
    if (Crowding === 0){
        Crowding = 1
        logWithTime("頁面加載中");
        }           
    }
}, 10);
});
threads.start(function(){
    setInterval(function(){
        if (className("android.widget.Button").text("提交訂單").exists()) {
            logWithTime("正在嘗試提交訂單");
            className("android.widget.Button").text("提交訂單").findOne().click();
            logWithTime("訂單已提交!");        
            }
    },10)
}) 

    threads.start(function(){
        setInterval(function(){ 
        if (className("android.widget.TextView").text("京東收銀臺").exists()) {
                    logWithTime("搶購成功!請支付!");
                    device.cancelKeepingAwake(); 
                    Panic_buying_end();              
                }
            },10)
        })  
    threads.start(function(){
        setInterval(function(){ 
            sleep(endTime) 
            logWithTime("超出預定搶購時長,搶購結束");
            device.cancelKeepingAwake();
            Panic_buying_end(); 
        },10)
    })                          

}

//京東BP鏈接
function 京東BP鏈接() {
var middle = device.width / 2 -400;
console.setPosition(middle, 0);
console.setGlobalLogConfig({ “file”: “/sdcard/日志.txt” });
console.show();
var DetailPage =0;
var notDetailPage = 0;
var notInDetailPage = 0
var notChecked = 0

logWithTime("歡迎使用京東秒殺助手"); 
sleep(800); 
logWithTime("請勿用于非法用途");  
sleep(800); 
logWithTime("請您確認已打開BP鏈接,否則無法進行購買!");
sleep(800); 
    
var startTime2 = new Date(Date.parse(startTime_tree)).getTime();
var endTime = new Date(startTime2.valueOf() + lastTime_tree* 1000).getTime();
var Panningingtime = startTime2 - delaytime_tree;


reviewtime();
 //判斷實際時間是否大于搶購時間

function reviewtime(){
var tt = getNow();
if (tt > Panningingtime) {
console.warn(“您的時間已經錯過了哦,請重新輸入時間!”);
sleep(2000);
console.clear();
console.hide();
threads.shutDownAll();
}
if (tt < Panningingtime){
logWithTime(“您的搶購時間為:” + formatDate(Panningingtime));
logWithTime(“距離搶購時間還剩”+(startTime2-tt)/1000+“秒”+“請耐心等待”);
}
}
// 檢測是否在商品詳情頁
x = setInterval(function () {
var t = getNow();
if (t < Panningingtime) {
if (className(“android.widget.TextView”).text(“確認訂單”).depth(11).exists()) {
if (DetailPage === 0) {
logWithTime(“已進入BP鏈接,請耐心等待…”);
DetailPage++;
notDetailPage = 0
}

    } else {
        if (notInDetailPage === 0) {
            logWithTime("未進入BP鏈接,請前往,否則無法進行購買!");
            DetailPage = 0;
            notInDetailPage++
        }
    }
} else {
    not_in_Detail_Page = 0;  // 商品詳情頁狀態復位
    clearInterval(x)
}

}, 500);

z = setInterval(function () {
var t = getNow();
if(t >= Panningingtime && t < endTime){
logWithTime(“開始搶購”)
bp支付()
clearInterval(z);
}
},10)
};
function bp支付()
{
var endTime = lastTime_tree * 1000;

threads.start(function(){
    setInterval(function(){
    if(className("android.view.View").text("微信支付").exists()){
        logWithTime("準備點擊微信支付");
        className("android.view.View").text("微信支付").findOne().click()
        logWithTime("已點擊微信支付");
        }
},10)
}) 

    threads.start(function(){
        setInterval(function(){ 
        if (className("android.view.ViewGroup").depth(17).exists()) {
                    logWithTime("搶購成功!請支付!");
                    device.cancelKeepingAwake(); 
                    Panic_buying_end();              
                }
            },10)
    })  
    threads.start(function(){
        setInterval(function(){ 
            sleep(endTime) 
            logWithTime("超出預定搶購時長,搶購結束");
            device.cancelKeepingAwake();
            Panic_buying_end(); 
        },10)
    })                          

}

function 獲取坐標(){
console.show()
console.info(“請前往提交訂單頁面,否則無法獲取坐標!”)
sleep(1000)
console.info(“30秒內未進入提交訂單頁面,獲取坐標就會自動停止!”)
var 找按鈕 = “有”
threads.start(function(){
setInterval(function(){
if(className(“android.widget.TextView”).text(“提交訂單”).exists()&&找按鈕==“有”){
var 提交訂單= className(“android.widget.TextView”).text(“提交訂單”).findOne()
console.info(“您的X軸坐標是:”+提交訂單.bounds().centerX(),"\n您的Y軸坐標是:"+提交訂單.bounds().centerY())
找按鈕=“無”
console.info(“獲取坐標成功!”)
threads.shutDownAll();
}
}, 100);
});

threads.start(function(){
    setInterval(function(){ 
        sleep(30000)
        console.info("獲取坐標超時,已停止!")
        console.clear();
        console.hide();
        threads.shutDownAll();
        device.cancelKeepingAwake();   
    }, 100);
    }); 
}

//=====================================================================================拼多多
ui.pinduoduo.on(“click”, () => {
“ui”;
var ColoredButton = (function() {
//繼承ui.Widget
util.extend(ColoredButton, ui.Widget);

    function ColoredButton() {
        //呼叫父類建構式
        ui.Widget.call(this);
        //自定義屬性color,定義按鈕顏色
        this.defineAttr("color", (view, name, defaultGetter) => {
            return this._color;
        }, (view, name, value, defaultSetter) => {
            this._color = value;
            view.attr("backgroundTint", value);
        });
 
    }
    ColoredButton.prototype.render = function() {
        return (
            <button textSize="16sp" style="Widget.AppCompat.Button.Colored" w="*" h="auto"/>
        );
    }
 
    ui.registerWidget("colored-button", ColoredButton);
    return ColoredButton;
})();
var color = "#009688";
ui.statusBarColor("#ff4040")
ui.layout(
    <drawer id="drawer" >
        <vertical>
            <appbar>
                <toolbar  id="toolbar"paddingTop="5dp" title="拼多多"  bg="#ff4040" />
            </appbar>
        
            <viewpager id="viewpager">
                //拼多多界面
                <frame> //start
                <ScrollView>
                <vertical>
                <Switch id="autoService" text="無障礙服務" checked="{{auto.service != null}}" padding="8 8 8 8" textSize="13sp"/>
                <text textSize="13sp" id="networkTesttwo" textColor="#ff0000" margin="0 5" text="點擊校準拼多多時間!"/>
 
                <radiogroup orientation="horizontal">
                <radio id="model_pdd" text="搶券模式" checked="true"/>
                </radiogroup>
 
                <horizontal>
                <text textSize="13sp" textColor="black" text="提前搶購時間"/>
                <input id="delaytime_pdd" textColor="gray" inputType="number" text="200" w="80"/>
                <text textSize="13sp" textColor="black" text="毫秒"  />
                </horizontal>
 
                <horizontal>
                <text textSize="13sp" textColor="black" text="頁面搶券頻率" />
                <input id="pinlv_pdd" textColor="gray" inputType="number" text="10" w="80"/>
                <text textSize="13sp" textColor="black" text="毫秒"  />
                </horizontal>
 
                <horizontal>
                <text textSize="13sp" textColor="black" text="搶購持續時間" />
                <input id="lastTime_pdd" textColor="gray" inputType="number" text="10" w="80"/>
                <text textSize="13sp" textColor="black" text="秒"  />
                </horizontal>
 
                <text  textSize="13sp" textColor="black" text="請輸入搶購時間,格式為:2020/04/14 12:00:00"/> 
                <input hint="請輸入搶購時間,格式必須正確" textColor="gray" id="startTime_pdd" /> 
                //定義按鈕的大小顏色和文本
                <colored-button  id="ok_pdd"      layout_gravity="center"      color="#ff5500"  text="開始運行"/>                                
                </vertical>                                                                                
                </ScrollView>
                </frame> //end
 
            </viewpager>        
        </vertical>
    </drawer>
);
 
//這里是無障礙觸發方式
ui.autoService.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.autoService.checked = auto.service != null;    }); 
 
     // 獲取時分秒用于記錄日志
     function logWithTime(msg) {
        console.info(formatDate(getNow()) + " " + msg);
       }
    
       // 獲取時分秒用于記錄日志
    function logWithTime(msg) {
        console.info(formatDate(getNow()) + " " + msg);
       }
    
       // 檢測淘寶網路延遲和時間偏差
       var NTP = {
       requiredResponses: 3,
       serverTimes: [],//服務器時間
       serverDelay: [],//服務器延遲
       serverUrl: "http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp",
       resyncTime: 0, // minutes
       sync: function () {
           var offset = storage.get("NTPClockOffset");//獲取時鐘偏移
           if (offset) {
               try {
                   var t = offset.split("|")[1];
                   var d = NTP.fixTime() - parseInt(t, 10);
                   if (d < (1000 * 60 * NTP.resyncTime)) {
                       return false;
                   }
               } catch (e) {
               }
           }
           NTP.getServerTime();
       },
       getNow: function () {
           var date = new Date();
           return date.getTime();
       },
       //分析服務器回應
       parseServerResponse: function (data) {
           var NtpStartTime = storage.get("NtpStartTime");
           var NtpStopTime = NTP.getNow();
           var origtime = parseInt(data.data.t);//起始時間
           var delay = ((NtpStopTime - NtpStartTime) / 2);//延遲
           var offset = NtpStopTime - origtime - delay;//抵消
           NTP.serverTimes.push(offset);
           NTP.serverDelay.push(delay);
    
           // 因為網路問題,需要多次獲取偏移值,獲取平均值
           if (NTP.serverTimes.length >= NTP.requiredResponses) {
               var sumOffset = 0;
               var sumDelay = 0;
               var i = 0;
               for (i = 0; i < NTP.serverTimes.length; i++) {
                   sumOffset += NTP.serverTimes[i];
                   sumDelay += NTP.serverDelay[i];
               }
               var averageOffset = Math.round(sumOffset / i);
               var averageDelay = Math.round(sumDelay / i);
               storage.put("NTPClockOffset", averageOffset + '|' + NTP.fixTime()); // 保存獲得offset時的時間戳
               storage.put("NTPClockDelay", averageDelay); // 保存獲得offset時的時間戳
           } else {
               NTP.getServerTime();
           }
       },
       //獲取服務器時間并判斷是否獲取成功
       getServerTime: function () {
           var NtpStartTime = NTP.getNow();
           storage.put("NtpStartTime", NtpStartTime);
           var res = http.get(NTP.serverUrl);
           if (res.statusCode !== 200) {
               toast("獲取網路時間失敗: " + res.statusCode + " " + res.statusMessage);
               return false;
           } else {
               NTP.parseServerResponse(res.body.json());
           }
       },
       //固定時間
       fixTime: function (timeStamp) {
           if (!timeStamp) {
               timeStamp = NTP.getNow();
           }
           var offset = storage.get("NTPClockOffset");
           try {
               if (!offset) {
                   offset = 0;
               } else {
                   offset = offset.split("|")[0];
               }
               if (isNaN(parseInt(offset, 10))) {
                   return timeStamp;
               }
               return timeStamp + parseInt(offset, 10);
           } catch (e) {
               return timeStamp;
           }
       }
   };
    
    
    
    
       // 獲取默認開始時間
       function getTime() {
           var fmt = "YYYY-MM-dd hh:mm:ss";
           var d = new Date();
           var hh = d.getHours();
           var mm = d.getMinutes();
           var ss = d.getSeconds();
           if (mm < 30) {
            mm = 30
            ss = 00
           }
           else{
            hh+=1
            mm = 00
            ss = 00       
           }
            
           var o = {
               "Y+": d.getYear() + 1900,
               "M+": d.getMonth() + 1,
               "d+": d.getDate(),
               "h+": hh,
               // "m+": d.getMinutes(),
               // "s+": d.getSeconds()
               "m+": mm,
               "s+": ss
           };
           for (var k in o) {
               if (new RegExp("(" + k + ")").test(fmt)) {
                   fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 4) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
               }
           }
           fmt = fmt.replace(/-/g, '/');
           return fmt;
         };
    
            //定義初始化界面資料
            var storage = storages.create("拼多多");
            threads.start(NTP.sync);
 
             //初始化淘寶界面
       setTimeout(initConfig_pdd, 500);
       function initConfig_pdd() {     
        NTPClockOffset = storage.get("NTPClockOffset", "0");
        NTPClockDelay = storage.get("NTPClockDelay", "0");
        if (!NTPClockOffset) {
        NTPClockOffset = 0;
        } else {
        NTPClockOffset = parseInt(NTPClockOffset.split("|")[0]);
        }  
           ui.startTime_pdd.setText(getTime());
           ui.pinlv_pdd.setText(storage.get("pinlv_pdd", "100").toString());
           ui.lastTime_pdd.setText(storage.get("lastTime_pdd", "10").toString());   
           ui.delaytime_pdd.setText(storage.get("delaytime_pdd", "200").toString());  
         }
          
            // 時間戳轉時間字串
            function add0(m) {
                return m < 10 ? '0' + m : m
            }
            function getNow() {
                var now = new Date().getTime();
                return now - NTPClockOffset; 
            }
         
            function formatDate(needTime) {
                //needTime是整數,否則要parseInt轉換
                var time = new Date(parseInt(needTime));
                var h = time.getHours();
                var mm = time.getMinutes();
                var s = time.getSeconds();
                var S = time.getMilliseconds();
                return add0(h) + ':' + add0(mm) + ':' + add0(s)+":"+add0(S);
            }
         
         
              // 檢測時間字串是否有效
            function strDateTime(str) {
                var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
                var r = str.match(reg);
                if (r == null) return false;
                var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
                return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
            }
         
           // 淘寶程式主要邏輯
      ui.ok_pdd.click(function () {
        // 檢查無障礙服務
        if (auto.service == null) {
               toast("請先開啟無障礙服務!");
               return;
           }
           //接收界面資料
               startTime_pdd = ui.startTime_pdd.getText().toString();
               pinlv_pdd = parseInt(ui.pinlv_pdd.getText());
               lastTime_pdd = parseInt(ui.lastTime_pdd.getText());
               delaytime_pdd = parseInt(ui.delaytime_pdd.getText());
               if (!strDateTime(startTime_pdd)) {
                   ui.startTime_pdd.setError("日期錯誤,請重新輸入!");
                   return;
               }
               //傳遞界面資料      
               storage.put("pinlv_pdd", pinlv_pdd);
               storage.put("lastTime_pdd", lastTime_pdd);
               storage.put("delaytime_pdd", delaytime_pdd);
        
               //按下開始運行
                 if(ui.ok_pdd.getText()=="開始運行") {
                   ui.ok_pdd.setText("停止運行");    
                   threads.start(拼多多);
                   device.keepScreenOn()//保持螢屏常亮
               }else{
                   ui.ok_pdd.setText("開始運行");
                   console.clear();
                   console.hide();
                   threads.shutDownAll();
                   device.cancelKeepingAwake();   
                   }          
       }); 
function 拼多多(){
    var middle = device.width / 2 -400;      
    console.setPosition(middle, 0);
    console.setGlobalLogConfig({ "file": "/sdcard/日志.txt" });
    console.show();
    var DetailPage =0;
    var notDetailPage = 0;
    var notInDetailPage = 0
 
    logWithTime("歡迎使用拼多多搶券模式!"); 
    sleep(800); 
    logWithTime("請勿用于非法用途");  
    sleep(800); 
    logWithTime("請打開拼多多,并進入需要搶購商品的詳情頁!");
    sleep(800); 
    var startTime_pdd1 = new Date(Date.parse(startTime_pdd)).getTime();
    var endTime = new Date(startTime_pdd1.valueOf() + lastTime_pdd * 1000).getTime();
    var Panningingtime = startTime_pdd1 - delaytime_pdd; 
     
     
    reviewtime();
     //判斷實際時間是否大于搶購時間
function reviewtime(){
    var tt = getNow();
       if (tt > Panningingtime) {
            console.warn("您的時間已經錯過了哦,請重新輸入時間!");
            sleep(2000);
            console.clear();
            console.hide();
            threads.shutDownAll();
        }
       if (tt < Panningingtime){
            logWithTime("您的搶券時間為:" + formatDate(Panningingtime));
            logWithTime("距離搶券時間還剩"+(startTime_pdd1-tt)/1000+"秒"+"請耐心等待");
            }
        }
         // 檢測是否在商品詳情頁
x = setInterval(function () {
    var t = getNow();
    if (t < Panningingtime) {
        if (className("android.widget.RelativeLayout").depth(6).drawingOrder(9).exists()) {
            if (DetailPage === 0) {
                logWithTime("已進入商品詳情頁,請等待......");
                DetailPage++;
                notDetailPage = 0
            }
 
        } else {
            if (notInDetailPage === 0) {
                logWithTime("未進入商品詳情頁,請進入,否則進行搶券!");
                DetailPage = 0;
                notInDetailPage++
            }
        }
    } else {
        not_in_Detail_Page = 0;  // 商品詳情頁狀態復位
        clearInterval(x)
    }
}, 500);
 
z = setInterval(function () {
    var t = getNow();
    if(t >= Panningingtime && t < endTime){                
        logWithTime("開始搶券")
        開始搶券()
        clearInterval(z);        
    }  
  },10)      
}
 
function 開始搶券()
{
    var 頻率 = ui.pinlv_pdd.text()
    var endTime = lastTime_pdd * 1000;
     
 
    threads.start(function(){
        setInterval(function(){ 
    if(className("android.widget.TextView").text("領取").depth(8).drawingOrder(3).exists())
    {
        className("android.widget.TextView").text("領取").depth(8).drawingOrder(3).click()
    }
    },頻率);
    });
 
    threads.start(function(){
        setInterval(function(){ 
            sleep(endTime)
            logWithTime("超出預定搶購時長,搶購結束");
            device.cancelKeepingAwake();
            Panic_buying_end();                  
    },頻率)
}) 
}
});
 
function Panic_buying_end(){    
    device.cancelKeepingAwake()//關閉螢屏常亮
    logWithTime("本次搶購結束");
    threads.shutDownAll()
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/201498.html

標籤:其他

上一篇:Android撰寫電話撥號器

下一篇:RadioButton

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more