Android中间键开发
来源:互联网 发布:淘宝女装摄影技巧 编辑:程序博客网 时间:2024/04/28 22:09
Android Scripting Environment(ASE)是Google针对Android操作系统发布的一个小工具。ASE将脚本语言带入Android,允许用户编辑和执行脚本,直接在Android设备上运行交互式解释器。脚本将能大幅度简化任务界面,目前支持Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, shell,以后将会增加更多的语言的支持。 从此可以直接通过脚本(解释语言)方便快捷的调用Android系统中大部分的API,其可以完全满足对那些想把手机功能发挥到极致的“生物”。根据官方发布的消息,其可以通过非常简便的接口快速实现以下功能: Handle Intents 启动Activities 发送通话请求 发送文字信息 扫描条形码 获取地理信息和返回设备传感器状态信息 使用语音输出文字信息 ASE提供的API可以参考官方文档(http://code.google.com/p/android-scripting/wiki/ApiReference) ASE其实就是Client端和Server端用JSON去通信. Server端是Android的那一套了,Java 通过JNI调用C/C++. Server原理: 首先,建立 AndroidProxy Service,它会负责Run JsonRpcServer.这个Server非常重要,它负责监听以及和Script PC Client 端通信.那么这里有两个很重要的Thread, 第一是Thread 用于Listen Socket, 当Accept socket的时候,就会创建另一个线程去Connect to the Client.JsonPpcServer还有两个重要的函数,分别是StartPublic 和Start Local. StartPublic()建立Remote 通信,远程通信主要是负责监听PC端的脚本;StartLocal()建立Local通信,本地通信的作用主要是用来:监听Android上解释执行的脚本.也就是说:无论本地还是远端的脚本都是通过JsonRpcServer来统一调用Android JAVA API的 AndroidProxyService含有AndroidProxy类.这个类的主要作用就是负责调用AndroidFacade类中,封装好了的,提供给Script调用的函数. AndroidProxy类中,还包含有notification和notification manager之类的东西.notification就是我们在运行ASE时start service时,模拟器或者手机顶端的提示信息.这里包含了一个很重要的信息:IP和Port号.其中Port号就是Run Scripts Externally 中的Remote的端口号.代码如下:adb forward tcp:<local_port> tcp:<remote_port> local port超过1024就可以了, remote port就是notification中的port号. 我们来看一下, ASE中Android.py的源代码, PORT = os.environ.get('AP_PORT') 可以看到第一句话就是从:系统中拿到AP_PORT环境变量,为以后建立socket打下基础. private JSONObject dispatch(int id, String methodName, JSONArray params) throws JSONException { 这里就是会Call AndroidFacade中函数的地方了. 下载adnroidSDK 下载ASE的源代码,下载地址是:http://code.google.com/p/android-scripting/source/checkout 3. 在Eclipse里面导入源文件中所有的工程 4. 在工程Common的src/com.googlecode.android_scripting.facade包在添加要扩展的API,java文件的内容如下: public class YOURAPIFacade extends RpcReceiver { private final TriggerRepository mTriggerRepository; public YOURAPIFacade(FacadeManager manager) { super(manager); mTriggerRepository = manager.getTriggerRepository(); } @Rpc(description = "your descrpt") public void yourenvent( @RpcParameter(name = "script", description = "The path to a script to execute when the ringer mode changes.") yourParameterType script …) { … } @Override public void shutdown() { } } 5. 修改ScriptingLayer工程下src/ com.googlecode.android_scripting.facade包下的FacadeConfiguration.java文件,把刚才添加的java文件名加到这个java文件中:sFacadeClassList.add(YOURFacade.class); 6. 编译ScriptingLayerForAndroid工程,安装APK到目标机器上。 作为一个程序员有多种方法可以建立自已的工作并生成APK。 一) 使用eclipseIDE来建立工程: 1. 下载脚本的模板工程,并把工程导入到eclipse中。 2. 重命名模板工程名和包名:com.dummy.fooforandroid -> your_package_name ,如果你修改了包名,那么要在AndroidManifest.xml里面同步package="your_package_name" 3. 在res/raw包里编写你的脚本文件,并修改src/ com.dummy.fooforandroid包中的script.java这个类,修改为public final static int ID = R.raw.YOURscript; 4.在AndroidManifest.xml里面申明你在脚本中用到的所有权限。 5.编译,打包。 (二) 使用ant来生成APK,祥见http://code.google.com/p/android-scripting/wiki/SharingScripts 用户要运行使用脚本编写的程序,需要安装:1、脚本解释器(这里使用LUA解释器,下载地址是http://code.google.com/p/android-scripting/downloads/list);2、中间键APK;3、程序员编写的应用程序的APK。装完这三个APK后,直接点击应用程序的图标就可以运行软件。什么是ASE
三、 ASE原理
也就是说干活的代码这这里(当然,底层才是真正的工作的代码,但是我们在这里这么理解他).
当然,还有一步也是一定要做的:export AP_PORT local_port
class Android(object):
def __init__(self, addr=None):
if addr is None:
addr = 'localhost', PORT
self.conn = socket.create_connection(addr)
self.client = self.conn.makefile()
self.id = 0
好像,讲的离题了点.继续,JsonRpcServer.
在这个类中,有很重要的一个方法:
JSONObject result;
try {
Method m = mReceiver.getClass().getMethod(methodName, new Class[] { JSONArray.class });
if (m.isAnnotationPresent(Rpc.class)) {
result = (JSONObject) m.invoke(mReceiver, new Object[] { params });
} else {
throw new Exception();
}
...
所以,理论上,我们只要扩展AndroidFacade中的函数,然后,在AndroidProxy中调用AndroidFacade就Okay了.四、 怎样在ASE的基础上开发ANDROID手机中间键软件
五、 程序员怎么在中间键的基础上开发自已的程序
六、用户怎么使用应用程序
- Android中间键开发
- 合作开发中间记事
- 大型网站系统与java中间键开发笔记
- android耳机中间按键(中键)监听
- JAVA中间转发层开发
- 基于android自学开发:图片位于中间的布局(仅供参考)tcpservice.xml
- Android开发之TextView中间设置横线,适用于电商项目,商品原价之类的功能。
- Android开发常用到的中间View(加载,重试等)
- Android开发之TextView中间设置横线,适用于电商项目,商品原价之类的功能。
- IOS/Android开发用递归法获取指定开始字符串到结尾字符串中间内容
- Android开发之TextView中间设置横线,适用于电商项目,商品原价之类的功能。
- Android Button在中间显示
- Android底部导航中间突起
- Android启动Activity中间黑屏
- android 身份证号中间几位用*代替
- Android底部中间+号导航
- Android 圆形百分比中间空心
- android动画图片从中间放大
- 云中之城(三)
- S3C2440看门狗定时器(Watchdog)
- contentWindow的使用
- Spring配置Bean的问题
- 防堕落,高效学习的TIPS
- Android中间键开发
- Delphi 分隔GSMModem接收到的短信字符串
- Android中使用ant混淆编译
- 使用外部程序为Query提供数据
- 网游服务器的布局
- SqlServer 2005 链接服务器
- XP登录密码忘了 教你九种方法解决问题
- iptables-save iptables-restone
- 请高手帮哈忙