123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581 |
- package com.bgy.autosale.ui;
- import static com.hboxs.base_library.util.ToastUtil.showToast;
- import android.Manifest;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.content.res.Configuration;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Handler;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentManager;
- import android.support.v4.app.FragmentTransaction;
- import android.text.TextUtils;
- import android.util.Log;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ProgressBar;
- import android.widget.TextView;
- import com.bgy.autosale.App;
- import com.bgy.autosale.Constant;
- import com.bgy.autosale.IceCreamDeviceConstants;
- import com.bgy.autosale.R;
- import com.bgy.autosale.entitys.ContactBean;
- import com.bgy.autosale.entitys.DosugarBean;
- import com.bgy.autosale.entitys.MakeIceCreamBean;
- import com.bgy.autosale.entitys.Result;
- import com.bgy.autosale.helpers.CleanScheduleHelper;
- import com.bgy.autosale.helpers.CommunicationHelper;
- import com.bgy.autosale.helpers.ErrorViewHelper;
- import com.bgy.autosale.helpers.NetTimeClock;
- import com.bgy.autosale.helpers.ResourceDownloadHelper;
- import com.bgy.autosale.helpers.SQLiteHelper;
- import com.bgy.autosale.helpers.UISoundHelper;
- import com.bgy.autosale.interfaces.Callback;
- import com.bgy.autosale.interfaces.SendCallback;
- import com.bgy.autosale.payutil.GeTuiUtil;
- import com.bgy.autosale.payutil.MyIntentService;
- import com.bgy.autosale.ui.base.BaseFragment;
- import com.bgy.autosale.ui.base.BaseScanGunActivity;
- import com.bgy.autosale.ui.consumer.MainFragment;
- import com.bgy.autosale.ui.consumer.PaySuccessFragment;
- import com.bgy.autosale.ui.consumer.ServiceFragment;
- import com.bgy.autosale.ui.operator.AuthNumberActivity;
- import com.bgy.autosale.ui.operator.LockActivity;
- import com.bgy.autosale.ui.operator.SnSettingActivity;
- import com.bgy.autosale.utils.CacheFileUtil;
- import com.bgy.autosale.utils.PlcLog;
- import com.bgy.autosale.utils.ReadCacheInfoUtils;
- import com.bgy.autosale.utils.SPUtils;
- import com.example.FaPiaoUtils;
- import com.example.offpay.nayax.CreditCardPresenter;
- import com.google.gson.Gson;
- import com.hboxs.base_library.base.BaseApplication;
- import com.hboxs.base_library.base.IView;
- import com.hboxs.base_library.constant.Global;
- import com.hboxs.base_library.constant.Heartbeat;
- import com.hboxs.base_library.constant.Name;
- import com.hboxs.base_library.event.ApiMessageEvent;
- import com.hboxs.base_library.http.NoPayOrderStringApi;
- import com.hboxs.base_library.http.observer.HttpResultNotActivityObserver;
- import com.hboxs.base_library.http.response.HttpResult;
- import com.hboxs.base_library.http.response.HttpResultHandler;
- import com.hboxs.base_library.util.FileUtil;
- import com.hboxs.base_library.util.LanguageUtil;
- import com.hboxs.base_library.util.LogUtil;
- import com.hboxs.base_library.util.LogUtils;
- import com.hboxs.base_library.util.SharedPreferencesUtils;
- import com.hboxs.base_library.util.ToastUtil;
- import com.igexin.sdk.PushManager;
- import com.orhanobut.hawk.Hawk;
- import org.greenrobot.eventbus.EventBus;
- import org.greenrobot.eventbus.Subscribe;
- import org.greenrobot.eventbus.ThreadMode;
- import java.io.File;
- import java.lang.reflect.Field;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.LinkedList;
- import java.util.Locale;
- import java.util.Map;
- import io.reactivex.Observable;
- import io.reactivex.android.schedulers.AndroidSchedulers;
- import io.reactivex.disposables.CompositeDisposable;
- import io.reactivex.disposables.Disposable;
- import io.reactivex.observers.DisposableObserver;
- import io.reactivex.schedulers.Schedulers;
- import top.keepempty.sph.library.SerialPortHelper;
- public class MainActivity extends BaseScanGunActivity implements SendCallback, Callback<Result> {
- private final String TAG = "MainActivity";
- public static MainActivity instance;
- private final int REQUEST_PERMISSION_CODE = 1000;
- private static String[] PERMISSIONS_STORAGE = {
- Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.WRITE_EXTERNAL_STORAGE};
- protected TextView initView;
- protected TextView snView;
- private View progressBarBg;
- private ProgressBar progressBar;
- private MainFragment mainFragment;
- private boolean mainViewAllReady = false;
- private int clickCount = 0;
- private long prevClickTime = 0L;
- public boolean isVisible = true;
- private boolean isDestroy = false;
- private Disposable checkDisposable;
- int isSleep = (int) SharedPreferencesUtils.getParam("sleep", -1);
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- instance = this;
- if (isSleep == 0) {
- //锁机
- Intent intent = new Intent(this, LockActivity.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- }
- App.app.language = SPUtils.getInstance(App.app).getString(Constant.APP_LANGUAGE, Constant.LANGUAGE_ZH);
- Heartbeat.deviceId = FileUtil.getDeviceId().trim();
- Log.d("openService", "run: " + Heartbeat.deviceId + ":" + FileUtil.getDeviceId());
- String[] language = App.app.language.split("-");
- // Locale locale = new Locale(language[0], language.length > 1 ? language[1] : "");
- int i = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, 0) - 1;
- if (i>=0) {
- String s = LanguageUtil.language[i];
- Locale locale = new Locale(s);
- Log.d(TAG, "DynamicActivity onCreate: "+s);
- App.app.forceLocale(locale, this);
- }
- GeTuiUtil geTuiUtil = new GeTuiUtil(this);
- geTuiUtil.geTui();
- if (Global.isVersions == 1) {
- App.app.payChannel = SPUtils.getInstance(App.app).getInt(Constant.PAY_CHANNEL, Constant.PAY_ONLINE);
- App.app.runMode = SPUtils.getInstance(App.app).getInt(Constant.RUN_MODE, Constant.RUN_ONLINE);
- App.app.currencySymbol = getString(R.string.price_unit);
- } else {
- App.app.payChannel = SPUtils.getInstance(App.app).getInt(Constant.PAY_CHANNEL, Constant.PAY_FREE);
- App.app.runMode = SPUtils.getInstance(App.app).getInt(Constant.RUN_MODE, Constant.RUN_OFFLINE);
- App.app.specMultipleChoices = SPUtils.getInstance(App.app).getBoolean(ServiceFragment.SHARED_PREFERENCE_FLAVOR_MULTIPLE, true);
- App.app.currencySymbol = Hawk.get(Name.UNIT_OF_CURRENCY_TIME,"");
- }
- super.onCreate(savedInstanceState);
- EventBus.getDefault().register(this);
- setContentView(R.layout.activity_main);
- initView = findViewById(R.id.main_init_tip);
- snView = findViewById(R.id.device_sn);
- progressBarBg = findViewById(R.id.progress_bg);
- progressBarBg.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- }
- });
- progressBar = findViewById(R.id.progress_main);
- snView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (clickCount == 1) {
- clickCount = 0;
- AuthNumberActivity.startActivity(MainActivity.this);
- } else {
- long current = System.currentTimeMillis();
- if (current - prevClickTime > 2000) {
- clickCount = 0;
- } else {
- clickCount++;
- }
- prevClickTime = current;
- }
- }
- });
- initView.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- finish();
- return false;
- }
- });
- if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
- || ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_PERMISSION_CODE);
- } else {
- init();
- }
- } else {
- init();
- }
- NetTimeClock.getInstance();
- if (Hawk.get("nayax", false)) {
- Log.d(TAG, "onCreate: ALWAYS_IDLEaaaa");
- initCreditCardDriver();
- Log.d(TAG, "onCreate: ALWAYS_IDLEbbb");
- }
- if (Hawk.get("MDB_COIN", false)/*&&Hawk.get(Name.CASH_PAY, true)*/) {
- openSerialPortA();
- }
- }
- public static SerialPortHelper openSerialPortA() {
- return FaPiaoUtils.getInstance().getSerialPortHelper();
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
- PushManager.getInstance().initialize(this.getApplicationContext(), MyIntentService.class);
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- if (requestCode == REQUEST_PERMISSION_CODE) {
- boolean flagt = false;
- for (int i = 0; i < permissions.length; i++) {
- Log.i("MainActivity", "申请的权限为:" + permissions[i] + ",申请结果:" + grantResults[i]);
- if (grantResults[i] != 0) {
- flagt = true;
- }
- }
- if (flagt) {//授权失败
- finish();
- } else {
- init();
- }
- }
- }
- @Override
- public boolean scanResult(String code, String source) {
- if (code.equals(Constant.FACTORY_RESET_MODE)) {
- factoryReset();
- }
- return true;
- }
- @Override
- protected void onResume() {
- super.onResume();
- isVisible = true;
- setScanCodeListener(this);
- hideNavKey(this);
- if (mainViewAllReady) {
- if (!mainFragment.isAdded()) {
- getSupportFragmentManager().beginTransaction().add(R.id.main_fragment, mainFragment).commitNow();
- }
- }
- }
- @Override
- protected void onPause() {
- super.onPause();
- isVisible = false;
- }
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void event(ApiMessageEvent messageEvent) {
- // 进行刷新操作
- switch (messageEvent.getName()) {
- case "makeicecream":
- LinkedList<MakeIceCreamBean> iceCreamOrders = new LinkedList<>();
- MakeIceCreamBean detail = new MakeIceCreamBean();
- String kindData= (String) messageEvent.getData();
- Log.d(TAG, "makeicecreamevent: makeicecream0 "+kindData);
- Gson gson = new Gson();
- DosugarBean dosugarBean = gson.fromJson(kindData, DosugarBean.class);
- Log.d(TAG, "makeicecreamevent: makeicecream1"+dosugarBean);
- String[] stringArray = dosugarBean.getMakeCodes().replaceAll("[\\[\\] ]", "").split(",");
- Log.d(TAG, "makeicecreamevent: makeicecream2"+stringArray);
- detail.makeCodes= Arrays.stream(stringArray)
- .mapToInt(Integer::parseInt)
- .toArray();
- iceCreamOrders.add(detail);
- Log.d(TAG, "getMessage: dosugar"+iceCreamOrders);
- LogUtils.logWrite("远程制作雪糕");
- CommunicationHelper.getInstance().setMakingIceCreams(iceCreamOrders);
- CommunicationHelper.getInstance().setDishStatusListener(this, isManualMake ? IceCreamDeviceConstants.ORDER_MAKE_ORDER : -1);
- // make();
- Map<String, String> sugarDoStatus = new HashMap<>();
- sugarDoStatus.put("clientId", Heartbeat.deviceId);
- sugarDoStatus.put("status", "1");
- sugarDoStatus.put("no", dosugarBean.getNo());
- updateSugarDoStatus(sugarDoStatus);
- break;
- }
- }
- private IView view;
- private void updateSugarDoStatus(Map<String, String> sugarDoStatus) {
- addSubscriptionNew(NoPayOrderStringApi.api.updateSugarDoStatus(sugarDoStatus), String.class,
- new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
- @Override
- public void onNext(String data) {
- Log.d(TAG, "onNextupdateSugarDoStatus: "+data);
- LogUtils.logWrite("远程制作成功:");
- }
- @Override
- public void onError(Throwable t) {
- super.onError(t);
- t.printStackTrace();
- Log.d(TAG, "onNextupdateSugarDoStatus: "+t.getMessage());
- LogUtils.logWrite("远程制作失败:" + t.getMessage());
- }
- });
- }
- private boolean isManualMake = false;
- private boolean isManualMode() {
- return App.app.payChannel != Constant.PAY_FREE;
- }
- private void make(){
- FragmentManager fragmentManager = getSupportFragmentManager();
- // Fragment fragment = PaySuccessFragment.getFragment(CommunicationHelper.getInstance().getMakingIceCreams().size(), isManualMode());
- Fragment fragment = PaySuccessFragment.getFragment(1, isManualMode());
- FragmentTransaction transaction = fragmentManager.beginTransaction();
- transaction.replace(R.id.main_fragment, fragment);
- transaction.addToBackStack("main");
- transaction.commit();
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- EventBus.getDefault().unregister(this);
- isDestroy = true;
- instance = null;
- if (checkDisposable != null) {
- checkDisposable.dispose();
- checkDisposable = null;
- }
- CleanScheduleHelper.getInstance().destroy();
- CommunicationHelper.getInstance().destroy();
- }
- public static boolean isAlive() {
- return instance != null;
- }
- @Override
- public void onBackPressed() {
- }
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- }
- protected void init() {
- SQLiteHelper.getInstance().init(App.app);
- CommunicationHelper.getInstance();
- String path = CacheFileUtil.getInstance().getFilePath();
- PlcLog.getInstance().initLogFile(this, "", new File(path).getParent());
- // String sn = ReadCacheInfoUtils.getInstance().getSN();
- // if (sn == null || TextUtils.isEmpty(sn)) {
- // SnSettingActivity.startActivity(this, false);
- //// DeviceManagerActivity.startActivity(this, false);
- // return;
- // }
- // String sn="AB0001";
- final String secondarySN = "AB0001";
- final String secondarySN2 = "AB0002";
- // Constant.isSecondary = sn.startsWith(secondarySN) || sn.startsWith(secondarySN2);
- // TextView view = findViewById(R.id.test_mode);
- // if (sn.startsWith("CJX-")) {
- // view.setText("专属测试模式");
- // view.setVisibility(View.VISIBLE);
- // }
- // view.setOnClickListener(new View.OnClickListener() {
- // @Override
- // public void onClick(View v) {
- // String t = view.getText().toString();
- // t = t + "\n忽略机台异常";
- // view.setText(t);
- // CommunicationHelper.getInstance().changeTestMode();
- // }
- // });
- if (Heartbeat.deviceId!=null && Heartbeat.deviceId.length() > 6){
- snView.setText("SN:" + Heartbeat.deviceId.substring(Heartbeat.deviceId.length()-6));
- }
- initComplete();
- }
- public void initComplete() {
- if (checkDisposable != null) {
- checkDisposable.dispose();
- checkDisposable = null;
- }
- if (isDestroy) {
- return;
- }
- if (mainFragment != null) {
- mainFragment.checkData();
- return;
- }
- mainFragment = MainFragment.getFragment();
- PlcLog.getInstance().e_s(TAG, "payChannel" + App.app.payChannel);
- downloadResources();
- }
- // 下载广告、资源文件
- private void downloadResources() {
- new ResourceDownloadHelper(new ResourceDownloadHelper.ResourceDownloadCallback() {
- @Override
- public void complete() {
- if (isFinishing() || isDestroy) {
- return;
- }
- initProgress(App.app.getString(R.string.init_complete));
- initMainView();
- }
- @Override
- public void initProgress(String message) {
- if (initView == null) {
- return;
- }
- if (isFinishing() || isDestroy) {
- return;
- }
- initView.setText(message);
- }
- });
- }
- protected void showLoadView(boolean show) {
- if (show) {
- progressBarBg.setVisibility(View.VISIBLE);
- progressBar.setVisibility(View.VISIBLE);
- } else {
- progressBarBg.setVisibility(View.GONE);
- progressBar.setVisibility(View.GONE);
- }
- }
- private void initMainView() {
- mainViewAllReady = true;
- PlcLog.getInstance().e_s(TAG, "initMainView");
- UISoundHelper.getInstance();
- findViewById(R.id.main_fragment).setVisibility(View.VISIBLE);
- if (!SPUtils.getInstance(App.app).getBoolean(Constant.LOCK_IN_ERROR, false)) {
- App.app.initDeviceStateListener();//是否开机
- Log.d(TAG, "initMainView: ");
- }
- if (initView != null) {
- ViewGroup group = (ViewGroup) initView.getParent();
- group.removeView(initView);
- group.removeView(snView);
- initView = null;
- snView = null;
- }
- PlcLog.getInstance().e_s(TAG, "mainFragment.isAdded() " + mainFragment.isAdded());
- try {
- if (!mainFragment.isAdded()) {
- getSupportFragmentManager().beginTransaction().add(R.id.main_fragment, mainFragment).commitNow();
- }
- } catch (Exception e) {
- PlcLog.getInstance().e_s(TAG, e);
- }
- initContactView();
- CleanScheduleHelper.getInstance().initCleanScheduleParams();
- }
- private void initContactView() {
- initServerPhone();
- }
- private void initServerPhone() {
- if (App.app.contactBean == null) {
- App.app.contactBean = new ContactBean();
- App.app.contactBean.environmentMode = 1;
- }
- if (App.app.contactBean.hotServicePhone == null) {
- App.app.contactBean.hotServicePhone=Hawk.get(Name.CONTACTS_NAME,"");
- }
- if (App.app.contactBean.hotServiceTime == null) {
- App.app.contactBean.hotServiceTime =Hawk.get(Name.CONTACTS_NUM,"");//默认
- }
- if (App.app.contactBean.serviceWechatPlatform == null) {
- App.app.contactBean.serviceWechatPlatform = "http://qx-device-manage.oss-cn-shenzhen.aliyuncs.com/photo/20211020141937.jpg";//默认
- }
- }
- // 恢复出厂设置
- private void factoryReset() {
- ReadCacheInfoUtils.getInstance().saveSN(null);
- ReadCacheInfoUtils.getInstance().saveAuthEntity(null);
- showToast(getString(R.string.setting_technology_system_reset));
- finish();
- }
- private CreditCardPresenter mCreditCardPresenter;
- public void initCreditCardDriver() {
- //以下代码实现信用卡串口通信
- //使用此代码只需要:
- //1.实例化一个CreditCardPresenter
- mCreditCardPresenter = CreditCardPresenter.getCreditCardContract();
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- if (mCreditCardPresenter != null) {
- if (!mCreditCardPresenter.is_ready()) {
- LogUtil.d(TAG, "initCreditCardDriver1: ");
- mCreditCardPresenter.StartCommunication(4);
- }
- LogUtil.d(TAG, "initCreditCardDriver2: ");
- }
- }
- }, 5000);
- //1.开始通信
- }
- @Override
- public void onResult(Result result) {
- AndroidSchedulers.mainThread().scheduleDirect(new Runnable() {
- @Override
- public void run() {
- Log.d(TAG, "AndroidSchedulers run1: "+result);
- Log.d(TAG, "AndroidSchedulers run2: "+result.code);
- Log.d(TAG, "AndroidSchedulers run3: "+result.message);
- Log.d(TAG, "AndroidSchedulers run4: "+result.data);
- switch (result.code) {
- }
- }
- });
- }
- @Override
- public void callBack(boolean ok, int[] result) {
- AndroidSchedulers.mainThread().scheduleDirect(new Runnable() {
- @Override
- public void run() {
- showToast(ok ? App.app.getString(R.string.setting_plc_send_success) : App.app.getString(R.string.setting_plc_send_fail));
- }
- });
- }
- private CompositeDisposable mDisposables;
- protected void addSubscriptionNew(Observable observable, Class clazz, DisposableObserver observer) {
- if (mDisposables == null) {
- mDisposables = new CompositeDisposable();
- }
- if (clazz == HttpResult.class) {
- observable = observable.compose(HttpResultHandler.<String>transformer());
- }
- observable
- .unsubscribeOn(Schedulers.io())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(observer);
- mDisposables.add(observer);
- }
- }
|