博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何通过脚本开发Android
阅读量:6515 次
发布时间:2019-06-24

本文共 2563 字,大约阅读时间需要 8 分钟。

       脚本语言(scripting language)是电脑程式语言,以简单的方式快速完成某些复杂的事情是脚本语言的重要原则,Android平台同样支持大部分脚本语言,我们可以通过ASE(android scriptingEnvironment)项目来完成使用脚本语言开发。

      脚本可以访问多数的Android API,提供很多接口,通过接口我们可以完成以下功能:

  • 操作 intents
  • 启动 activitys
  • 拨打电话
  • 发送短信
  • 扫描条形码
  • 获取地理位置和传感器数据
  • 使用 Text-To-Speech      

      等一系列操作。脚本可以在终端中交互地执行,或者作为后台service启动,也可以通过locale命令启动。但是脚本可以很方面的完成特殊操作,但是复杂的应用还是需要通过java实现,脚本语言知识android的一些插件,简化很多工作,为应用程序服务。


     ASE是一个开源项目,我们可以在Google code上下载它的安装包,网址: ,可以选择下载安装包还是ASE的源码,下载下来的apk文件可以直接安装。安装完成后,点击应用图标启动ASE,此时启动之后是一片空白,我们需要按“Menu”键添加脚本环境和终端以及解释器等操作。

     安装解释器:点击“Menu”,选择“Interpreter”,选择添加的脚本语言解释器,可以选择Lua,或者python等。当选择脚本解释器后,程序会自动从网站上下载并安装。

     如何新建新的脚本程序:点击“Menu”,选择“Add Script”。然后弹出界面选择添加的脚本程序种类,然后写入脚本程序的名字及内容,选择“Save”或者“Save And Run”。


    ASE是如何调用Android的API的?

    ASE通过两种方式来访问API:

  1. JSON-RPC       如Python及Lua这样的本地应用
  2. 运行beanshell这个基于JVM的语言  

   对于beanshell这样的脚本语言,可以直接访问android的java API,处于简化的目的,ASE提供了AndroidFacade类,对于像Python这样的语言,API是通过使用JSON RPC调用在代理商暴露出来的。这意味着只有被AndroidFacade和AndroidProxy封装的那部分API才能被Python的交叉编译解释器使用,不过AndroidFacade和AndroidProxy都很容易扩展。AndroidFacade和AndroidProxy的源代码位于“com\google\ase”下。


下面共享两个脚本语言。

实现功能:当手机正面向下放置的时候禁用铃声。(Lua脚本)

require "android"--开启传感器android.startSensing()android.sleep(1)silent=falsewhile true do	--获得传感器信息	s=android.readSensors()	--取得传感器信息后判断是否正面朝下	facedown=s.resoult.zfroce and s.resoult.zforce>9	--如果正面朝下	if facedown and not silent then		android.vibrate()		--设置铃声静音模式		android.setRingerSilent(true)		silent=true	--如果正面朝上	elseif not facedown and silent then		android.setRingerSilent(false)		silent=false	end	android.sleep(1)end

如何用Python语言实现一个简易的聊天程序
import android,xmpp"""设置服务器、端口"""_SERVER='talk.google.com',5233class SayChat(object):	def_init_(self):	self.droid=android.Android()	"""取得输入的用户名和密码"""	username=self.droid.getInput('Username')['result']	password=self.droid.getInput('Password')['result']	jid=xmpp.protocol.JID(username)	self.client=xmpp.Client(jid.getDomain().debug=[])	"""连接服务器"""	self.client.connect(server=_SERVER)	"""注册回调"""	self.client.RegisterHandler('message',self.message_cb)	if not self.client:		"""连接失败"""		print 'Connection failed!'		return	auth=self.client.auth(jid.getNode(),password,'botty')	if not auth:		print 'Authentication failed!'		return	self.client.sendInitPresence()def message_cb(self,session,message):	jid=xmpp.protocol.JID(message.getForm())	username=jid.getNode()	text=message.getBode()	"""通过TTS来实现语音对话"""	self.droid.speak('%s say %s' %(username,text))def.run(self):	try:		while True:			self.client.Process(1)	except KeyboardInterrupt:		pass	saychat = SayChat()saychat.run()

转载于:https://www.cnblogs.com/neilyo/archive/2011/11/14/2249031.html

你可能感兴趣的文章
git管理
查看>>
idea演示
查看>>
告别暗黄皮肤变水嫩皮肤的8个小习惯
查看>>
加强Eclipse代码自动提示的方法
查看>>
GNS3-地址重叠环境中部署IPsec
查看>>
exchange online 用户疑问之许可证和用户数据归档
查看>>
QImage Mat IplImage 之间的相互转换
查看>>
使用eclipse与android studio 在开发自定义控件时的区别
查看>>
我的友情链接
查看>>
mysql学习笔记
查看>>
django 问题解决
查看>>
年年有鱼游戏Android源码项目
查看>>
java使用Iterator、for循环同步数据
查看>>
创建镜像iso文件
查看>>
Linux下创建软RAID5和RAID10实战
查看>>
C++类的存储
查看>>
ActiveReports 报表应用教程 (8)---交互式报表之动态过滤
查看>>
解决使用Handler时Can't create handler inside thread that has not called Looper.prepare()
查看>>
跟我一起学docker(四)--容器的基本操作
查看>>
磁化强度
查看>>