Common Language Extension(CLE) 介绍
真是林子大了什么鸟都有啊,最近发现一个CLE的东东,可以支持各种编程语言之间的相互调用:
http://www.srplab.com/index.html
安卓版本支持Java调用Python代码,也支持Python调用Java代码,地址如下:
http://code.google.com/p/cle-for-android/
安卓下有个例子:
Python accesses android GUI element
This example shows how to access android java class using python directly. The example uses python script to create a button on screen and capture it's onclick event.
The python code is show as follow:
#--prepare python environment
SrvGroup=libstarpy._GetSrvGroup()
Service=SrvGroup._GetService("","")
Toast = Service._ImportRawContext("java","android/widget/Toast",True,"");
def main(activity) :
#--create absolute layout
AbsoluteLayout = Service._ImportRawContext("java","android/widget/AbsoluteLayout",True,"");
abslayout=AbsoluteLayout(activity);
activity.setContentView(abslayout);
#--create button
print(Service)
Button = Service._ImportRawContext("java","android/widget/Button",True,"");
btn1 = Button(activity);
btn1.setText("Hello World");
#--create event proxy
btnevent = Service._New();
def btnevent_onClick(self,view) :
print( view )
Toast.makeText(activity, "Is clicked", Toast.LENGTH_SHORT ).show()
btnevent.onClick = btnevent_onClick
btnevent_proxy = Service._NewRawProxy("java",btnevent,"","android.view.View$OnClickListener",0);
btn1.setOnClickListener( btnevent_proxy );
#--create layout
ViewGroup_LayoutParams = Service._ImportRawContext("java","android/view/ViewGroup$LayoutParams",True,"");
LayoutParams = Service._ImportRawContext("java","android/widget/AbsoluteLayout$LayoutParams",True,"");
#--add button to layout
lp1 = LayoutParams(ViewGroup_LayoutParams.WRAP_CONTENT,ViewGroup_LayoutParams.WRAP_CONTENT,0,100)
abslayout.addView(btn1, lp1 );
Java code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*----load test.py----*/
String pythonstring = null;
try{
AssetManager assetManager = getAssets();
InputStream dataSource = assetManager.open("test.py");
int size=dataSource.available();
byte[] buffer=new byte[size];
dataSource.read(buffer);
dataSource.close();
pythonstring=new String(buffer);
}
catch(IOException e ){
}
/*----init starcore----*/
StarCoreFactoryPath.StarCoreCoreLibraryPath = "/data/data/"+getPackageName()+"/lib";
StarCoreFactoryPath.StarCoreShareLibraryPath = "/data/data/"+getPackageName()+"/lib";
StarCoreFactory starcore= StarCoreFactory.GetFactory();
StarServiceClass Service=starcore._InitSimple("test","123",0,0);
StarSrvGroupClass SrvGroup = (StarSrvGroupClass)Service._Get("_ServiceGroup");
Service._CheckPassword(false);
/*----run python code----*/
Service._RunScript("python", pythonstring, "", "");
SrvGroup._InitRaw("python",Service);
StarObjectClass python = Service._ImportRawContext("python","",false,"");
/*---wrap activity object for python---*/
StarObjectClass activityobj = Service._New();
activityobj._AttachRawObject(this,false);
/*---call lua python function----*/
python._Call("main", activityobj);
}
我是很好奇Button的OnClickListener是怎么调用Python代码的,
只可惜从2.0版本开始要付费了,真是逆历史潮流而动,不过有空还是可以研究研究,这里作下记录。
Common Language Extension(CLE) 介绍相关推荐
- The Common Language Runtime (CLR)
正文 印象 Figure 1-1. .NET Framework Figure 1-2. Common Language Runtime functions 定义 The Common Languag ...
- 多态和接口(3)——设计模式(1)——方法override、CLR(Common Language Runtime 公共语言运行时)、CTS(Common Type System 公共语言系统)
1.多态就是设计模式!!!多态理解了设计模式就理解了. 2.定义坐标类,坐标类默认继承Object的ToString()方法,没有自己的特色. 3.override ToString()输出友好信息: ...
- Android Init Language(RC文件)介绍
Android Init Language介绍 基本概念 什么是rc文件? Android Init进程用rc做了什么? 相关内容 Android RC文件应用 Android rc文件语法解析 Li ...
- Common Files文件夹介绍
我们经常在Program Files文件夹下看到Common Files这个文件,但是大多数人不知道它是干什么用的?这里我简单的介绍一下: Common Files是应用程序运行库文件,这个文件夹是操 ...
- Chapter 14 Greenplum PL/R Language Extension
Chapter 14 Greenplum PL/RLanguage Extension This chaptercontains the following information: • Abo ...
- EL(Expression Language)语言介绍
目录 一.EL语言介绍 二.EL语言基本语法 三.EL语言的操作符 Empty操作符(空值检查) 比较操作符编辑 EL表达式运算符 四.EL内置对象 五.EL语言作用 一.EL语言介绍 EL语言是J ...
- Fireworks Extension —— AutoSlice 介绍
前不久在网上到处瞎晃的时候,发现Adobe的软件几乎都可以写插件.Fireworks更是很早的版本就支持使用javascript编写插件,于是乎如入桃园,奋斗几日为VD小伙伴们写了一个插件,命名Aut ...
- .NET Core Common Language Runtime (CoreCLR)
此存储库包含 .NET Core运行时的完整源代码. .NET Core最好被认为是"敏捷.NET".一般来说它是一样的 Desktop .NET Framework 作为Wind ...
- 使用cle 调用opengl的简单例子(android)
使用Using common language extension(cle)作为接口组件,编程能够得到很大简化.下面是一个调用opengl的例子,是从ndk example hello-gl2.修改而 ...
最新文章
- 贝叶斯推断方法 —— 从经验知识到推断未知
- hdu 5512 Pagodas
- spring的AOP配置之XML方式
- java每秒执行一次_Java性能权威指南
- 考研生物和计算机结合的专业,2020考研:生物医学工程,考研是考原专业还是跨专业考计算机好?...
- BugkuCTF-Reverse题love
- sap crm button_正值SAP中国成立25周年之际,江苏金来奇智能科技SAPB1项目正式启动...
- SpringCloud Ribbon之概述(一)
- android opengl es 粒子效果实例代码
- Tricks(七)——list of lists 行和、列和的计算
- Q103:磨边的物体(Beveled Objects)
- SpringBoot2整合Jooq和Flyway(一)
- c语言 camp;gt与camp;lt,那位高人告诉我怎么复习c语言二级啊?????
- Linux查看磁盘是否被占满,怎么查看Linux磁盘空间是否满了?
- ps制作哈7海报字体
- Linux下用dd命令测试硬盘的读写速度
- 无限容量还不限速的网盘,了解一下~
- yml文件读取方式_1
- axure 母版自定义触发事件的工作机制
- python中的标准输入设备_从MIDI设备获取输入(Python)
热门文章
- 电商类-仿美团页面demo
- LPC1768 PWM1输出PWM示例
- 凸包问题--旋转卡壳
- lol大区服务器维护,LOL官宣“扩容升级”服务器,排队时间将大大减少,电一玩家喜大普奔!...
- bilibili外链链接到网页
- Linux--gcc的基本用法
- 权威认可 | 悬镜云鲨RASP荣获信通院“2021金融行业年度卓越创新案例”
- python下求特征向量与特征值
- rn源码ios_携程开源RN开发框架CRN
- C++基础之数组和字符串