import asyncio import json import websockets from androidhelper import Android droid = Android() droid.startSensingTimed(1, 150) async def get_oriention(websocket, path): while True: #orientation_result = droid.sensorsReadOrientation().orientation_result orientation_result = droid.sensorsReadOrientation().result orientation_json = json.dumps({ "azimuth": '%.4f' % orientation_result[0], "pitch": "%.4f" % orientation_result[1], "roll": orientation_result[2] }) await websocket.send(orientation_json) await asyncio.sleep(0.01) def main(): start_server = websockets.serve(get_oriention, '0.0.0.0', 8765) websocket_loop = asyncio.get_event_loop() websocket_loop.run_until_complete(start_server)
import asyncio import json import websockets from androidhelper import Android droid = Android() droid.startLocating(1, 1000) delay_time = 2.0 async def get_location(websocket, path): while True: current_location = droid.readLocation().result if not current_location: current_location = droid.getLastKnownLocation().result if ("gps" not in current_location.keys()) or ( not current_location["gps"]): delay_time = 10.0 else: delay_time = 2.0 await websocket.send(json.dumps(current_location)) await asyncio.sleep(delay_time)
class QPython3(object): # 初始化 def __init__(self): self.regex = re.compile('证码为.*【(\d+)】') # regex self.start_time = datetime.datetime.now() # Android QPython3 self.droid = Android() logging.debug("QPython3 实例初始化完成") # 读取验证码短信 def _get_sms_verify_code(self): # init self.start_time = datetime.datetime.now() code = '000000' retry = 600 # loop logging.debug("嗅探短信中……") while retry > 0: retry -= 1 # 检查 SMS code = self._check_sms_verify_code() # 有效验证码? if code != '000000': logging.debug("取得有效验证码……" + code) break else: logging.debug("未找到有效验证码……重试中, retry = {}".format(retry)) time.sleep(0.05) else: logging.debug("未找到有效验证码……" + code) return code # 读取验证码短信 def _check_sms_verify_code(self): # init code = '000000' # 获取当前的全部未读短信 smsMessageIds = self.droid.smsGetMessageIds(True) # 无短信退出 if len(smsMessageIds.result) == 0: logging.debug("无短信退出……") return code # loop for smsId in smsMessageIds.result: # get message smsMessage = self.droid.smsGetMessageById(smsId) # 时间筛选 smsTimestamp = datetime.datetime.fromtimestamp( int(smsMessage.result['date']) / 1e3) # 跳过开始时间点前 SMS if smsTimestamp < self.start_time: # print("时间跳过:", smsMessage) continue # 文字匹配 smsContent = smsMessage.result['body'] res = self.regex.search(smsContent) if res is None: # print("匹配跳过:", smsMessage) continue else: # print("发现短信:", smsMessage) code = res.group(1).strip() break return code # 获取验证码的外部调用 def get_verify_code(self): logging.debug("获取验证码中……") # 读取验证码短信 return self._get_sms_verify_code()
from androidhelper import Android import time droid = Android() droid.startSensingTimed(1, 250) time.sleep(1) s1 = droid.readSensors().result s2 = droid.sensorsGetAccuracy().result s3 = droid.sensorsGetLight().result s4 = droid.sensorsReadAccelerometer().result s5 = droid.sensorsReadMagnetometer().result s6 = droid.sensorsReadOrientation().result droid.stopSensing() print s3
from timeit import Timer from random import randrange from androidhelper import Android droid = Android() droid.dialogCreateAlert('H4 start', 'press Yes to start H4, press No to exit') droid.dialogSetPositiveButtonText('Yes') droid.dialogSetNegativeButtonText('No') droid.dialogShow() if droid.dialogGetResponse().result['which'] == 'positive': #打开储存结果文件 ftxt = open('/storage/emulated/0/qpython/result.txt', 'w') print('process H4.1') #H4.1 测量不同大小的list索引取值用时 ftxt.write('H4.1 list index time\nlen(list) time\n') droid.dialogCreateHorizontalProgress('H4.1 progress', 'H4.1 is now testing', 30) droid.dialogShow() for nlen in range(10**5, 3 * 10**6 + 1, 10**5): lst = list(range(nlen)) tmr = Timer('lst[10000]', 'from __main__ import lst') t = tmr.timeit(number=5 * 10**6) ftxt.write('%d %.5f\n' % (nlen, t)) droid.dialogSetCurrentProgress(nlen // 10**5) droid.dialogDismiss() droid.makeToast('H4.1 finish!') print('process H4.2') #H4.2 测量不同大小dict的取值&改值用时 ftxt.write('\nH4.2 time of dict index and set value\n')
def load_last_buffer(): from androidhelper import Android return Android().getClipboard().result
import socket from androidhelper import Android andro = Android() conn = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) def xor(string, key): new = "" i = 1 for char in string: new += chr(ord(char) + ord(key[i % len(key)])) i += 1 return new CHARSET = [ 'a', 'b', 'v', 'g', 'd', 'e', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'q', 'w', 'y', 'x', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' ] def getCharById(charId): return CHARSET[charId] def getIdByChar(char): i = 1 for ch in CHARSET: if (char.lower() == ch.lower()): return i i += 1
# Qpython 3, Android # 复习单词:基本原理 spaced repetition 根据你对单词的熟悉程度调整下次复习时间 # 可以手动向数据文件添加新词,添加时可只写word,不记录时间 from androidhelper import Android # Qpython提供SL4A服务 droid = Android() from random import shuffle from urllib.request import urlopen import datetime import re import math import os os.system('clear') # 清屏 path = r'/sdcard/啊学习资料/复习单词.txt' # 数据文件位置 mp3_path = r'/sdcard/qpython/word mp3/' # mp3存放路径 droid.setMediaVolume(6) #设置媒体音量 def read_file(path): with open(path, 'r', encoding='utf-8') as f: lines = f.readlines() # if len(lines) % 40 != 0: # os.system("sed -i '$d' {}".format(path)) # print('已删除最后一个未学过的单词')
from androidhelper import Android import time import os import datetime import math def getDistance(dlat, dlon): unit = math.pi * 6371000 / 180 y = dlat * unit x = dlon * unit * math.sin(dlat) return math.hypot(x, y) drd = Android() drd.wakeLockAcquirePartial() drd.startLocating(100, 2) os.system("clear") print("Waiting for location data ...") while 1: res = drd.readLocation().result if res: break time.sleep(0.1) old = None distance = 0 oldpos = None start = None
class MidiPlayer(): NOTE_DURATION = 1 CLIENT_NAME = "ppt" PORT_NAME = "Output" PRENAME = "/storage/emulated/0/qpython/projects3/ppt/ogg" POSTNAME = ".ogg" def __init__(self): self.midiout_notes = Android() for i in range(21, 108 + 1): self.midiout_notes.mediaPlay(self.PRENAME + str(i) + self.POSTNAME, str(i), False) def noteOn(self, note): # print("noteOn", note) self.midiout_notes.mediaPlayStart(str(note)) def noteOff(self, note): # print("noteOff", note) self.midiout_notes.mediaPlayPause(str(note)) self.midiout_notes.mediaPlaySeek(0, str(note)) def playSingleNote(self, note): # print("playSingleNote", note) self.noteOn(note) Timer(self.NOTE_DURATION, self.noteOff, [note]).start() def playMultipleNotesMelodicly(self, originalNotes): # print("playMultipleNotesMelodicly", notes) notes = list(originalNotes) note = notes.pop(0) self.noteOn(note) Timer(self.NOTE_DURATION, self.noteOff, [note]).start() if len(notes) > 0: Timer(self.NOTE_DURATION, self.playMultipleNotesMelodicly, [notes]).start() def playMultipleNotesHarmonicly(self, notes): # print("playMultipleNotesHarmonicly", notes) for note in notes: self.noteOn(note) Timer(self.NOTE_DURATION, self.noteOff, [note]).start() def allNotesOff(self): for i in self.midiout_notes.mediaPlayList(): self.midiout_notes.mediaPlayClose(i)
from androidhelper import Android import time droid = Android() startTime = time.time() duration = 1000 * 60 * 2 #milliseconds ie 2 minutes path = "/storage/9016-4EF8/Music/O children.mp3" droid.mediaPlay(path) droid.mediaPlayStart() droid.eventWait(duration) droid.mediaPlayClose()
def __init__(self): self.midiout_notes = Android() for i in range(21, 108 + 1): self.midiout_notes.mediaPlay(self.PRENAME + str(i) + self.POSTNAME, str(i), False)
""" 1. 手机已经打开GPS 2. 在安卓手机上安装QPython3 3. 使用编辑器编写下面的代码。 """ from time import sleep from androidhelper import Android # 创建一个实例对象 d = Android() # 开始读取数据 d.startLocating() while True: data = d.getLastKnownLocation() data = data.result if data: print(data['gps']) else: print('no gps') sleep(5) # 停止读取数据 d.stopLocating()
def sms(): droid = Android() s=droid.smsSend("15919147090","测试")
from androidhelper import Android import time droid = Android() droid.batteryStartMonitoring() time.sleep(1) batStat = droid.batteryGetStatus().result while batStat != 2: batStat = droid.batteryGetStatus().result hour = time.localtime(time.time()).tm_hour min = time.localtime(time.time()).tm_min f = open("powerLog.txt", "a+") f.write("Time: " + str(hour) + ": " + str(min) + "\n") print "Time: ", hour, ": ", min droid.batteryStopMonitoring()
def __init__(self): self.regex = re.compile('证码为.*【(\d+)】') # regex self.start_time = datetime.datetime.now() # Android QPython3 self.droid = Android() logging.debug("QPython3 实例初始化完成")
DESTURL = '192.168.1.101:8080' def send_file_via_put_http(source_file, dest_file=DESTNAME, url=DESTURL): h = httplib.HTTPConnection(url) f = open(source_file, 'rb') source_bin_content = f.read() f.close() h.request(method='PUT', url=dest_file, body=base64.b64encode(source_bin_content), headers={"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain" } ) return h.getresponse().read() from androidhelper import Android droid=Android() def confirmDialog(title, text, positive, negative=None): droid.dialogDismiss() droid.dialogCreateAlert(title,text) droid.dialogSetPositiveButtonText(positive) if negative is not None: droid.dialogSetNegativeButtonText(negative) droid.dialogShow() # blocked until press response=droid.dialogGetResponse().result droid.dialogDismiss() return "positive" == (response["which"] if response.has_key("which") else "canceled" ) from jnius import autoclass MediaRecorder= autoclass('android.media.MediaRecorder') AudioSource = autoclass('android.media.MediaRecorder$AudioSource')
# qpython3 (Android) # it connects CyberLepki with ZXing barcode scanner on Android device from androidhelper import Android import time import socket import sys droid = Android() HOST = '192.168.43.66' PORT = 7008 stare = "kondominium" droid.setClipboard("kondominium") while True: time.sleep(0.2) schowek = droid.getClipboard().result if stare != schowek: stare = schowek paczka = stare.encode() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) s.sendall(paczka) s.close() stare = "kondominium" droid.setClipboard("kondominium") if schowek[0:3] != "590": droid.ttsSpeak("powtórz")
#-*-coding:utf8;-*- #qpy:3 #qpy:console from androidhelper import Android droid = Android() amountInDollars = 32 amountInNaira = 1 title = str(amountInDollars) message = str(amountInNaira) droid.dialogCreateAlert(title, message)
def __init__(self): # It can break the command and control server if the import is not here from androidhelper import Android self.droid = Android()
1: "unknown", 2: "good", 3: "overheat", 4: "dead", 5: "over voltage", 6: "unspecified failure" } plug = { -1: "unknown", 0: "unplugged", 1: "AC power source", 2: "USB power source", } droid = Android() droid.batteryStartMonitoring() time.sleep(1) def printStatus(): batStat = droid.batteryGetStatus().result print "Status: " + status[batStat] def printLevel(): batLevel = droid.batteryGetLevel().result print "Battery level: " + str(batLevel) + "%" def printTemperature():
from androidhelper import Android import time andro = Android() class Chat(): def __init__(self): self.name = andro.bluetoothGetLocalName() andro.bluetoothMakeDiscoverable() if(andro.bluetoothGetScanMode().result == -1): exit() """andro.dialogCreateAlert("Connect or accept?") andro.dialogSetPositiveButtonText("Connect") andro.dialogSetNegativeButtonText("Accept") andro.dialogShow() ca = andro.dialogGetResponse().result if(ca.has_key("which")): ca = ca["which"] else: exit() uuid = andro.dialogGetInput("UUID","Enter the UUID of the second person (default used if none)").result if(uuid == None): uuid = "457807c0-4897-11df-9879-0800200c9a66" if(ca == "negative"): result = self.accept(uuid) else: result = self.connect(uuid)""" uuid = "457807c0-4897-11df-9879-0800200c9a66" self.accept(uuid) if(result.error != None): self.error(result.error, uuid) def accept(self, uuid): try: timeout = int(andro.dialogGetInput("Timeout","How much time do you want to listen for connection?").result)*1000 except ValueError: timeout = 10000
# Check if the autolock.ini file exists, if it doesn't create it. # if not (os.path.exists("./autolock.ini")): # autolocker.create_ini() # Open the config file and read the settings # config = configparser.ConfigParser() # config.read("./autolock.ini") # # Start the autosearch scheduler # if(functions.TZ in [None,""]): # scheduler = BackgroundScheduler(timezone='UTC') # else: # scheduler = BackgroundScheduler(timezone=functions.TZ) # # Start the price search thread and run it every 30 minutes # scheduler.add_job(autolocker.start_lockin, 'interval', seconds=1800) # scheduler.start() droid = Android() uri2open = 'http://0.0.0.0:5000' intent2start = droid.makeIntent("android.intent.action.VIEW", uri2open, "text/html", None, [u"android.intent.category.BROWSABLE"], None, None, None) print(droid.startActivityForResultIntent(intent2start.result)) app.secret_key = os.urandom(12) app.run(host='0.0.0.0') # Uncomment to enable HTTPS/SSL and comment out the line above #app.run(host='0.0.0.0',port=443,ssl_context=context)
while True: op = input("Texto para binario ou binário para texto?(1/2) ") if op in ["1", "2"]: break while True: opd = input("Quer colar?(s/n) ") if opd in ["s", "n"]: break copied = opd == "s" if op == "1": if copied: texto = Android().getClipboard().result.strip() print("Você colou:", texto) else: texto = input("Digite o texto que vai ser convertido: ").strip() saida = [] for char in texto: saida.append(text_bin(char)) v = " ".join(saida) else: if copied: codigo = Android().getClipboard().result.strip() print("Você colou:", codigo) else: codigo = input("Diga o código binário: ").strip() codigo = "".join([i for i in codigo if i in ["0", "1"]]) assert len(
from androidhelper import Android droid = Android() path = "/sdcard/qpython/photos/test.jpg" droid.cameraCapturePicture(path) #droid.cameraInteractiveCapturePicture(path)
class QPython3(object): # 初始化 def __init__(self): self.regex = re.compile('证码为.*【(\d+)】') # regex self.start_time = datetime.datetime.now() # Android QPython3 self.droid = Android() logging.debug("QPython3 实例初始化完成") # 读取验证码短信 def _get_sms_verify_code(self): # init self.start_time = datetime.datetime.now() code = '000000' retry = 600 # loop logging.debug("监控短信中……") while retry > 0: retry -= 1 # 检查 SMS code = self._check_sms_verify_code() # 有效验证码? if code != '000000': logging.debug("取得有效验证码……"+code) break else: logging.debug("未找到有效验证码……重试中, retry = {}".format(retry)) time.sleep(0.05) else: logging.debug("未找到有效验证码……"+code) return code # 读取验证码短信 def _check_sms_verify_code(self): # init code = '000000' # 获取当前的全部未读短信 smsMessageIds = self.droid.smsGetMessageIds(True) # 无短信退出 if len(smsMessageIds.result) == 0: logging.debug("无短信退出……") return code # loop for smsId in smsMessageIds.result: # get message smsMessage = self.droid.smsGetMessageById(smsId) # 时间筛选 smsTimestamp = datetime.datetime.fromtimestamp(int(smsMessage.result['date'])/1e3) # 跳过开始时间点前 SMS if smsTimestamp < self.start_time: # print("时间跳过:", smsMessage) continue # 文字匹配 smsContent = smsMessage.result['body'] res = self.regex.search(smsContent) if res is None: # print("匹配跳过:", smsMessage) continue else: # print("发现短信:", smsMessage) code = res.group(1).strip() break return code # 获取验证码的外部调用 def get_verify_code(self): logging.debug("获取验证码中……") # 读取验证码短信 return self._get_sms_verify_code()