123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- package com.bgy.autosale;
- import android.annotation.SuppressLint;
- import android.app.ActivityManager;
- import android.app.Application;
- import android.content.Context;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.content.res.Configuration;
- import android.graphics.Typeface;
- import android.util.Log;
- import com.bgy.autosale.entitys.ContactBean;
- import com.bgy.autosale.entitys.Result;
- import com.bgy.autosale.helpers.CommunicationHelper;
- import com.bgy.autosale.helpers.ErrorViewHelper;
- import com.bgy.autosale.helpers.SmallApkHelper;
- import com.bgy.autosale.interfaces.Callback;
- import com.bgy.autosale.payutil.MQService;
- import com.bgy.autosale.plc.BasePlcAgreement;
- import com.bgy.autosale.ui.operator.fragments.PriceFragment;
- import com.bgy.autosale.utils.CrashHandler;
- import com.example.offpay.service.ModuleOffPayInitializer;
- import com.example.offpay.wmdb.WeaverUtil;
- import com.example.spunsugar.system.model.bean.PriceBean;
- import com.example.spunsugar.user.model.bean.GoodsBean;
- import com.hboxs.base_library.base.BaseApplication;
- import com.hboxs.base_library.base.ModuleInitializer;
- import com.hboxs.base_library.constant.Heartbeat;
- import com.hboxs.base_library.constant.Name;
- import com.hboxs.base_library.constant.ProductAbout;
- import com.hboxs.base_library.util.FileUtil;
- import com.orhanobut.hawk.Hawk;
- import java.lang.reflect.Field;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Locale;
- import ZtlApi.ZtlManager;
- /**
- * create by cjx on 2023/11/14
- */
- public class App extends BaseApplication {
- private static final String TAG = "AppBaseApplication";
- public static App app;
- // 联系方式加载完成通知
- public static final String ACTION_CONTACT_LOAD = "ACTION_CONTACT_LOAD";
- // 设备状态变正常通知
- public static final String ACTION_DEVICE_NORMAL = "ACTION_DEVICE_NORMAL";
- //标记连接状态,防止状态过多上报,界面刷新频繁
- private boolean pclDeviceConnected = true;
- public String appId = "1429622061189443585";//使用pos的id 做为所有pos合并一个版本的更新id
- public String language; // 语言类型
- public int mcuVersion = 0;
- public boolean unCheckStatus = false;
- // 异常信息界面显示的联系方式
- public ContactBean contactBean;
- // 支付渠道
- public int payChannel;
- // 运行模式
- public int runMode;
- public String currencySymbol;
- public Locale locale = Locale.CHINA;
- @SuppressLint("SdCardPath")
- @Override
- public void onCreate() {
- super.onCreate();
- app = this;
- //初始化工具库
- boolean isMainProcess = getApplicationContext().getPackageName().equals
- (getCurrentProcessName());
- Log.e("TAG", "start app is main process " + isMainProcess);
- if (isMainProcess) {
- //用于启动或者安装一个小应用守护当前的应用的
- SmallApkHelper.initAndCheckSmallApk(this);
- CrashHandler.getsInstance().init(getApplicationContext());
- try {
- Constant.versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
- } catch (PackageManager.NameNotFoundException e) {
- throw new RuntimeException(e);
- }
- }
- Hawk.init(this).build();
- if (FileUtil.getDeviceId().length()>10){
- Heartbeat.deviceId=FileUtil.getDeviceId();
- }
- new Thread(new Runnable() {
- @Override
- public void run() {
- initGoodsBean();
- // 启动服务
- ZtlManager.GetInstance().setContext(getApplicationContext());//屏幕厂家数据初始化
- openService();//打开服务
- initializeModules();
- Log.d("openService", "run: ");
- }
- }).start();
- }
- private void initializeModules() {
- Log.d("TAG", "initializeModules1: ");
- List<Class<? extends ModuleInitializer>> modules = Arrays.asList(
- ModuleOffPayInitializer.class
- );
- Log.d("TAG", "initializeModules2: ");
- for (Class<? extends ModuleInitializer> initializerClass : modules) {
- try {
- ModuleInitializer initializer = initializerClass.newInstance();
- initializer.initialize();
- } catch (InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
- private void openMqService() {
- //开启MQ
- startService(new Intent(this, MQService.class));
- }
- private void openService() {
- openRestService();
- openMqService();//打开mq
- }
- private void openRestService() {
- Intent intent = new Intent(this, RemoteSupportService.class);
- startService(intent);
- }
- public void replaceDefaultFont(Context context, String fontPath) {//字体全局替换
- try {
- Field field = Typeface.class.getDeclaredField("MONOSPACE");
- field.setAccessible(true);
- field.set(null, Typeface.createFromAsset(context.getAssets(), fontPath));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 获取当前进程名
- */
- private String getCurrentProcessName() {
- int pid = android.os.Process.myPid();
- String processName = "";
- ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService
- (Context.ACTIVITY_SERVICE);
- for (ActivityManager.RunningAppProcessInfo process : manager.getRunningAppProcesses()) {
- if (process.pid == pid) {
- processName = process.processName;
- }
- }
- return processName;
- }
- //监听plc设备状态
- public void initDeviceStateListener() {
- CommunicationHelper.getInstance().setDeviceStatusListener(new Callback<Result<Boolean>>() {
- @Override
- public void onResult(Result<Boolean> result) {
- switch (result.code) {
- case BasePlcAgreement.PLC_HEART_CONNECT:
- if (!pclDeviceConnected) {
- pclDeviceConnected = true;
- ErrorViewHelper.getInstance().hideErrorView(R.string.error_plc_disconnect);
- }
- break;
- case BasePlcAgreement.PLC_HEART_DISCONNECT:
- if (pclDeviceConnected) {
- pclDeviceConnected = false;
- ErrorViewHelper.getInstance().showErrorView(R.string.error_plc_disconnect, new String[]{getString(R.string.error_plc_disconnect), getString(R.string.make_fail_describe)});
- }
- break;
- case BasePlcAgreement.PLC_HEART_REPORT:
- if (result.data != null) {
- if (result.data) {
- ErrorViewHelper.getInstance().hideErrorView(R.string.setting_plc_connect);
- } else {
- if (result.message != null) {
- String[] lastErrorMessage = result.message.split("-");
- ErrorViewHelper.getInstance().showErrorView(R.string.setting_plc_connect, lastErrorMessage);
- } else {
- ErrorViewHelper.getInstance().showErrorView(R.string.setting_plc_connect, new String[]{getString(R.string.error_wait), getString(R.string.make_fail_describe_refund)});
- }
- }
- }
- break;
- }
- }
- });
- }
- public boolean isPlcConnected() {
- return pclDeviceConnected;
- }
- public void killActivities() {
- ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
- List<ActivityManager.AppTask> appTaskList = activityManager.getAppTasks();
- for (ActivityManager.AppTask appTask : appTaskList) {
- appTask.finishAndRemoveTask();
- }
- System.exit(0);
- }
- public void forceLocale(Locale locale, Context context) {
- this.locale = locale;
- Configuration conf = context.getResources().getConfiguration();
- conf.setLocale(locale);
- context.getResources().updateConfiguration(conf, context.getResources().getDisplayMetrics());
- Locale.setDefault(locale);
- }
- //初始化商品数据
- private void initGoodsBean() {
- boolean contains = Hawk.contains("PRICEBEAN");
- //如果不存在 创建默认的
- if (!contains) {
- ArrayList<PriceFragment.PriceBean> priceBeans = new ArrayList<>();
- for (int i = 0; i < PriceFragment.ProductAbout.chineseName.length; i++) {
- PriceFragment.PriceBean priceBean = new PriceFragment.PriceBean();
- priceBean.setChineseName(PriceFragment.ProductAbout.chineseName[i]);
- priceBean.setPriceKey(PriceFragment.ProductAbout.priceKey[i]);
- priceBean.setPriceHint(PriceFragment.ProductAbout.priceHint[i]);
- priceBeans.add(priceBean);
- Log.d(TAG, "PRICEBEANinitGoodsBean: "
- + "chinesename:" + PriceFragment.ProductAbout.chineseName[i]
- + "priceKey:" + PriceFragment.ProductAbout.priceKey[i]
- + "priceHint:" + PriceFragment.ProductAbout.priceHint[i]);
- }
- Hawk.put("PRICEBEAN", priceBeans);
- Log.d(TAG, "initGoodsBean: " + priceBeans);
- }
- }
- }
|