教你如何用指令碼更好的使用手機多控軟體-Total Control
[REST]Total Control &易語言的完美結合
剛拿到Total Control的時候,只用了軟體自帶的基礎電腦控制手機功能。後期由於控制的手機越來越多,就想要更多的自動化更效率更便捷的實現更多的功能。本身有一些指令碼基礎,便開始研究指令碼。幸好TC提供了Rest API,可以實現多種指令碼語言的編寫功能,剛好易語言也很容易入門。所以,把自己研究出來的幾種比較常用的功能的指令碼分享一下,希望大家喜歡:
易語言概述
易語言是一個自主開發,適合國情,不同層次不同專業的人員易學易用的漢語程式語言。
易語言降低了廣大電腦使用者程式設計的門檻,尤其是根本不懂英文或者英文了解很少的使用者,可以通過使用本語言極其快速地進入Windows程式編寫的大門。
如何用易語言結合Total Control 多控系統控制手機
Total Control REST API 採用 RESTful Web 服務框架設計,基於原有的 Total Control JS API 開發,其中一些常量被縮短以便於閱讀和編碼。
支援任意指令碼語言:如易語言,Java, Node JS, Python, Ruby, C/C++等。
支援各類作業系統:Android, iOS, Windows, macOS。
使用 Total Control REST API 控制裝置的一般步驟:
1. 獲取 Total Control 指令碼開發所用的開發 token
2. 獲取一個裝置 ID 值
3. 通過第二步的一個裝置 ID 值(單裝置),對獲取的裝置進行操作
下面我們就用易語言結合Total Control 提供的REST API來控制我們的手機。
完整示例:執行手機上的軟體com.sigma_rt.totalcontrol
.版本 2
.程式集 視窗程式集_啟動視窗
.子程式 __啟動視窗_建立完畢
.區域性變數 , 文字型
.區域性變數 token, 文字型
.區域性變數 device, 文字型
.區域性變數 j_token, 類_json, , , 用來解析獲取 token 的 json
.區域性變數 j_dev, 類_json, , , 用來解析獲取裝置ID 值的 json
.區域性變數 j_ret, 類_json, , , 用來解析 REST API 介面的json
.區域性變數 bool, 邏輯型
.區域性變數 bool_dev, 邏輯型
.區域性變數 bool_ret, 邏輯型
.區域性變數 AppName, 文字型
.區域性變數 status, 文字型
= 到文字 (編碼_編碼 (到位元組集 (“sigma:3D391497”)))
輸出除錯文字 (“將使用者名稱和密碼組裝成 sigma:3D391497 進行 編碼生成的字串為: ” + )
bool = j_token.解析 (到文字 (網頁_訪問_物件 (“https://localhost:8090/TotalControl/v1/login”, 0, , , , “Authorization:” + , , , , , , , , , )))
.如果 (bool)
輸出除錯文字 (“第一步,獲取 token,返回值為:” + j_token.取資料文字 ())
token = j_token.取通用屬性 (“['value'].token”)
輸出除錯文字 (“獲取的 token 值為: ” + token)
bool_dev = j_dev.解析 (編碼_utf8到gb2312 (到文字 (網頁_訪問_物件 (“https://localhost:8090/TotalControl/v1/devices/main?token=” + token, 0))))
.如果 (bool_dev)
輸出除錯文字 (“第二步,獲取裝置 ID 值,返回值為:” + j_dev.取資料文字 ())
device = j_dev.取通用屬性 (“['id']”)
輸出除錯文字 (“獲取的裝置 ID 值為: ” + device)
AppName = “com.sigma_rt.totalcontrol”
bool_ret = j_ret.解析 (編碼_utf8到gb2312 (到文字 (網頁_訪問_物件 (“https://localhost:8090/TotalControl/v1/devices/” + device + “/apps/” + AppName + “?state=active&token=” + token, 1))))
.如果 (bool_ret)
輸出除錯文字 (“第三步,開啟手機上指定軟體,返回值為: ” + j_ret.取資料文字 ())
status = j_ret.取屬性物件 (“status”)
.如果 (status = “true”)
輸出除錯文字 (“恭喜你,成功開啟軟體” + AppName)
.否則
輸出除錯文字 (“不好意思,失敗了!”)
.如果結束
.否則
輸出除錯文字 (“該 API 執行失敗”)
.如果結束
.否則
輸出除錯文字 (“獲取裝置 ID 值失敗”)
.如果結束
.否則
輸出除錯文字 (“獲取 token 失敗”)
.如果結束
[Java] Total Control 用程式碼實現通訊錄的匯入匯出
Total Control 在6.9.0版本提供通訊錄的匯入匯出 API 啦,我們可以用程式碼實現通訊錄的匯入匯出。
contactLoad 匯入通訊錄
原型:contactLoad(fileName, fields, opt, rule)
是否支援多裝置:不支援
適用版本: Total Control 6.9.0 及以後版本
描述:匯入通訊錄聯絡人資訊,可以匯入json和excel格式的通訊錄檔案。
引數:
path: 字串,需要匯入的通訊錄檔案路徑,檔案可以是 json 格式,也可以是字尾為 .xls 和 .xlsx 的 excel 格式,例如, "E:/File/mycontact.json"。
要匯入的檔案,必須包括聯絡人姓名和至少一個聯絡人電話號碼兩個欄位。
fields: 字元陣列,可選引數,需要匯入的欄位名稱,不指定欄位,則匯入全部欄位,如果只想匯入聯絡人名稱和聯絡人電話號碼,可這樣寫:['name', 'phone1']。
opt:物件,可選引數,設定是否需要非同步執行,不填,表示同步執行,如果需要非同步執行,這樣表示:{async: true},非同步執行,可以用 JS API "contactCheckStatus(filename)" 獲取通訊錄匯入狀態。
rule:整型,恢復通訊錄規則,不填,表示替換重複資料,其中,
1 表示保留重複資料
2 表示替換重複資料
3 表示跳過重複資料
完整示例:匯入excel格式的通訊錄檔案
// 獲取當前主控裝置物件
var device = Device.getMain();
if(!device) {
print("Failed to get device");
} else {
//匯入"E:/File/sigmaContact.xls"檔案中的聯絡人姓名和聯絡人電話號碼兩欄,{async: true}表示非同步執行,3表示跳過重複資料
var ret = device.contactLoad("E:/File/sigmaContact.xls",['name', 'phone1'],{async: true},3);
if (ret == true){
print("Successfully !!!");
} else {
print("Sorry,Failed !!!");
}
}
contactSave 匯出通訊錄
原型:contactSave(path)
是否支援多裝置:不支援
適用版本: Total Control 6.9.0 及以後版本
描述:將手機通訊錄匯出儲存到電腦上。
引數:
path:匯出的通訊錄檔案路徑,例如:E:Filecontact.json
匯出的通訊錄聯絡人資訊是以 json 格式儲存的,例如:
{
"version": "1.0.0.0",
"data": [{
"contactId": "16",
"displayName": "成都傑華科技",
"phone": [{
"phoneNumber": "028 8533 2200",
"phoneType": "2"
}],
"email": [],
"organization": [],
"iconBytes": ""
},
{
"contactId": "2",
"displayName": "華為客服",
"phone": [{
"phoneNumber": "4008308300",
"phoneType": "2"
}, {
"phoneNumber": "10086",
"phoneType": "1"
}],
"email": [{
"emailValue": "[email protected]",
"emailType": "1"
}],
"organization": [],
"iconBytes": ""
}]
}
完整示例:匯出通訊錄
// 獲取當前主控裝置物件
var device = Device.getMain();
if(!device) {
print("Failed to get device");
} else {
//將手機通訊錄備份,並將匯出的檔案儲存到電腦"E:\File\mycontact.json"。
var ret = device.contactSave("E:\File\mycontact.json");
if (ret == true){
print("Successfully !!!");
} else {
print("Sorry,Failed !!!");
}