如何通过脚本开发Android
脚本语言(scripting language)是电脑程式语言,以简单的方式快速完成某些复杂的事情是脚本语言的重要原则,Android平台同样支持大部分脚本语言,我们可以通过ASE(android scriptingEnvironment)项目来完成使用脚本语言开发。
脚本可以访问多数的Android API,提供很多接口,通过接口我们可以完成以下功能:
- 操作 intents
- 启动 activitys
- 拨打电话
- 发送短信
- 扫描条形码
- 获取地理位置和传感器数据
- 使用 Text-To-Speech
等一系列操作。脚本可以在终端中交互地执行,或者作为后台service启动,也可以通过locale命令启动。但是脚本可以很方面的完成特殊操作,但是复杂的应用还是需要通过java实现,脚本语言知识android的一些插件,简化很多工作,为应用程序服务。
ASE是一个开源项目,我们可以在Google code上下载它的安装包,网址:http://code.google.com/p/android-scripting/,可以选择下载安装包还是ASE的源码,下载下来的apk文件可以直接安装。安装完成后,点击应用图标启动ASE,此时启动之后是一片空白,我们需要按“Menu”键添加脚本环境和终端以及解释器等操作。
安装解释器:点击“Menu”,选择“Interpreter”,选择添加的脚本语言解释器,可以选择Lua,或者python等。当选择脚本解释器后,程序会自动从网站上下载并安装。
如何新建新的脚本程序:点击“Menu”,选择“Add Script”。然后弹出界面选择添加的脚本程序种类,然后写入脚本程序的名字及内容,选择“Save”或者“Save And Run”。
ASE是如何调用Android的API的?
ASE通过两种方式来访问API:
- JSON-RPC 如Python及Lua这样的本地应用
- 运行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=false while 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',5233
class 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()
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号