import os,socket as s

k=os.environ.get

try:

c=s.create_connection((k('AP_HOST'),k('AP_PORT'))).makefile("rw")

except:

print('SL4A服务 连接失败,重启 QPython App 即可解决!')

exit()

import collections

from json import dumps,loads

i=0

w,s,c=c.write,c.flush,c.readline

def jsla(method,*params):

global i

w(dumps({'id':i,

'method':method,'params':params})+'\n')

s()

i+=1

return c()

k=k('AP_HANDSHAKE')

if k is not None:

jsla('_authenticate',k)

k=collections.namedtuple('Result','id,result,error')

def rsla(*a):

return loads(jsla(*a))['result']

def esla(*a):

r=loads(jsla(*a))

if r['error']:

raise Exception(r['error'])

else:

return r['result']

def nsla(*a):

return k(**loads(jsla(*a)))

class Android:

def __getattr__(self,method):

def f(*params):

return nsla(method,*params)

setattr(self,method,f)

return f

droid=Android()

__all__=('droid','esla','rsla','jsla','os')

========================

删改至:SL4A,Damon Kohler,2009。

修改目的:减少冗余,提高速度。

==========说明==========

QPython3 SL4A 简易服务

导入:

from android import *

jsla(method,*params)

返回Json String:

"{'id':1,'result':'结果','error':null}"

适合不需要返回值且几乎不出错的场景

loads(jsla(method,*params))

返回dict:

{'id':1,'result':'结果','error':None}

少用

rsla(method,*params)

仅返回result:

'结果'

忽略错误信息,适合很难出错的场景

esla(method,*params)

程序运行正确时,仅返回result:

'结果'

程序运行错误时,抛出异常:

Exception: Error Message

适合容易出错的场景

import android

android.nsla(method,*params)

完整返回namedtuple:

Result(id=1,result='结果',error=None)

传统SL4A函数,少用

MyDroid=android.Android()

创建新的SL4A对象

传统SL4A函数,少用

droid.func:

返回android.nsla('func',*params)

传统SL4A函数,向旧版兼容

SL4A服务 连接失败:

方法1:重启 QPython3 App;

方法2:重新打开 SL4A 服务:

点击 右上角三个点

点击 SL4A 服务

点击 开始 SL4A 服务

原因:一个SL4A程序运行结束后,如果超过1分钟没有运行下一个SL4A程序,SL4A服务便会自动关闭。

预防:运行完一个SL4A程序后,最好在1分钟内运行下一个SL4A程序。

QPython3很多高级功能,包括可视化GUI,都需要用到这个模块,该模块是十分基础的模块。

python3android版_Android QPython3 简易 SL4A 服务:android.py相关推荐

  1. python3 音乐播放器_Android QPython3 可视化-音乐播放:MusicPlay.py

    #需要BaseWindow.py from BaseWindow import * from android import rsla,jsla from os.path import abspath ...

  2. python3 安卓_Android QPython3 调用 其他 Android App

    需要android.py 可视化还需要: BaseWindow.py MultText.py MltiText.py Output.py [AndroidManifest.xml] package=& ...

  3. 必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法

    必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法 作者 梓沐啊_(KylinDemons) 版权声明 Copyright © 2021 KylinD ...

  4. mysql-8.0.17解压版安装步骤及MySQL服务无法启动问题的解决办法

    mysql-8.0.17解压版安装步骤及MySQL服务无法启动问题的解决办法 参考文章: (1)mysql-8.0.17解压版安装步骤及MySQL服务无法启动问题的解决办法 (2)https://ww ...

  5. android四大组件 服务,Android四大组件之Service

    Service Service(服务)是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件.服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行. 此外,组件可以绑定到 ...

  6. android8.1启动前台服务,Android - 保活(1)前台服务保活

    老婆保佑,代码无BUG 前言 项目中遇到一个需求,需要竟可能的上传用户的定位信息,引发了我对目前已知的保活手段的探究,同时也遇到过客户说,推送不能收到,不能像微信那样,MMP的,不想理客户 目录 一: ...

  7. android短信模板,短信服务 · Android – Bmob后端云

    短信服务 Android 开发文档¶ 除了与用户相关的包括一键注册,手机号码登录等操作外,Bmob 还推出了单独的短信验证码服务. 在实际的应用中,开发者希望能够通过短信验证的方式来与用户进行某些重要 ...

  8. Paypal国际版网站集成简易教程

    转自:http://www.chenchen.org/article/paypal/4.htm Paypal国际版网站集成简易教程(一):序言 前段时间接到一个外贸网站的项目,集成paypal支付接口 ...

  9. 电脑版Android版Mac版iPad版,从苹果iPad上运行Android版QQ谈移动应用跨平台

    随着移动设备的发展和普及,人们生活已离不开移动设备:手机,而各种系统的手机,甚至平板电脑也如雨后春笋般出现,这对移动设备应用开发者产生一个难题:如何开发出尽可能适应多平台的手机应用,提高对平台的兼容性 ...

最新文章

  1. 网站被黑你隔了多久才知道?
  2. 老粮商谋定国际农民丰收节贸易会·万祥军:巨头跨国不上市
  3. 【洛谷 3372】线段树 1
  4. android新年祝福代码,讯飞输入法发布Android新春版 Biu一下敲出美好祝愿!
  5. 设计模式一の设计模式详解
  6. 鼎信诺oracle_鼎信诺审计系统操作说明
  7. OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像2
  8. Python代码Linux
  9. paip.java优缺点attilax总结c0.doc
  10. Bootstrap导航条
  11. python | 画中国站点数量空间分布图
  12. 正交设计 python算法_SPSS统计分析案例:无空白列重复正交试验设计方差分析
  13. 三维重建:特征检测+匹配+RT恢复+稠密重建方法
  14. java将Word转换成PDF两种方法
  15. 安卓语音识别文字软件
  16. 逆序对(deseq)
  17. 爬虫学习笔记(三)——利用JSON爬取豆瓣热映的使用
  18. python数据可视化创建_【Python数据可视化】创建3D可视化图表
  19. Snipaste等截图px与浏览器内容px不一样
  20. 消息钩子使用教程(转)

热门文章

  1. VirtualBox下安装Ubuntu Server 16.04
  2. vue axios springboot 跨域
  3. 人脸识别的过程和算法
  4. centos升级gcc
  5. go corn定时器
  6. 【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC
  7. linux perl 安装目录,肿么查看linux是否安装了perl
  8. java 中 阻塞队列 非阻塞队列 和普通队列的区别
  9. Java分布式系统高并发解决方案
  10. 容器学习 之 容器的组件(三)