Browse Source

fix: ci

master
高志龙 4 weeks ago
parent
commit
7cca91f9f3
  1. 1
      .idea/vcs.xml
  2. 5
      app/build.gradle
  3. BIN
      app/libs/extmanager.jar
  4. 10
      app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java
  5. 1
      app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java
  6. 39
      app/src/main/java/qianmu/container/activity/program/ScreenSaverActivity.java
  7. 1
      app/src/main/java/qianmu/container/app/Constant.java
  8. 12
      app/src/main/java/qianmu/container/app/MyApplication.java
  9. 22
      app/src/main/java/qianmu/container/data/PowerData.java
  10. 2
      app/src/main/java/qianmu/container/mqtt/MQTTService.java
  11. 57
      app/src/main/java/qianmu/container/receiver/SystemEventReceiver.java
  12. 72
      app/src/main/java/qianmu/container/service/ContainerService.java
  13. 43
      app/src/main/java/qianmu/container/util/SignWayUtil.java

1
.idea/vcs.xml

@ -3,5 +3,6 @@
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="svn" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="$PROJECT_DIR$/.claude/worktrees/goofy-neumann-4695b0" vcs="Git" />
</component>
</project>

5
app/build.gradle

@ -12,7 +12,7 @@ android {
minSdkVersion 24
targetSdkVersion 30
versionCode 6
versionName "V2.0.8.24"
versionName "V2.0.8.26"
// 2.0.8.2
// 2.0.8.3 mac修改
// V2.0.8.5
@ -109,7 +109,8 @@ dependencies {
implementation files('libs/signway.jar') //
implementation files('libs/sdkapi.jar') //Bv-3588
implementation files('libs/smdt.jar') //
implementation files('libs/DUI-lite-SDK-for-Android-3.5.0-466a4c77.jar') //
implementation files('libs/DUI-lite-SDK-for-Android-3.5.0-466a4c77.jar') //
implementation files('libs\\extmanager.jar') //TCL 982
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

BIN
app/libs/extmanager.jar

Binary file not shown.

10
app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java

@ -30,6 +30,8 @@ import com.google.gson.JsonParser;
import com.iflytek.sparkchain.core.SparkChain;
import com.iflytek.sparkchain.core.SparkChainConfig;
import com.sdkapi.api.SdkApi;
import com.tclsy.extmanager.authority.AuthorityManager;
import com.tclsy.extmanager.power.TPowerManager;
import java.io.File;
import java.text.SimpleDateFormat;
@ -264,7 +266,13 @@ public class UpdateFileActivity extends BaseActivity {
//灰度主板静默安装apk需要提前连接
initHuidu();
}
if(Constant.androidBoardType.equals("tcl")){
try{
TPowerManager.getInstance().setAlarmStatus(true);
}catch (Exception e){
LoggerUtil.e("TCL:", e.getMessage());
}
}
if(Constant.androidBoardType.equals("xwst2")){
//新版欣威视通初始化
SdkApi.newInstance(this);

1
app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java

@ -709,7 +709,6 @@ public class WebViewActivity extends BaseActivity {
}
public void onResults(AIResult results) {
LoggerUtil.e("ASRInit: ", String.valueOf(results.isLast()));
if (results.getResultType() == AIConstant.AIENGINE_MESSAGE_TYPE_JSON) {
JSONResultParser parser = new JSONResultParser((String) results.getResultObject());
if("".equals(parser.getVar()) && !"".equals(parser.getText())){

39
app/src/main/java/qianmu/container/activity/program/ScreenSaverActivity.java

@ -335,13 +335,13 @@ public class ScreenSaverActivity extends BaseActivity {
} else if (Constant.NOVA_REBOOT.equals(message.getCode())) {
LoggerUtil.e("ScreenSaverActivity", "诺瓦设备重启");
reboot();
login("reboot");
} else if (Constant.NOVA_UPDATE_APP.equals(message.getCode())) {
LoggerUtil.e("ScreenSaverActivity", "诺瓦设备更新app");
updateApp(message.getData());
} else if (Constant.NOVA_SCREEN_SHOT.equals(message.getCode())) {
LoggerUtil.e("ScreenSaverActivity", "诺瓦设备截屏");
Screenshot(message.getData());
login("screenShot");
} else if (Constant.NOVA_SCREEN_POWER_ON.equals(message.getCode())) {
//LoggerUtil.e("ScreenSaverActivity", "诺瓦设备开屏");
//screenPower("OPEN");
@ -458,21 +458,25 @@ public class ScreenSaverActivity extends BaseActivity {
LoggerUtil.e("QHT: ","登录");
instance.nvLoginAsync("{\"sn\":\"" + sn + "\",\"username\":\"admin\",\"rememberPwd\":1,\"password\":\""
+ TB40_password + "\",\"loginType\":0}", new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 登录1: ", "code: " + code + "data: " + data);
}
});
instance.nvLoginAsync("{\"sn\":\"" + sn + "\",\"username\":\"admin\",\"rememberPwd\":1,\"password\":\""
+ TB40_password + "\",\"loginType\":1}", new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 登录1: ", "code: " + code + "data: " + data);
instance.nvLoginAsync("{\"sn\":\"" + sn + "\",\"username\":\"admin\",\"rememberPwd\":1,\"password\":\""
+ TB40_password + "\",\"loginType\":1}", new ViplexCore.CallBack() {
@Override
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 登录2: ", "code: " + code + "data: " + data);
if("reboot".equals(cmd)){
reboot();
if(code == 0 || code == 65353){
if("reboot".equals(cmd)){
reboot();
}else if("screenShot".equals(cmd)){
Screenshot();
}
}
}
});
}
});
}
// TB40 重启
@ -484,7 +488,12 @@ public class ScreenSaverActivity extends BaseActivity {
public void dataCallBack(int code, String data) {
LoggerUtil.e("QHT: 重启:", "code:" + code + ",data:" + data);
if(code == 65350){
login("reboot");
new android.os.Handler(android.os.Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
login("reboot");
}
}, 60 * 1000);
}
}
});
@ -544,7 +553,8 @@ public class ScreenSaverActivity extends BaseActivity {
});
}
public void Screenshot(String time) {
public void Screenshot() {
String time = String.valueOf(System.currentTimeMillis());
String data3 = "{\"sn\":\"" + sn
+ "\",\"width\":1920,\"height\":1080,\"downLoadDirectoryPath\":\"/storage/emulated/0/\",\"pictureName\":\"screenShot.png\",\"pictureType\":1}";
instance.nvDownLoadScreenshotAsync(data3, new ViplexCore.CallBack() {
@ -554,13 +564,10 @@ public class ScreenSaverActivity extends BaseActivity {
if (code == 0) {
uploadScreenShot("/storage/emulated/0/screenShot.png",
DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE), time);
}else if(code == 65350){
login("");
}
}
});
}
// 上传截屏
public static void uploadScreenShot(String filePath, String code, String timestamp) {

1
app/src/main/java/qianmu/container/app/Constant.java

@ -33,6 +33,7 @@ public class Constant {
// public static String androidBoardType = "bv"; //设备板子型号 Bv-3588M
// public static String androidBoardType = "smt"; //设备板子型号 视美泰
// public static String androidBoardType = "ctf"; //创泰丰
// public static String androidBoardType = "tcl"; //TCL 982
public static final String VOID_STOP = "void_stop";//
public static final String VOID_ERROR = "void_error";

12
app/src/main/java/qianmu/container/app/MyApplication.java

@ -9,6 +9,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
import com.aispeech.export.config.AuthConfig;
import com.alibaba.android.arouter.BuildConfig;
@ -20,6 +21,8 @@ import com.lztek.toolkit.Lztek;
import com.lzy.okgo.OkGo;
import com.aispeech.DUILiteConfig;
import com.aispeech.DUILiteSDK;
import com.tclsy.extmanager.authority.AuthorityManager;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.security.KeyStore;
@ -88,6 +91,15 @@ public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
myApplication = this;
if(Constant.androidBoardType.equals("tcl")){
boolean result = AuthorityManager.getInstance().verify("2d9e9b15c070d0b57f5281e13c03f1ac960ce86ab8835bb8a747042aef8ef53c");
if (result) {
Log.e("TAG", "Auth SDK success, can call other interface ");
} else {
Log.e("TAG", "Auth SDK failed, please check the auth key is correct");
}
}
try {
Thread.sleep(6000);
} catch (InterruptedException e) {

22
app/src/main/java/qianmu/container/data/PowerData.java

@ -182,24 +182,14 @@ public class PowerData extends BaseData {
LoggerUtil.e("设置开关机时间:", dataJson);
newTimeInfo=dataJson;
//天津K11亿晟3288重启2次设备避免黑屏
//亿晟重启2次设备避免黑屏
Calendar cal= Calendar.getInstance();
String format = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
if(!DeviceData.getDeviceInfo(DeviceData.DEVICE_RESTART_TIME).equals(format)){
DeviceData.pingNet(null, null, new QuerySuccessListener() {
@Override
public void onSuccess() {
LoggerUtil.e("pingNet()", "开机检测网络正常");
}
},new QueryErrorListener() {
@Override
public void onError() {
LoggerUtil.e("pingNet()", "开机检测网络异常,重启设备");
DeviceData.saveDeviceInfo((DeviceData.DEVICE_RESTART_TIME),format);
SignWayUtil.reboot();
}
} );
if(!DeviceData.getDeviceInfo(DeviceData.DEVICE_RESTART_TIME).equals(format) && !StringUtil.isEmpty(parameter) && Constant.androidBoardType.equals("ys")){
LoggerUtil.e("亿晟防止定时开机黑屏:", "当天开机,重启设备");
DeviceData.saveDeviceInfo((DeviceData.DEVICE_RESTART_TIME),format);
SignWayUtil.reboot();
return;
}
if (StringUtil.isEmpty(parameter)) {

2
app/src/main/java/qianmu/container/mqtt/MQTTService.java

@ -472,7 +472,7 @@ public class MQTTService extends Service {
if(closeMqttBean.getType().equals("firmware-update")){
//固件升级
systemUpdate(closeMqttBean);
//systemUpdate(closeMqttBean);
}else if(closeMqttBean.getType().equals("app-update")){
//APP下发
appUpdate(closeMqttBean);

57
app/src/main/java/qianmu/container/receiver/SystemEventReceiver.java

@ -1,5 +1,7 @@
package qianmu.container.receiver;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@ -22,27 +24,42 @@ public class SystemEventReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case Intent.ACTION_BOOT_COMPLETED://系统启动
intent.setClass(context, UpdateFileActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
break;
case Intent.ACTION_MEDIA_MOUNTED://挂载外部存储
Uri uri = intent.getData();
if (uri == null) {
LoggerUtil.e("MEDIA", "获取U盘挂载路径失败");
return;
}
// EventBus.getDefault().post(new MessageEvent(Intent.ACTION_MEDIA_MOUNTED, uri.getPath()));
break;
case Intent.ACTION_MEDIA_UNMOUNTED://卸载外部存储
EventBus.getDefault().post(new MessageEvent(Intent.ACTION_MEDIA_UNMOUNTED));
break;
if (intent == null || intent.getAction() == null) {
return;
}
try {
String action = intent.getAction();
switch (action) {
case Intent.ACTION_BOOT_COMPLETED:
Intent launchIntent = new Intent(context, UpdateFileActivity.class);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
1001,
launchIntent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (alarmManager != null) {
alarmManager.set(AlarmManager.RTC,System.currentTimeMillis() + 1500, pendingIntent );
}
break;
case Intent.ACTION_MEDIA_MOUNTED:
Uri uri = intent.getData();
if (uri == null) {
LoggerUtil.e("MEDIA", "获取U盘挂载路径失败");
return;
}
break;
case Intent.ACTION_MEDIA_UNMOUNTED:
break;
}
} catch (Throwable e) {
e.printStackTrace();
}
}
}

72
app/src/main/java/qianmu/container/service/ContainerService.java

@ -155,7 +155,7 @@ public class ContainerService extends Service {
try {
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> appProcesses = am.getRunningAppProcesses();
if (appProcesses == null) return false;
if (appProcesses == null || appProcesses.isEmpty()) return false;
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
if (!appProcess.processName.equals(DeviceUtil.getPackageName())) continue;
if (appProcess.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND)
@ -173,32 +173,56 @@ public class ContainerService extends Service {
* 检测应用状态 如果在后台 唤醒到前台
*/
public void detectionAppState() {
final ActivityManager manager = (ActivityManager) MyApplication.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
// 获得手机进程列表
List<ActivityManager.RunningAppProcessInfo> infoList = manager.getRunningAppProcesses();
String packageName = DeviceUtil.getPackageName();
for (ActivityManager.RunningAppProcessInfo info : infoList) {
if (packageName.equals(info.processName)
|| "com.android.packageinstaller".equals(info.processName)
|| "com.google.android.packageinstaller".equals(info.processName)
|| "com.frogshealth.qianmu".equals(info.processName)
|| "com.tencent.wmpf".equals(info.processName)) {
if (info.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return;
try {
ActivityManager manager =(ActivityManager) MyApplication.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
if (manager == null) {
LoggerUtil.e("detectionAppState","ActivityManager is null");
return;
}
// 获取运行中的进程
List<ActivityManager.RunningAppProcessInfo> infoList;
try {
infoList = manager.getRunningAppProcesses();
} catch (Exception e) {
LoggerUtil.e("detectionAppState", "getRunningAppProcesses error:" + e);
return;
}
if (infoList == null || infoList.isEmpty()) {
LoggerUtil.e("detectionAppState", "RunningAppProcesses is null");
return;
}
String packageName = DeviceUtil.getPackageName();
for (ActivityManager.RunningAppProcessInfo info : infoList) {
if (info == null) {
continue;
}
String processName = info.processName;
if (packageName.equals(processName)
|| "com.android.packageinstaller".equals(processName)
|| "com.google.android.packageinstaller".equals(processName)
|| "com.frogshealth.qianmu".equals(processName)
|| "com.tencent.wmpf".equals(processName)) {
if (info.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return;
}
}
}
LoggerUtil.e("detectionAppState", "检测应用被退到后台,重新唤醒到前台");
String deviceType = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE);
if ("信发".equals(deviceType) || "双面屏".equals(deviceType)) {
Intent intent = new Intent( MyApplication.getInstance(), ScreenSaverActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MyApplication.getInstance().startActivity(intent);
} else {
LoggerUtil.e("detectionAppState", "跳转到导视");
ARouter.getInstance()
.build(Constant.ROUTE_WEB_VIEW)
.withBoolean(Constant.KEY_LOAD_H5_URL, true)
.navigation();
}
} catch (Exception e) {
LoggerUtil.e("detectionAppState","error:" + Log.getStackTraceString(e));
}
LoggerUtil.e("detectionAppState","检测应用被退到后台,重新唤醒到前台");
if("信发".equals( DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE))||"双面屏".equals( DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE))){
//信发
Intent intent = new Intent(MyApplication.getInstance(), ScreenSaverActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
MyApplication.getInstance().startActivity(intent);
}else {
LoggerUtil.e("detectionAppState","跳转到导视");
ARouter.getInstance().build(Constant.ROUTE_WEB_VIEW).withBoolean(Constant.KEY_LOAD_H5_URL, true).navigation();
}
}
/**

43
app/src/main/java/qianmu/container/util/SignWayUtil.java

@ -5,17 +5,24 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Build;
import android.os.RemoteException;
import android.os.signwaymanager.SignwayManager;
import android.util.Log;
import android.os.Build.VERSION;
import android.view.View;
import androidx.core.content.FileProvider;
import com.sdkapi.api.SdkApi;
import com.sdkapi.common.ResultCallback;
import com.sdkapi.common.ResultInfo;
import com.tclsy.extmanager.device.TDeviceManager;
import com.tclsy.extmanager.installer.TInstallerManager;
import com.tclsy.extmanager.installer.callback.PackageStatusListener;
import com.tclsy.extmanager.power.TPowerManager;
import com.ys.rkapi.MyManager;
import com.zcapi;
@ -65,6 +72,12 @@ public class SignWayUtil {
}else if(Constant.androidBoardType.equals("huidu")){
HuiduTech helper = new HuiduTech(MyApplication.getInstance());
helper.shutdown();
}else if(Constant.androidBoardType.equals("tcl")){
try{
TPowerManager.getInstance().shutDown();
}catch (Exception e){
LoggerUtil.e("TCL:", e.getMessage());
}
}else if(Constant.androidBoardType.equals("ctf")){
Intent intent = new Intent("android.intent.action.shutdown");
MyApplication.getInstance().sendBroadcast(intent);
@ -105,6 +118,12 @@ public class SignWayUtil {
}else if(Constant.androidBoardType.equals("huidu")){
HuiduTech helper = new HuiduTech(MyApplication.getInstance());
helper.reboot();
}else if(Constant.androidBoardType.equals("tcl")){
try{
TPowerManager.getInstance().reboot();
}catch (Exception e){
LoggerUtil.e("TCL:", e.getMessage());
}
}else if(Constant.androidBoardType.equals("ctf")){
Intent intent = new Intent("android.intent.action.reboot");
MyApplication.getInstance().sendBroadcast(intent);
@ -161,6 +180,18 @@ public class SignWayUtil {
HuiduTech helper = new HuiduTech(MyApplication.getInstance());
helper.install(path);
//helper.installAndStart(path,"qianmu.container","qianmu.container.activity.H5.UpdateFileActivity");
}else if(Constant.androidBoardType.equals("tcl")){
try{
TInstallerManager.getInstance().startActivityAfterInstall("qianmu.container","qianmu.container.activity.H5.UpdateFileActivity");
TInstallerManager.getInstance().installSilentApp(path, new PackageStatusListener() {
@Override
public void result(boolean b) {
LoggerUtil.e("App更新:", String.valueOf(b));
}
});
}catch (Exception e){
LoggerUtil.e("TCL:", e.getMessage());
}
}else if(Constant.androidBoardType.equals("ctf")){
Intent intent = new Intent("android.intent.action.apkinstall");
intent.putExtra("path", path);
@ -280,6 +311,11 @@ public class SignWayUtil {
Intent intent2 = new Intent("android.poweroff.cancel");
MyApplication.getInstance().sendBroadcast(intent1);
MyApplication.getInstance().sendBroadcast(intent2);
}else if(Constant.androidBoardType.equals("tcl")){
// boolean isAlarmEnable = TPowerManager.getInstance().isAlarmEnable();
// if(isAlarmEnable){
// TPowerManager.getInstance().deleteAlarm();
// }
}else if(Constant.androidBoardType.equals("zc")){
int[] timeoffArray = {1970, 1, 1, 0, 0};
int[] timeonArray = {1970, 1, 1, 0, 0};
@ -322,6 +358,13 @@ public class SignWayUtil {
}catch(Exception exp){
LoggerUtil.e("screenShot",exp.getMessage());
}
}else if(Constant.androidBoardType.equals("tcl")){
final View decorView = MyApplication.getInstance().getCurrentActivity().getWindow().getDecorView();
Rect rect = new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
int w = rect.width();
int h = rect.height();
TDeviceManager.getInstance().screenShot(path,0,0, w, h, w, h);
}else if(Constant.androidBoardType.equals("ctf")){
Intent intent = new Intent("android.intent.action.screenshoot");
intent.putExtra("path", path);

Loading…
Cancel
Save