windows之bat腳本控制adb命令實現:安卓手機定時循環開關飛行模式


一 背景

    朋友請我幫他實現一個小功能:安卓手機定時循環開關飛行模式(目的是為了保持網絡活性)

    以下是pass掉的方案:

  • 打包成系統app,必須有安卓系統簽名,再怎么花里胡哨(如放到/system/app/下等)都繞不開簽名。
  • 手機root,無論是發廣播還是android code直接runtime.exec,都離不開root權限。但考慮到他提供的樣機都不好root,刷機的形式很不走量,他的十幾部手機不可能給他挨個刷了。
  • 用傳統廣播或者api的形式,已經不可用,傳統流氓api都是安卓4以前了,現在的安卓安全性越來越高。樣機是安卓10,目前市場已經是安卓11。

 

    最后發現朋友要求也沒太苛刻,他要用這個功能的時候,只是某個特定的時間段,而且旁邊會有一台windows電腦。手機也可以用usb連接電腦。這就好辦很多了。

    某個特定時間段,說明不需要開機啟動+保活+不能卸載;有windows電腦且可以連接usb說明我們可以用adb來發送命令(且可以不用wifi連接,那么腳本更容易編寫了)

二 windows下安裝adb

    本人是用的android studio自帶的adb工具+配置環境變量。

    若非安卓開發人員請自行百度。

    最后需要能在cmd中輸入adb得到相關信息才表示安裝成功。

C:\Users\lrj>adb
Android Debug Bridge version 1.0.41
Version 31.0.2-7242960
Installed as C:\Users\lrj\AppData\Local\Android\Sdk\platform-tools\adb.exe

 

三 adb調試飛行模式

    首先把樣機的開發者模式打開(不同的記性不一樣,大多都是關於本機-安卓版本,連擊10次)

    usb連接電腦和手機,手機彈窗相關都點擊確認(密鑰獲取,打開調試,文件傳輸模式等)

    打開cmd分別輸入以下兩行命令,觀察對應的樣機是否相應的開啟\關閉飛行模式,如果是則說明調試成功。

C:\Users\lrj>adb shell settings put global airplane_mode_on 1

C:\Users\lrj>adb shell settings put global airplane_mode_on 0

四 編寫bat腳本

    原本可以寫個簡單的開關命令,然后利用windows計划任務來實現循環+定時功能。后來發現windows的計划任務沒有linux的那么精確,最小單位是一天。 而我是想實現秒級的可控可設置的功能,所以還是多寫幾行吧。

@echo off
@echo= 
@echo Lu Renjia, welcome!
@echo= 
@echo= 
set /p a=Please input the duration of flight mode(s):
set /p b=Please enter the flight mode interval(s):

:start
adb shell settings put global airplane_mode_on 1
@echo %date% %time:~0,8% plan on
@ping -n %a% 127.1 >nul
adb shell settings put global airplane_mode_on 0
@echo %date% %time:~0,8% plan off
choice /t %b% /d y /n >nul

goto start

    echo off是回文展示;

    set /p是輸入變量

    :start choice goto start是循環定時

    echo %date%是展示當前時間及相關精度

    @ping那一行相當於linux的sleep

    adb那兩行分別對應開啟/關閉飛行模式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM