2.2.18
This commit is contained in:
parent
a8dc0a192f
commit
7af8c10ba5
|
|
@ -11,17 +11,10 @@ android {
|
|||
minSdk 21
|
||||
targetSdk 34
|
||||
versionCode 1
|
||||
versionName "2.2.16-N"
|
||||
versionName "2.2.18-Y"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
aidl true
|
||||
}
|
||||
|
|
@ -30,6 +23,52 @@ android {
|
|||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
}
|
||||
signingConfigs {
|
||||
X {//4418
|
||||
keyAlias 'xixun'
|
||||
keyPassword '123456'
|
||||
storeFile file('D:/develop/xixun/signedFile/keystore/xixun-x.keystore')
|
||||
storePassword '123456'
|
||||
}
|
||||
Y {//210
|
||||
keyAlias 'xixun'
|
||||
keyPassword '123456'
|
||||
storeFile file('D:/develop/xixun/signedFile/keystore/xixun-y.keystore')
|
||||
storePassword '123456'
|
||||
}
|
||||
D_3568a {//3568a 视美泰
|
||||
keyAlias 'keystore'
|
||||
keyPassword 'android'
|
||||
storeFile file('D:/develop/xixun/signedFile/keystore/keystore.jks')
|
||||
storePassword 'android'
|
||||
}
|
||||
D_3568N {//3568 恩泰世
|
||||
keyAlias 'systemkey'
|
||||
keyPassword '123456'
|
||||
storeFile file('D:/_docs/comp/android/keystore/3568D恩泰世 123456.jks')
|
||||
storePassword '123456'
|
||||
}
|
||||
D_YF {//3566 YF
|
||||
keyAlias 'platform'
|
||||
keyPassword 'youngfeel'
|
||||
storeFile file('D:/_docs/comp/android/keystore/yf356x_android11_system.jks')
|
||||
storePassword 'youngfeel'
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
abortOnError false
|
||||
}
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
signingConfig signingConfigs.D_3568N
|
||||
}
|
||||
debug {
|
||||
signingConfig signingConfigs.D_3568N
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools" >
|
||||
<!-- android:sharedUserId="android.uid.system"-->
|
||||
<!-- android:sharedUserMaxSdkVersion="32">-->
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:sharedUserId="android.uid.system">
|
||||
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
|
|
|||
BIN
XixunPlayer/app/src/main/assets/images/code_cn.png
Normal file
BIN
XixunPlayer/app/src/main/assets/images/code_cn.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.4 KiB |
BIN
XixunPlayer/app/src/main/assets/images/code_en.png
Normal file
BIN
XixunPlayer/app/src/main/assets/images/code_en.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
|
|
@ -106,7 +106,8 @@
|
|||
<img src="images/web3.png" class="imgSize1" style="object-fit: contain;">
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%;min-height: 25%;">
|
||||
<div style="display: flex;align-items: flex-start;justify-content: space-between;width: 100%;min-height: 25%;">
|
||||
<div>
|
||||
<div class="fontBold Hcenter">
|
||||
<span class="step-icon">📌</span>
|
||||
<span class="i18n-text" data-i18n="notes">注意事项</span>
|
||||
|
|
@ -115,6 +116,12 @@
|
|||
设备需切换至联网模式并关联云平台账号,云服务器地址:https://www.ledokcloud.com
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 1rem;"></div>
|
||||
<div>
|
||||
<img id="videoCommentaryQrcode" src="images/code_cn.png" class="imgSize3" style="object-fit: contain;">
|
||||
<div class="qrcode-text i18n-text" data-i18n="videoCommentary">视频详解</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -166,7 +173,7 @@
|
|||
<div>
|
||||
<img src="images/code.png" class="imgSize3"
|
||||
style="object-fit: contain;">
|
||||
<!-- <div class="qrcode-text i18n-text" data-i18n="scanDownload">扫码下载APP</div> -->
|
||||
<div class="qrcode-text i18n-text" data-i18n="scanDownload">扫码下载APP</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -244,14 +251,15 @@
|
|||
appStep2: "2.创建并编辑节目",
|
||||
appStep3: "3.发送节目到设备",
|
||||
appNote: "设备需切换至热点模式,手机需连接该设备热点",
|
||||
scanDownload: "扫码下载APP",
|
||||
scanDownload: "下载APP",
|
||||
usbStep1: "1.节目文件存入U盘",
|
||||
usbStep2: "2.U盘接入设备",
|
||||
usbStep3: "3.系统自动播放",
|
||||
usbNote: "无设备模式限制,U盘即插即播",
|
||||
loading: "正在接收Android宽高...",
|
||||
loadFail: "接收宽高失败",
|
||||
unknownNetwork: "未知网络"
|
||||
unknownNetwork: "未知网络",
|
||||
videoCommentary: "视频详解"
|
||||
},
|
||||
// 英文
|
||||
en: {
|
||||
|
|
@ -272,14 +280,15 @@
|
|||
appStep2: "2.Create and edit programs",
|
||||
appStep3: "3.Send programs to device",
|
||||
appNote: "The device must be switched to hotspot mode, and the mobile phone must connect to the device's hotspot",
|
||||
scanDownload: "Scan to download APP",
|
||||
scanDownload: "Download APP",
|
||||
usbStep1: "1.Save program files to USB",
|
||||
usbStep2: "2.Connect USB to device",
|
||||
usbStep3: "3.System plays automatically",
|
||||
usbNote: "No device mode restrictions, plug and play with USB",
|
||||
loading: "Receiving Android width and height...",
|
||||
loadFail: "Failed to receive width and height",
|
||||
unknownNetwork: "Unknown Network"
|
||||
unknownNetwork: "Unknown Network",
|
||||
videoCommentary: "Video commentary"
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -375,7 +384,8 @@
|
|||
const cardId = document.getElementById("cardId");
|
||||
const cardVideos = document.querySelectorAll(".card-bg-video"); // 所有卡片视频
|
||||
const infoBarVideo = document.querySelector(".info-bar-bg-video"); // 顶部信息栏视频
|
||||
|
||||
const qrcodeImg = document.getElementById("videoCommentaryQrcode");
|
||||
qrcodeImg.src = currentLang === "zh" ? "images/code_cn.png" : "images/code_en.png";
|
||||
try {
|
||||
// ---------------------- 1. 获取并更新宽高 ----------------------
|
||||
const sizeJson = AndroidBridge.getSizeFromAndroid();
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ public class AIDLService extends Service {
|
|||
@SuppressLint("ResourceType")
|
||||
@Override
|
||||
public String executeJosnCommand(String jsonstr) throws RemoteException {
|
||||
Util.println("AIDL executeJsonCommand ..."+jsonstr);//{"_type":"DeleteTask","id":"652522a0e81d1e000009201a","sendTo":"yzd-player"}
|
||||
Util.println("AIDL executeJson "+jsonstr);//{"_type":"DeleteTask","id":"652522a0e81d1e000009201a","sendTo":"yzd-player"}
|
||||
String commandId = null;
|
||||
try {
|
||||
var jsonBytes = jsonstr.getBytes(StandardCharsets.UTF_8);
|
||||
|
|
|
|||
|
|
@ -182,7 +182,6 @@ public class MainActivity extends Activity implements Choreographer.FrameCallbac
|
|||
protected void onResume() {
|
||||
super.onResume();
|
||||
Util.println(" ==>> MainActivity onResume >> "+hashCode());
|
||||
if(progView==null && insView==null) runOnUiThread(this::initProg);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -190,7 +189,6 @@ public class MainActivity extends Activity implements Choreographer.FrameCallbac
|
|||
super.onPause();
|
||||
Util.println(" ==<< MainActivity onPause << "+hashCode());
|
||||
state = 8;
|
||||
stopProg();
|
||||
}
|
||||
|
||||
CardService serviCard;
|
||||
|
|
@ -246,31 +244,22 @@ public class MainActivity extends Activity implements Choreographer.FrameCallbac
|
|||
return "{\"width\":\"" + Util.screenWidth + "px\",\"height\":\"" + Util.screenHeight + "px\"}";
|
||||
}
|
||||
@JavascriptInterface
|
||||
public String getNetwork() {
|
||||
// 获取当前网络类型
|
||||
public String getNetwork() {// 获取当前网络类型
|
||||
NetworkTypeUtil.NetworkType networkType = NetworkTypeUtil.getCurrentNetworkType(MainActivity.this);
|
||||
String value = "";
|
||||
switch (networkType) {
|
||||
case WIFI:
|
||||
value = NetworkTypeUtil.getWifiSsid(MainActivity.this);
|
||||
// 处理未获取到SSID的情况
|
||||
value = NetworkTypeUtil.getWifiSsid(MainActivity.this);// 处理未获取到SSID的情况
|
||||
if(O.isEmpty(value)) value = "未知WiFi名称";
|
||||
System.out.println("当前是 WiFi 网络:" + value);
|
||||
break;
|
||||
case ETHERNET:
|
||||
System.out.println("当前是有线网络");
|
||||
break;
|
||||
case CELLULAR:
|
||||
// 细分蜂窝网络类型(2G/3G/4G)
|
||||
String cellularSubType = NetworkTypeUtil.getCellularSubType(MainActivity.this);
|
||||
value = cellularSubType;
|
||||
System.out.println("当前是蜂窝网络:" + cellularSubType);
|
||||
case CELLULAR:// 细分蜂窝网络类型(2G/3G/4G)
|
||||
value = NetworkTypeUtil.getCellularSubType(MainActivity.this);;
|
||||
break;
|
||||
case NONE:
|
||||
System.out.println("无网络连接");
|
||||
break;
|
||||
case UNKNOWN:
|
||||
System.out.println("未知网络类型(如蓝牙、VPN)");
|
||||
break;
|
||||
}
|
||||
var IP = NetworkTypeUtil.getActiveNetworkIp(MainActivity.this);
|
||||
|
|
@ -570,11 +559,17 @@ public class MainActivity extends Activity implements Choreographer.FrameCallbac
|
|||
AudioManager audioManager;
|
||||
AudioFocusRequest audioFocusRequest;
|
||||
public void stopProg() {
|
||||
Util.println("---- Stop Prog\n");
|
||||
avas.clear();
|
||||
showHides.clear();
|
||||
showeds.clear();
|
||||
curAva = 0;
|
||||
curTimes = 1;
|
||||
if(backViewL==null) setContentView(backView);
|
||||
else {
|
||||
setContentView(backViewL);
|
||||
backViewL.loadUrl("file:///android_asset/local_page.html");
|
||||
}
|
||||
if(insView!=null) {
|
||||
insView.release();
|
||||
insView = null;
|
||||
|
|
@ -583,11 +578,6 @@ public class MainActivity extends Activity implements Choreographer.FrameCallbac
|
|||
progView.release();
|
||||
progView = null;
|
||||
}
|
||||
if(backViewL==null) setContentView(backView);
|
||||
else {
|
||||
setContentView(backViewL);
|
||||
backViewL.loadUrl("file:///android_asset/local_page.html");
|
||||
}
|
||||
System.gc();
|
||||
}
|
||||
public boolean delProgFile() {
|
||||
|
|
@ -609,9 +599,11 @@ public class MainActivity extends Activity implements Choreographer.FrameCallbac
|
|||
return ok;
|
||||
}
|
||||
public void initProg() {
|
||||
Util.println("\n---- Init Prog");
|
||||
if(progView!=null || insView!=null) return;
|
||||
state = 1;
|
||||
try {
|
||||
Util.println("\nParse Insert Prog Json");
|
||||
Util.println(" Parse Insert Json");
|
||||
var root = JSMap.fromClose(new BufferedInputStream(new FileInputStream(Util.programDir + "/insert")));
|
||||
var task = root.jsmap("task");
|
||||
if(task==null && root.containsKey("layers")) task = new JSMap("items", new JSList<>(new JSMap("_program", root)));
|
||||
|
|
@ -626,7 +618,7 @@ public class MainActivity extends Activity implements Choreographer.FrameCallbac
|
|||
}
|
||||
var demand = 0;
|
||||
try {
|
||||
Util.println("\nParse Prog Json");
|
||||
Util.println(" Parse Json");
|
||||
var root = JSMap.fromClose(new BufferedInputStream(new FileInputStream(Util.programDir + "/program")));
|
||||
var task = root.jsmap("task");
|
||||
demand = root.intg("Demand");
|
||||
|
|
@ -669,8 +661,8 @@ public class MainActivity extends Activity implements Choreographer.FrameCallbac
|
|||
} else if(state != 7) state = 3;
|
||||
}
|
||||
public void initProg(byte[] json) {
|
||||
Util.println("\n---- Init Prog with json");
|
||||
try {
|
||||
Util.println("\nParse Prog Json");
|
||||
var root = JSMap.from(json);
|
||||
var task = root.jsmap("task");
|
||||
if(task==null) {
|
||||
|
|
|
|||
|
|
@ -490,9 +490,20 @@ public class Prog extends AbsLayout {
|
|||
void release() {
|
||||
try {
|
||||
setVisibility(GONE);
|
||||
View view;
|
||||
for(int cc=0; cc<getChildCount(); cc++) if((view = getChildAt(cc)) instanceof SrcVideo) ((SrcVideo) view).release();
|
||||
for(var page : pages) for(var layer : page.layers) for(var src : layer.srcs) if(src.tts!=null) src.tts.shutdown();
|
||||
for(var page : pages) for(var layer : page.layers) for(var src : layer.srcs) {
|
||||
if(src.tts!=null) src.tts.shutdown();
|
||||
if(src.view instanceof SrcVideo) {
|
||||
((SrcVideo) src.view).release();
|
||||
src.view = null;
|
||||
Util.println(" SrcVideo released");
|
||||
} else if(src.view instanceof WebView) {
|
||||
var web = (WebView) src.view;
|
||||
web.removeAllViews();
|
||||
web.destroy();
|
||||
src.view = null;
|
||||
Util.println(" WebView destroyed");
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Util.printStackTrace(e);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user