package com.sunda.smps_flutter_pda;

import android.device.DeviceManager;
import android.device.ScanManager;
import android.device.scanner.configuration.PropertyID;
import android.device.scanner.configuration.Triggering;
import android.text.TextUtils;
import android.util.Log;

public class FlutterScanManager {
    FlutterScanManager() {
    }

    public static FlutterScanManager getInstance() {
        return Inner.instance;
    }

    private static class Inner {
        private static final FlutterScanManager instance = new FlutterScanManager();
    }

    public static ScanManager mScanManager;

    public void init() {
        mScanManager = new ScanManager();
        mScanManager.openScanner();
        mScanManager.switchOutputMode(0);
        mScanManager.setTriggerMode(Triggering.PULSE);
        mScanManager.setPropertyInts(new int[]{PropertyID.SEND_GOOD_READ_BEEP_ENABLE}, new int[]{0});
    }

    /**
     * 单扫模式
     */
    public void hostModel() {
        mScanManager.setTriggerMode(Triggering.HOST);
    }

    /**
     * 连扫模式
     */
    public void continuousModel() {
        mScanManager.setTriggerMode(Triggering.CONTINUOUS);
        String sn = new DeviceManager().getDeviceId();//SN号，唯一
    }

    /**
     * 设置间隔时间
     *
     * @param interval 连续扫码的间隔时间 单位毫秒  范围0~5000ms
     */
    public void setIntervalTime(int interval) {
        int[] idGap = new int[]{0x0a2a, 0x0028};
        int[] idmode = new int[2];
        idmode[0] = interval;//连续间隔 单位毫秒
        idmode[1] = 50;
        mScanManager.setParameterInts(idGap, idmode);
    }

    private void eventKeyEnable523() {
        //TODO 设置触发扫描出光的按钮
        DeviceManager mDeviceManager = new DeviceManager();
        mDeviceManager.setSettingProperty("persist-persist.sys.rfid.key", "0");//新增代码逻辑
        mDeviceManager.setSettingProperty("persist-persist.sys.scan.key", "520-521-522-523-"); //"520-521-522-523-"   520、521、522、523出光
        Log.e("ScanManager", " mDeviceManager.setSettingProperty() ");
    }

    private String getHandShankKeyCode() {
        //TODO 获取触发扫描出光的键值
        DeviceManager mDeviceManager = new DeviceManager();
        String scanKey = mDeviceManager.getSettingProperty("persist-persist.sys.scan.key"); //"520-521-522-523-"   520、521、522、523出光
        if (!TextUtils.isEmpty(scanKey)) {
            //判断是否有523的键值注册，true：有523键值  false：没有
            // 如果没有，可根据业务来进行后续处理，比如判断没有包含523，这时候又需要手柄按键自动触发出光，那么可以调用注册 523 按键值的方法
            boolean contains = scanKey.contains("523");
        }
        return scanKey;
    }

}
