博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android lua调用java_android lua 在java 中的应用实例
阅读量:6485 次
发布时间:2019-06-23

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

【实例简介】

androlua 使用示例框架

【实例截图】

c2e94dabe2c2ed2e2887e63b2c9e41a5.png

【核心代码】

public class MainActivity extends Activity {

// Lua解析和执行由此对象完成

private LuaState mLuaState;

// 用于演示,显示数据

private TextView mDisplay;

// 用于演示

private LinearLayout mLayout;

private Button button1;

private Button button2;

private Button button3;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

button1 = (Button) findViewById(R.id.statemanet);

button1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

runStatement(arg0);

}

});

button2 = (Button) findViewById(R.id.file);

button2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

runFile(arg0);

}

});

button3 = (Button) findViewById(R.id.callAndroid);

button3.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

callAndroidAPI(arg0);

}

});

mLayout = (LinearLayout) findViewById(R.id.layout);

mDisplay = (TextView) mLayout.findViewById(R.id.display);

mLuaState = LuaStateFactory.newLuaState();

mLuaState.openLibs();

}

public void runStatement(View v) {

// 定义一个Lua变量

mLuaState

.LdoString(" varSay = 'This is string in lua script statement.'");

// 获取

mLuaState.getGlobal("varSay");

// 输出

mDisplay.setText(mLuaState.toString(-1));

}

public void runFile(View v) {

mLuaState.LdoString(readStream(getResources().openRawResource(

R.raw.test)));

// 找到functionInLuaFile函数

mLuaState.getField(LuaState.LUA_GLOBALSINDEX, "functionInLuaFile");

// 将参数压入栈

mLuaState.pushString("从Java中传递的参数");

// functionInLuaFile函数有一个参数,一个返回结果

int paramCount = 1;

int resultCount = 1;

mLuaState.call(paramCount, resultCount);

// 将结果保存到resultKey中

mLuaState.setField(LuaState.LUA_GLOBALSINDEX, "resultKey");

// 获取

mLuaState.getGlobal("resultKey");

// 输出

mDisplay.setText(mLuaState.toString(-1));

}

public void callAndroidAPI(View v) {

mLuaState.LdoString(readStream(getResources().openRawResource(

R.raw.test)));

// 找到functionInLuaFile函数

mLuaState.getField(LuaState.LUA_GLOBALSINDEX, "callAndroidApi");

mLuaState.pushJavaObject(getApplicationContext());

mLuaState.pushJavaObject(mLayout);

mLuaState.pushString("设置到TextView的数据");

mLuaState.call(3, 0);

}

private String readStream(InputStream is) {

try {

ByteArrayOutputStream bo = new ByteArrayOutputStream();

int i = is.read();

while (i != -1) {

bo.write(i);

i = is.read();

}

return bo.toString();

} catch (IOException e) {

Log.e("ReadStream", "读取文件流失败");

return "";

}

}

参考:

http://my.oschina.net/chenyoca/blog/69169

转载地址:http://mlnuo.baihongyu.com/

你可能感兴趣的文章
前端大牛们都学过哪些?
查看>>
在iOS当中发送电子邮件和短信
查看>>
13~1003的和
查看>>
pycharm如何新项目如何不默认创建虚拟环境(吐槽)
查看>>
Loadrunner检查点小结(很经典)
查看>>
MySQL字段类型详解
查看>>
ORACLE 的游标
查看>>
虚拟机安装的UBUNTU全屏的方法:
查看>>
java虚拟机类加载器
查看>>
ASP.NET状态管理之八(会话Session)
查看>>
转载:大型网站架构演变和知识体系
查看>>
set集合
查看>>
SVN服务器的搭建和使用
查看>>
mvc中枚举的使用和绑定枚举值到DropDownListFor
查看>>
多目标跟踪的评价指标
查看>>
HTTPS(SSL)详解以及PHP调用方法
查看>>
突发小事件,USB接口问题
查看>>
Nginx负载均衡配置实例详解
查看>>
L1-009. N个数求和
查看>>
实参传递不当导致的运行时错误
查看>>