Skip to content

Commit 408dad8

Browse files
authored
Merge pull request #30 from VideoOS/merge
Merge 2.8.0
2 parents 4561f3a + c10f344 commit 408dad8

File tree

59 files changed

+1788
-478
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1788
-478
lines changed

VideoOS/LuaViewSDK/src/cn/com/venvy/lua/LuaHelper.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import cn.com.venvy.Platform;
1212
import cn.com.venvy.lua.binder.UIGradientViewBinder;
1313
import cn.com.venvy.lua.binder.VenvyActivityLifeCycleBinder;
14+
import cn.com.venvy.lua.binder.VenvyAppletBinder;
1415
import cn.com.venvy.lua.binder.VenvyHttpRequestBinder;
1516
import cn.com.venvy.lua.binder.VenvyKeyboardBinder;
1617
import cn.com.venvy.lua.binder.VenvyMediaLifeCycleBinder;
@@ -37,6 +38,7 @@ public class LuaHelper {
3738
private static VenvyActivityLifeCycleBinder venvyActivityLifeCycleBinder;
3839
private static VenvyKeyboardBinder venvyKeyboardBinder;
3940
private static VenvyNativeBinder venvyNativeBinder;
41+
private static VenvyAppletBinder venvyAppletBinder;
4042
private static VenvySvgaBinder venvySvgaBinder;
4143
private static LVHttpBridge lvHttpBridge;
4244
private static VenvyMediaViewBinder mediaViewBinder;
@@ -74,6 +76,7 @@ private static void registerNativeLibs(@NonNull LuaView luaView, Platform platfo
7476
luaView.registerLibs(getUiGradientViewBinder(),
7577
getMediaLifeCycleBinder(platform),
7678
getMqttBinder(),
79+
getAppletBinder(platform),
7780
getSvgaBinder(),
7881
getWebViewBinder(platform),
7982
getActivityLifeCycleBinder(),
@@ -120,6 +123,12 @@ private static VenvyMqttBinder getMqttBinder() {
120123
return venvyMqttBinder == null ? venvyMqttBinder = new VenvyMqttBinder() : venvyMqttBinder;
121124
}
122125

126+
private static VenvyAppletBinder getAppletBinder(Platform platform) {
127+
VenvyAppletBinder appletBinder = venvyAppletBinder == null ? venvyAppletBinder = new VenvyAppletBinder() : venvyAppletBinder;
128+
appletBinder.setPlatform(platform);
129+
return appletBinder;
130+
}
131+
123132
private static VenvyNativeBinder getNativeBinder(Platform platform, ViewGroup viewGroup) {
124133
VenvyNativeBinder target = venvyNativeBinder == null ? venvyNativeBinder = new VenvyNativeBinder() : venvyNativeBinder;
125134
target.setPlatform(platform);
@@ -147,6 +156,7 @@ public static void destroy() {
147156
venvyWebViewBinder = null;
148157
venvyMediaLifeCycleBinder = null;
149158
venvyMqttBinder = null;
159+
venvyAppletBinder = null;
150160
venvyActivityLifeCycleBinder = null;
151161
venvyKeyboardBinder = null;
152162
venvyNativeBinder = null;

VideoOS/LuaViewSDK/src/com/taobao/luaview/fun/binder/kit/AppletBinder.java renamed to VideoOS/LuaViewSDK/src/cn/com/venvy/lua/binder/VenvyAppletBinder.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
1-
package com.taobao.luaview.fun.binder.kit;
1+
package cn.com.venvy.lua.binder;
22

33
import com.taobao.luaview.fun.base.BaseFunctionBinder;
44
import com.taobao.luaview.userdata.kit.UDApplet;
55

66
import org.luaj.vm2.LuaValue;
77
import org.luaj.vm2.lib.LibFunction;
88

9+
import cn.com.venvy.Platform;
10+
911
/**
1012
* Created by Lucas on 2019/8/2.
1113
*/
12-
public class AppletBinder extends BaseFunctionBinder {
13-
public AppletBinder() {
14+
public class VenvyAppletBinder extends BaseFunctionBinder {
15+
private Platform mPlatform;
16+
17+
public VenvyAppletBinder() {
1418
super("Applet");
1519
}
1620

21+
public void setPlatform(Platform platform) {
22+
this.mPlatform = platform;
23+
}
24+
1725
@Override
1826
public Class<? extends LibFunction> getMapperClass() {
1927
return null;
2028
}
2129

2230
@Override
2331
public LuaValue createCreator(LuaValue env, LuaValue metaTable) {
24-
return new UDApplet(env.checkglobals(), metaTable);
32+
return new UDApplet(env.checkglobals(), metaTable, mPlatform);
2533
}
2634
}

VideoOS/LuaViewSDK/src/cn/com/venvy/lua/maper/LVWebViewMethodMapper.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import com.taobao.luaview.fun.mapper.LuaViewLib;
77
import com.taobao.luaview.fun.mapper.ui.UIViewMethodMapper;
88
import com.taobao.luaview.global.VmVersion;
9+
import com.taobao.luaview.util.JsonUtil;
910
import com.taobao.luaview.util.LuaUtil;
1011

1112
import org.luaj.vm2.LuaFunction;
13+
import org.luaj.vm2.LuaTable;
1214
import org.luaj.vm2.LuaValue;
1315
import org.luaj.vm2.Varargs;
1416

@@ -35,7 +37,9 @@ public class LVWebViewMethodMapper<U extends VenvyUDWebView> extends UIViewMetho
3537
"stopLoading",//8
3638
"url",//9
3739
"pullRefreshEnable",//10
38-
"callJS"//11
40+
"callJS",//11
41+
"webViewCallback", // 12
42+
"setInitData" // 13
3943
};
4044

4145
@Override
@@ -71,6 +75,10 @@ public Varargs invoke(int code, U target, Varargs varargs) {
7175
return pullRefreshEnable(target, varargs);
7276
case 11:
7377
return callJS(target, varargs);
78+
case 12:
79+
return webViewCallback(target, varargs);
80+
case 13:
81+
return setInitData(target, varargs);
7482
}
7583
return super.invoke(code, target, varargs);
7684
}
@@ -147,4 +155,23 @@ public LuaValue callJS(U view, Varargs varargs) {
147155
final LuaFunction callback = LuaUtil.getFunction(varargs, 3);
148156
return LuaValue.valueOf(view.callJS(jsMethod, callback));
149157
}
158+
159+
public LuaValue webViewCallback(U view, Varargs varargs) {
160+
final LuaTable callback = varargs.opttable(2, null);
161+
if (callback != null) {
162+
LuaValue onClose = LuaUtil.getFunction(callback, "onClose", "onClose");
163+
return view.webViewCallback(onClose);
164+
}
165+
166+
return LuaValue.valueOf("");
167+
}
168+
169+
public LuaValue setInitData(U view, Varargs varargs) {
170+
final LuaTable data = varargs.opttable(2, null);
171+
if (data != null) {
172+
String jsData = JsonUtil.toString(data);
173+
return view.setInitData(jsData);
174+
}
175+
return LuaValue.valueOf("");
176+
}
150177
}

VideoOS/LuaViewSDK/src/cn/com/venvy/lua/plugin/LVCommonParamPlugin.java

Lines changed: 47 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import cn.com.venvy.Config;
1616
import cn.com.venvy.common.utils.VenvyAPKVersionCodeUtils;
1717
import cn.com.venvy.common.utils.VenvyDeviceUtil;
18+
import cn.com.venvy.common.utils.VenvyUIUtil;
1819
import cn.com.venvy.lua.binder.VenvyLVLibBinder;
1920

2021
/**
@@ -23,24 +24,29 @@
2324
*/
2425

2526
public class LVCommonParamPlugin {
26-
private static final String VERSION = "VERSION";//版本号
27+
private static final String LANGUAGE = "LANGUAGE";//语言
2728
private static final String SDK_VERSION = "SDK_VERSION";//sdk版本号
28-
private static final String USER_AGENT = "USER_AGENT";//代理
29-
private static final String OS_VERSION = "OS_VERSION";//系统版本号
3029
private static final String UD_ID = "UD_ID";//uuid
31-
// private static final String APP_KEY="";//app的key
32-
private static final String IP = "IP";//ip地址
33-
private static final String NETWORK = "NETWORK";//网络
34-
// private static final String PLATFORM_ID="";//平台id
35-
// private static final String CYTRON_VERSION="";//业务系统版本号
36-
private static final String LANGUAGE = "LANGUAGE";//语言
37-
// private static final String BU="OS";//业务id
38-
// private static final String ENCODING="";//编码
39-
// private static final String PLATFORM_TOKEN="";//平台token
4030
private static final String PHONE_MODEL = "PHONE_MODEL";//手机型号
31+
private static final String NETWORK = "NETWORK";//网络连接类型(0:未知,1:wifi,2:2G,3:3G,4:4G 5:5G)network
32+
private static final String VERSION = "VERSION";//APP版本(如:9.3.4)使用version
33+
private static final String OS_VERSION = "OS_VERSION";//系统版本号
4134
private static final String PHONE_PROVIDER = "PHONE_PROVIDER";//手机提供商
42-
private static final String ANDROID_ID = "ANDROID_ID";
35+
private static final String IP = "IP";//ip地址
36+
private static final String OS_TYPE = "OS_TYPE";//0:未知 1:Android 2:iOS 3:Windows Phone
37+
private static final String MAC = "MAC";
38+
private static final String ANDROID_ID = "ANDROID_ID";//android_id
4339
private static final String IMEI = "IMEI";
40+
private static final String APP_NAME = "APP_NAME";//APP名称(utf-8),需要UrlEncode
41+
private static final String PKG_NAME = "PKG_NAME";//APP包名(安卓是应用的PackageName,ios是Bundle ID)
42+
private static final String CARRIER = "CARRIER";//运营商信息 0:其他,1:移动,2:联通,3:电信
43+
private static final String PHONE_HEIGHT = "PHONE_HEIGHT";//设备屏幕宽度,物理像素
44+
private static final String PHONE_WIDTH = "PHONE_WIDTH";//设备屏幕高度,物理像素
45+
private static final String PPI = "PPI";//设备像素密度,物理像素
46+
private static final String IMSI = "IMSI";//国际移动客户识别码
47+
private static final String DEVICE_TYPE = "DEVICE_TYPE";//终端类型(1:移动端 2:PC 3:OTT)
48+
49+
4450
private static LVCommonParamPlugin.GetCommonParamData mCommonParamData;
4551

4652
public static void install(VenvyLVLibBinder venvyLVLibBinder) {
@@ -71,19 +77,40 @@ public Varargs invoke(Varargs args) {
7177
}
7278
table.set(LuaValue.valueOf(VERSION), LuaValue.valueOf(VenvyAPKVersionCodeUtils.getVersionName(App.getContext())));
7379
table.set(LuaValue.valueOf(SDK_VERSION), LuaValue.valueOf(Config.SDK_VERSION));
74-
table.set(LuaValue.valueOf(USER_AGENT), LuaValue.valueOf(VenvyDeviceUtil.getUserAgent(context)));
7580
table.set(LuaValue.valueOf(OS_VERSION), LuaValue.valueOf(VenvyDeviceUtil.getOsVersion()));
7681
table.set(LuaValue.valueOf(UD_ID), LuaValue.valueOf(VenvyDeviceUtil.getAndroidID(context)));
82+
table.set(LuaValue.valueOf(NETWORK), LuaValue.valueOf(VenvyDeviceUtil.getNetWorkType(context)));
83+
table.set(LuaValue.valueOf(LANGUAGE), LuaValue.valueOf(VenvyDeviceUtil.getLanguage(context)));
84+
table.set(LuaValue.valueOf(PHONE_MODEL), LuaValue.valueOf(android.os.Build.MODEL));
85+
table.set(LuaValue.valueOf(PHONE_PROVIDER), LuaValue.valueOf(android.os.Build.BRAND));
86+
table.set(LuaValue.valueOf(OS_TYPE), LuaValue.valueOf(1));
87+
table.set(LuaValue.valueOf(ANDROID_ID), LuaValue.valueOf(VenvyDeviceUtil.getAndroidID(context)));
88+
table.set(LuaValue.valueOf(IMEI), LuaValue.valueOf(VenvyDeviceUtil.getIMEI(context)));
89+
table.set(LuaValue.valueOf(DEVICE_TYPE), LuaValue.valueOf(1));
90+
table.set(LuaValue.valueOf(PHONE_WIDTH), LuaValue.valueOf(VenvyUIUtil.getScreenWidth(context)));
91+
table.set(LuaValue.valueOf(PHONE_HEIGHT), LuaValue.valueOf(VenvyUIUtil.getScreenHeight(context)));
92+
table.set(LuaValue.valueOf(PPI), LuaValue.valueOf(VenvyUIUtil.getScreenPPI(context)));
93+
table.set(LuaValue.valueOf(CARRIER), LuaValue.valueOf(VenvyDeviceUtil.getSubscriptionOperatorType(context)));
7794
String ip = VenvyDeviceUtil.getLocalIPAddress();
7895
if (!TextUtils.isEmpty(ip)) {
7996
table.set(LuaValue.valueOf(IP), LuaValue.valueOf(ip));
8097
}
81-
table.set(LuaValue.valueOf(NETWORK), LuaValue.valueOf(VenvyDeviceUtil.getNetWorkName(context)));
82-
table.set(LuaValue.valueOf(LANGUAGE), LuaValue.valueOf(VenvyDeviceUtil.getLanguage(context)));
83-
table.set(LuaValue.valueOf(PHONE_MODEL), LuaValue.valueOf(android.os.Build.MODEL));
84-
table.set(LuaValue.valueOf(PHONE_PROVIDER), LuaValue.valueOf(android.os.Build.BRAND));
85-
table.set(LuaValue.valueOf(ANDROID_ID), LuaValue.valueOf(VenvyDeviceUtil.getAndroidID(App.getContext())));
86-
table.set(LuaValue.valueOf(IMEI), LuaValue.valueOf(VenvyDeviceUtil.getIMEI(App.getContext())));
98+
String appName = VenvyAPKVersionCodeUtils.getAppName(context);
99+
if (!TextUtils.isEmpty(appName)) {
100+
table.set(LuaValue.valueOf(APP_NAME), LuaValue.valueOf(appName));
101+
}
102+
String packageName = VenvyAPKVersionCodeUtils.getPackageName(context);
103+
if (!TextUtils.isEmpty(packageName)) {
104+
table.set(LuaValue.valueOf(PKG_NAME), LuaValue.valueOf(packageName));
105+
}
106+
String macAddress = VenvyDeviceUtil.getMacAddress();
107+
if (!TextUtils.isEmpty(macAddress)) {
108+
table.set(LuaValue.valueOf(MAC), LuaValue.valueOf(macAddress));
109+
}
110+
String imsi = VenvyDeviceUtil.getIMSI(context);
111+
if (!TextUtils.isEmpty(imsi)) {
112+
table.set(LuaValue.valueOf(IMSI), LuaValue.valueOf(imsi));
113+
}
87114
return table;
88115
}
89116
}

VideoOS/LuaViewSDK/src/cn/com/venvy/lua/plugin/LVDevicePlugin.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import android.os.Build;
44
import android.text.TextUtils;
55

6+
import com.taobao.luaview.util.AndroidUtil;
7+
68
import org.luaj.vm2.LuaValue;
79
import org.luaj.vm2.Varargs;
810
import org.luaj.vm2.lib.VarArgFunction;
@@ -31,6 +33,7 @@ public static void install(VenvyLVLibBinder venvyLVLibBinder, Platform platform)
3133
venvyLVLibBinder.set("isTitleBarShow", sIsTitleBarShow == null ? sIsTitleBarShow = new IsTitleBarShow() : sIsTitleBarShow);
3234
venvyLVLibBinder.set("packageName", new PackageName(platform));
3335
venvyLVLibBinder.set("getIdentity", new UDID(platform));
36+
venvyLVLibBinder.set("screenScale", new ScreenScale());
3437

3538
}
3639

@@ -51,6 +54,13 @@ public Varargs invoke(Varargs args) {
5154
}
5255
}
5356

57+
private static class ScreenScale extends VarArgFunction {
58+
@Override
59+
public Varargs invoke(Varargs args) {
60+
return valueOf(AndroidUtil.getDensity(App.getContext()) + 0.5f);
61+
}
62+
}
63+
5464
/**
5565
* 判断是否是竖屏
5666
*/

VideoOS/LuaViewSDK/src/cn/com/venvy/lua/plugin/LVEventPlugin.java

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66

77
import com.taobao.luaview.util.JsonUtil;
88
import com.taobao.luaview.util.LuaUtil;
9+
import com.taobao.luaview.util.TextUtil;
910

11+
import org.json.JSONException;
12+
import org.json.JSONObject;
1013
import org.luaj.vm2.LuaTable;
1114
import org.luaj.vm2.LuaValue;
1215
import org.luaj.vm2.Varargs;
@@ -28,6 +31,9 @@
2831
* lua路由插件
2932
* Created by Arthur on 2017/8/21.
3033
* <p>
34+
* <p>
35+
* LuaView://topLuaView?template=xxx.lua&id=xxx&priority=xxx
36+
* <p>
3137
* * A类小程序 L uaView://defaultLuaView?template=xxx.lua&id=xxx
3238
* * 跳转B类小程序 LuaView://applets?appletId=xxxx&type=x&appType=x(type: 1横屏,2竖屏,appType: 1 lua,2 H5)
3339
* *
@@ -80,33 +86,52 @@ public Varargs invoke(Varargs args) {
8086
}
8187
}
8288
}
89+
if(!map.keySet().contains("miniAppId")){
90+
// 如果过来的uri中不带miniAppId,则需要尝试去table中找miniAppId put进 map里
91+
try {
92+
JSONObject jsonObject = new JSONObject(JsonUtil.toString(table));
93+
JSONObject miniAppInfo = jsonObject.getJSONObject("miniAppInfo");
94+
if(miniAppInfo != null){
95+
String miniAppId = miniAppInfo.getString("miniAppId");
96+
if(!TextUtils.isEmpty(miniAppId)){
97+
map.put("miniAppId",miniAppId);
98+
}
99+
}
100+
} catch (JSONException e) {
101+
e.printStackTrace();
102+
}
103+
}
104+
83105
if (map.size() > 0) {
84106
info.withSerializable("data", map);
85107
}
86108
String protocolHost = uri.getHost();
87109
if (protocolHost.equalsIgnoreCase("defaultLuaView")) {
88110
// A类容器内部跳转
89111
info.withTargetViewParent(mPlatform.getContentViewGroup()).withTargetPlatform("platform", mPlatform).navigation();
112+
113+
} else if (protocolHost.equalsIgnoreCase("topLuaView")) {
114+
// 标签小程序 - [top level]
115+
// Bundle bundle = new Bundle();
116+
// bundle.putString(VenvyObservableTarget.Constant.CONSTANT_LUA_NAME, info.getBundle().getString("template"));
117+
// bundle.putString(VenvyObservableTarget.Constant.CONSTANT_ID, info.getBundle().getString("id"));
118+
ObservableManager.getDefaultObserable().sendToTarget(VenvyObservableTarget.TAG_ADD_LUA_SCRIPT_TO_TOP_LEVEL, info.getBundle());
119+
90120
} else if (protocolHost.equalsIgnoreCase("applets")) {
91121
String type = info.getBundle().getString("type");
92122
String appType = info.getBundle().getString("appType");
93-
if(TextUtils.isEmpty(appType)){
123+
if (TextUtils.isEmpty(appType)) {
94124
VenvyLog.d("appType is null");
95125
// appType为空默认指定为lua
96126
appType = String.valueOf(VenvyObservableTarget.Constant.CONSTANT_APP_TYPE_LUA);
97127
}
98-
VenvyLog.d("type is "+type+" , appType is "+appType);
99-
if(TextUtils.isEmpty(type)){
128+
VenvyLog.d("type is " + type + " , appType is " + appType);
129+
if (TextUtils.isEmpty(type)) {
100130
// B类小程序内部跳转
101131
info.withTargetViewParent(mPlatform.getContentViewGroup()).withTargetPlatform("platform", mPlatform).navigation();
102-
103-
// Bundle bundle = new Bundle();
104-
// bundle.putString(VenvyObservableTarget.KEY_APPLETS_ID, info.getBundle().getString("appletId"));
105-
// bundle.putString(VenvyObservableTarget.Constant.CONSTANT_TEMPLATE, info.getBundle().getString("template"));
106-
// bundle.putString(VenvyObservableTarget.Constant.CONSTANT_ID, info.getBundle().getString("id"));
107-
// bundle.putString(VenvyObservableTarget.Constant.CONSTANT_DATA, JsonUtil.toString(table));
108132
ObservableManager.getDefaultObserable().sendToTarget(VenvyObservableTarget.TAG_ADD_LUA_SCRIPT_TO_VISION_PROGRAM, null);
109-
}else{
133+
134+
} else {
110135
// 发起一个视联网小程序
111136
Bundle bundle = new Bundle();
112137
bundle.putString(VenvyObservableTarget.KEY_APPLETS_ID, info.getBundle().getString("appletId"));

0 commit comments

Comments
 (0)