Commit c77517a7 by youguoqing

调整:适配UHF_U8设备

parent f7c16ce3
......@@ -13,7 +13,7 @@ android {
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
versionName "1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
......@@ -45,7 +45,7 @@ dependencies {
implementation 'com.squareup.okio:okio:1.17.4'
implementation 'com.tencent.bugly:crashreport:3.4.4'
implementation 'me.jessyan:autosize:1.1.2'
implementation (name: 'BaseLib', ext: 'aar')
implementation (name: 'fn_U8', ext: 'aar')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
......
package com.fn.useries.operation;
import com.fn.useries.model.IResponseHandler;
import com.fn.useries.model.Message;
import com.series.inter.InventoryInterface;
public interface IUSeries {
/**
* 打开串口
* @param moduleName 模块名
* @return true_ 打开串口成功,false_ 打开串口失败
*/
Message openSerialPort(String moduleName);
/**
* 关闭串口
*
* @return true_ 关闭串口成功,false_ 关闭串口失败
* 初始化,依次执行上电、打开串口
*/
Message closeSerialPort();
void initService();
/**
* 模块上电
* @param moduleName 模块名
* @return true_ 上电成功,false_ 上电失败
* 释放资源,依次执行关闭串口、下电
*/
Message modulePowerOn(String moduleName);
/**
* 模块下电
* @param moduleName 模块名
* @return true_ 下电成功,false_ 下电失败
*/
Message modulePowerOff(String moduleName);
void releaseService();
/**
* 开始盘询
* @param responseHandler 盘询结果回调
* @param inventoryInterface 盘询结果回调
* @return true_ 开始盘询成功成功,false_ 开始盘询失败
*/
boolean startInventory(IResponseHandler responseHandler);
void startInventory(InventoryInterface inventoryInterface);
/**
* 停止盘询
* @return true_ 停止盘询成功,false_ 停止盘询失败
*/
boolean stopInventory();
/**
* 单次盘询
* @return 盘询结果
*/
Message Inventory();
/**
* 读标签
*
* @param block 读取区域
* @param w_count 读取长度
* @param w_offset 偏移
* @param acs_pwd 访问密码
* @return 读取标签数据
*/
Message readTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] acs_pwd);
/**
* 写标签
*
* @param block 写入区域
* @param w_count 写入长度
* @param w_offset 偏移
* @param data 写入数据
* @param acs_pwd 访问密码
* @return 是否写入成功
*/
Message writeTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] data, byte[] acs_pwd);
/**
* 锁标签
*
* @param block 锁定区域
* @param operation 操作类型
* @param acs_pwd 访问密码
* @return 返回错误代码
*/
Message lockTagMemory(byte[] EPC, byte block, Enum operation, byte[] acs_pwd);
/**
* 销毁标签
*
* @param kill_pwd 销毁密码
* @return 返回错误代码
*/
Message killTag(byte[] EPC, byte[] kill_pwd);
void stopInventory();
/**
* 设置参数
......@@ -110,5 +44,4 @@ public interface IUSeries {
*/
boolean setParams(String paraName, String paraValue);
}
package com.fn.useries.operation;
import com.fn.useries.utils.U8Property;
import com.series.bean.ReturnBean;
import com.series.inter.InventoryInterface;
import com.series.operate.ReaderSeries;
import com.uhf.uhf.serialport.SerialPort;
import com.utils.GpioUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class M11U8Service implements IUSeries{
private static final String STR_SERIAL_PORT = "/dev/ttyHSL2";
private static final String STR_BAUD = "115200";
// 射频功率
public static final String PARA_POWER = "PARA_POWER";
// 模块温度
public static final String TEMPERATURE = "TEMPERATURE";
// session
public static final String SESSIONSTATE = "SESSIONSTATE";
// flag
public static final String FLAGSTATE = "FLAGSTATE";
private static M11U8Service mUSeries;
private ReaderSeries readerSeries;
private SerialPort serialPort;
private M11U8Service() {}
public static M11U8Service getInstance() {
if (mUSeries == null) {
mUSeries = new M11U8Service();
}
return mUSeries;
}
@Override
public void initService() {
//Power on 上电
GpioUtil.M11_PowerOn();
//Open serial port and initialize RFID 打开串口,初始化RFID
readerSeries = ReaderSeries.getInstance();
int baud;
try {
baud = Integer.parseInt(STR_BAUD);
serialPort = new SerialPort(new File(STR_SERIAL_PORT), baud, 8);
readerSeries.init(serialPort.getInputStream(), serialPort.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void releaseService() {
if (serialPort != null) {
serialPort.close();
}
GpioUtil.M11_PowerOFF();
}
@Override
public void startInventory(InventoryInterface inventoryInterface) {
try {
initInventoryParam(); //初始化,开启数据接收线程
readerSeries.inventory(inventoryInterface, true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 初始化盘询所需资源
*
* @throws Exception
*/
private void initInventoryParam() throws Exception {
//Set up antenna, only one antenna is available for handheld device 设置天线,手持设备只有一根天线
List<Integer> ants = new ArrayList<>();
ants.add(0);
readerSeries.setAnts(ants);
//Setting custom inventory parameters 设置自定义盘存参数
final int sessionState = U8Property.getSessionState();
int flagState = U8Property.getFlagState();
readerSeries.setCustomSession(sessionState, flagState, 1);
}
@Override
public void stopInventory() {
readerSeries.stop();
}
@Override
public String getParams(String paraName) {
if (paraName.equals(PARA_POWER)) {
ReturnBean returnBean = readerSeries.getPower();
if (returnBean.isSuccess()) {
returnBean.getMsg();
}
} else if (paraName.equals(TEMPERATURE)) {
ReturnBean returnBean = readerSeries.getReaderTemperature();
if (returnBean.isSuccess()) {
returnBean.getMsg();
}
} else if (paraName.equals(SESSIONSTATE)) {
return U8Property.getSessionState() + "";
} else if (paraName.equals(FLAGSTATE)) {
return U8Property.getFlagState() + "";
}
return null;
}
@Override
public boolean setParams(String paraName, String paraValue) {
if (paraName.equals(PARA_POWER)) {
ReturnBean returnBean = readerSeries.setPower(Integer.parseInt(paraValue));
return returnBean.isSuccess();
} else if (paraName.equals(SESSIONSTATE)) {
U8Property.saveSessionState(Integer.parseInt(paraValue));
return true;
} else if (paraName.equals(FLAGSTATE)) {
U8Property.saveFlagState(Integer.parseInt(paraValue));
return true;
}
return false;
}
}
package com.fn.useries.operation;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.AndroidVersions;
import com.fn.useries.model.IResponseHandler;
import com.fn.useries.model.Message;
import com.fn.useries.reader.CMD;
import com.fn.useries.reader.ERROR;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.reader.model.InventoryBuffer.InventoryTagMap;
import com.fn.useries.reader.model.OperateTagBuffer;
import com.fn.useries.reader.model.ReaderSetting;
import com.fn.useries.reader.server.ReaderBase;
import com.fn.useries.reader.server.ReaderHelper;
import com.fn.useries.utils.Tools;
import com.fn.useries.utils.U8Property;
import com.fntech.Loger;
import com.stm.asset.R;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.List;
import android_serialport_api.SerialPort;
import cn.fuen.xmldemo.activity.SetAndSaveActivity;
import cn.fuen.xmldemo.entity.Device;
import cn.fuen.xmldemo.model.DeviceModel;
public class U8Series implements IUSeries {
private static final String TAG = "USeries";
private Tools tools = new Tools();
private static Context mContext;
public static final Object object = new Object();// 设置参数锁
public static final Object readObject = new Object();// read Tag线程锁对象
/**
* notify标识,防止出现接收线程已经收到串口返回并notify,而发送线程并未开始sleep造成异常;
* 此标志位在每次使用前必须恢复初始值false
*/
public static boolean havenotify;
private final int SUCCEED = 0;
private final int FAILED = 1;
public static final String REFRESHTEXT = "REFRESHTEXT";
public static final String REFRESHLIST = "REFRESHLIST";
/**
* 射频功率
*/
public static final String PARA_POWER = "PARA_POWER";
/**
* 软件提示音模式
*/
public static final String BEER_STATE = "BEER_STATE";
/**
* 软件提示音开关 0-打开;1-关闭
*/
public static final String SOFT_SOUND = "SOFT_SOUND";
/**
* 模块温度
*/
public static final String TEMPERATURE = "TEMPERATURE";
/**
* session
*/
public static final String SESSIONSTATE = "SESSIONSTATE";
/**
* flag state
*/
public static final String FLAGSTATE = "FLAGSTATE";
private SerialPort mSerialPort = null;
// 以下三个字符串供上下电配置使用,不可更改
private String model = "U8";
private String packageName = "com.fn.useries";
private String activityName = "com.fn.useries.activity.MainActivity";
private ReaderBase mReader;
private ReaderHelper mReaderHelper;
private ReaderSetting m_curReaderSetting;
private InventoryBuffer m_curInventoryBuffer;
private OperateTagBuffer m_curOperateTagBuffer;
private static U8Series mUSeries;
private List<InventoryTagMap> mTagMaps;
/**
* 读标签结果,若读取成功在@link ReaderHelper.processReadTag(MessageTran)中被赋值
*/
public String readDataString = "";
/**
* 写/锁/杀标签结果标志位,成功:0,失败:1; 注意操作前复位为1
*/
public static int operationTagResult;
/**
* 错误信息,当解析到错误代码时被赋值
*/
public static String errorData = "";
/**
*
*/
public static String temperature;
private IResponseHandler mResponseHandler;
private boolean enableSaveDataWhenGoOnInventory = true;// 重新盘存保存上一次数据
private boolean firstInventoryFlag = true;
private int timeout = 3 * 1000;
/**
* 锁标签操作类型
*
* LOCK_FREE 解锁
* LOCK_FREE_EVER 永久解锁
* LOCK_LOCK 锁
* LOCK_LOCK_EVER 永久锁定
*/
public static enum lockOperation {
LOCK_FREE, LOCK_FREE_EVER, LOCK_LOCK, LOCK_LOCK_EVER
}
private U8Series() {
}
public static void setContext(Context context) {
mContext = context;
}
public static U8Series getInstance() {
if (mUSeries == null) {
mUSeries = new U8Series();
registerReceiver();
return mUSeries;
}
return mUSeries;
}
@Override
public boolean startInventory(IResponseHandler responseHandler) {
this.mResponseHandler = responseHandler;
try {
initInventoryParam(); //初始化,开启数据接收线程
} catch (Exception e) {
Loger.disk_log("Exception", "initInventoryParamException,info = " + e.toString(), "M10_U8");
return false;
}
m_curInventoryBuffer.clearInventoryPar();
m_curInventoryBuffer.bLoopCustomizedSession = true;
m_curInventoryBuffer.btSession = (byte) (U8Property.getSessionState() & 0xFF);
m_curInventoryBuffer.btTarget = (byte) (U8Property.getFlagState() & 0xFF);
m_curInventoryBuffer.lAntenna.add((byte) 0x01);
m_curInventoryBuffer.bLoopInventoryReal = true;
m_curInventoryBuffer.btRepeat = (byte) 1;
if (enableSaveDataWhenGoOnInventory) {
if (firstInventoryFlag)// add by lyz
m_curInventoryBuffer.clearInventoryRealResult();
} else {
m_curInventoryBuffer.clearInventoryRealResult();
}
mReaderHelper.setInventoryFlag(true);
if (enableSaveDataWhenGoOnInventory) {
if (firstInventoryFlag)// add by lyz
mReaderHelper.clearInventoryTotal();
} else {
mReaderHelper.clearInventoryTotal();
}
byte btWorkAntenna = m_curInventoryBuffer.lAntenna.get(m_curInventoryBuffer.nIndexAntenna);
if (btWorkAntenna < 0)
btWorkAntenna = 0;
mReader.setWorkAntenna(m_curReaderSetting.btReadId, btWorkAntenna);//设置工作天线
//mReader.getFirmwareVersion(m_curReaderSetting.btReadId);
return true;
}
@Override
public boolean stopInventory() {
try {
mReaderHelper.setInventoryFlag(false);
m_curInventoryBuffer.bLoopInventory = false;
m_curInventoryBuffer.bLoopInventoryReal = false;
// if (enableSaveDataWhenGoOnInventory)
// mReader.resetRecevice();
Log.i("toolsdebug", " stopInventory() ");
Loger.disk_log("stopInventory", " stopInventory ", "U8");
} catch (Exception e) {
Loger.disk_log("Exception", "stopInventoryException" + getExceptionAllinformation(e), "M10_U8");
return false;
}
return true;
}
@Override
public Message readTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] acs_pwd) {
Message message = new Message();
if(setEpcMatch(EPC)==FAILED){
message.setCode(FAILED);
message.setMessage(mContext.getString(R.string.str_set_epc_match_failed));
return message;
}
flagReset();
m_curOperateTagBuffer.clearBuffer();
mReader.readTag(m_curReaderSetting.btReadId, block, w_offset, w_count, acs_pwd);
// 发送指令后线程挂起 等待数据返回
synchronized (readObject) {
try {
readObject.wait(timeout);
} catch (InterruptedException e) {
readObject.notify();
}
}
// 未读到标签数据
if (readDataString == null) {
mReader.resetRecevice();
message.setCode(FAILED);
message.setMessage(TextUtils.isEmpty(errorData) ? receviceIncompleteError() : errorData);
return message;
}
// notify后返回数据
message.setCode(SUCCEED);
message.setResult(readDataString);
return message;
}
@Override
public Message writeTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] data, byte[] acs_pwd) {
Message message = new Message();
if(setEpcMatch(EPC)==FAILED){
message.setCode(FAILED);
message.setMessage(mContext.getString(R.string.str_set_epc_match_failed));
return message;
}
flagReset();
m_curOperateTagBuffer.clearBuffer();
mReader.writeTag(m_curReaderSetting.btReadId, acs_pwd, block, w_offset, w_count, data);
// 发送指令后线程挂起 等待数据返回
synchronized (mReaderHelper) {
try {
mReaderHelper.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "writeTagMemoryWaitException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
message.setCode(operationTagResult);
message.setMessage(TextUtils.isEmpty(errorData) ? receviceIncompleteError() : errorData);
return message;
}
@Override
public Message lockTagMemory(byte[] EPC, byte block, Enum operation, byte[] acs_pwd) {
Message message = new Message();
if(setEpcMatch(EPC)==FAILED){
message.setCode(FAILED);
message.setMessage(mContext.getString(R.string.str_set_epc_match_failed));
return message;
}
flagReset();
m_curOperateTagBuffer.clearBuffer();
byte operat = 0x04;
if (operation.name().equals(lockOperation.LOCK_FREE.name())) {
operat = 0x00;
} else if (operation.name().equals(lockOperation.LOCK_FREE_EVER.name())) {
operat = 0x02;
} else if (operation.name().equals(lockOperation.LOCK_LOCK.name())) {
operat = 0x01;
} else if (operation.name().equals(lockOperation.LOCK_LOCK_EVER.name())) {
operat = 0x03;
}
mReader.lockTag(m_curReaderSetting.btReadId, acs_pwd, block, operat);
// 发送指令后线程挂起 等待数据返回
synchronized (mReaderHelper) {
try {
mReaderHelper.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "lockTagMemoryException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
message.setCode(operationTagResult);
message.setMessage(TextUtils.isEmpty(errorData) ? receviceIncompleteError() : errorData);
return message;
}
@Override
public Message killTag(byte[] EPC, byte[] kill_pwd) {
Message message = new Message();
if(setEpcMatch(EPC)==FAILED){
message.setCode(FAILED);
message.setMessage(mContext.getString(R.string.str_set_epc_match_failed));
return message;
}
flagReset();
m_curOperateTagBuffer.clearBuffer();
mReader.killTag(m_curReaderSetting.btReadId, kill_pwd);
// 发送指令后线程挂起 等待数据返回
synchronized (mReaderHelper) {
try {
mReaderHelper.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "writeTagMemoryException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
message.setCode(operationTagResult);
message.setMessage(TextUtils.isEmpty(errorData) ? receviceIncompleteError() : errorData);
return message;
}
/**
* 设置
* @param paraName
* 参数名(详见SDK)
* @param paraValue
* 参数值(详见SDK)
* @return
*/
@Override
public boolean setParams(String paraName, String paraValue) {
flagReset();
byte paramsValue = 0;
try {
paramsValue = Byte.parseByte(paraValue);
} catch (NumberFormatException e) {
e.printStackTrace();
Loger.disk_log("Exception", "setParamsException" + getExceptionAllinformation(e), "M10_U8");
return false;
}
if (paraName.equals(PARA_POWER)) {
m_curReaderSetting.btAryOutputPower = new byte[] { paramsValue };
mReader.setOutputPower(m_curReaderSetting.btReadId, paramsValue);
synchronized (object) {
try {
if (!havenotify)
object.wait(timeout);
} catch (InterruptedException e) {
object.notify();
}
}
return m_curReaderSetting.blnSetResult;
} else if (paraName.equals(BEER_STATE)) {
mReader.setBeeperMode(m_curReaderSetting.btReadId, paramsValue);
synchronized (object) {
try {
if (!havenotify)
object.wait(timeout);
} catch (InterruptedException e) {
object.notify();
}
}
if (m_curReaderSetting.blnSetResult) {
m_curReaderSetting.btBeeperMode = paramsValue;
U8Property.saveBeeperState((paramsValue & 0xFF));
}
return m_curReaderSetting.blnSetResult;
} else if (paraName.equals(SOFT_SOUND)) {
U8Property.saveSoftSound(paramsValue);
return true;
} else if (paraName.equals(TEMPERATURE)) {
// 温度只能获取无法设置
} else if (paraName.equals(SESSIONSTATE)) {
try {
U8Property.saveSessionState(paramsValue);
} catch (Exception e) {
e.printStackTrace();
Loger.disk_log("Exception", "set_SESSIONSTATE_Exception:" + e.toString(), "M10_U8");
return false;
}
return true;
} else if (paraName.equals(FLAGSTATE)) {
try {
U8Property.saveFlagState(paramsValue);
} catch (Exception e) {
e.printStackTrace();
Loger.disk_log("Exception", "set_FLAGSTATE_Exception:" + e.toString(), "M10_U8");
return false;
}
return true;
}
return false;
}
@Override
public String getParams(String paraName) {
flagReset();
try {
mReaderHelper = ReaderHelper.getDefaultHelper();
mReader = mReaderHelper.getReader();
} catch (Exception e) {
e.printStackTrace();
}
m_curReaderSetting = mReaderHelper.getCurReaderSetting();
if (paraName.equals(PARA_POWER)) {
// 获取
mReader.getOutputPower(m_curReaderSetting.btReadId);
// 发送指令后线程挂起 等待数据返回
synchronized (object) {
try {
if (!havenotify)
object.wait(timeout);
} catch (InterruptedException e) {
object.notify();
}
}
if (m_curReaderSetting.btAryOutputPower != null) {
int powerValue = m_curReaderSetting.btAryOutputPower[0] & 0xFF;
return Integer.toString(powerValue);
} else {
return receviceIncompleteError();
}
} else if (paraName.equals(BEER_STATE)) {
m_curReaderSetting.btBeeperMode = (byte) U8Property.getVeeperState();
if (m_curReaderSetting.btBeeperMode == 0) {
return "0";
} else if (m_curReaderSetting.btBeeperMode == 1) {
return "1";
} else if (m_curReaderSetting.btBeeperMode == 2) {
return "2";
}
} else if (paraName.equals(TEMPERATURE)) {
// 这里暂时将符号位作为是否正确返回标志,协议中规定符号位只能为0x00,0x01,这里赋值为0x02
m_curReaderSetting.btPlusMinus = 0x02;
int result = mReader.getReaderTemperature(m_curReaderSetting.btReadId);
if (result == 0) {
synchronized (object) {
try {
if (!havenotify)
object.wait(timeout);
} catch (InterruptedException e) {
object.notify();
}
}
}
String strTemperature = "";
if (m_curReaderSetting.btPlusMinus == 0x00) {
strTemperature = "-" + String.valueOf(m_curReaderSetting.btTemperature & 0xFF) + "℃";
} else if (m_curReaderSetting.btPlusMinus == 0x01) {
strTemperature = String.valueOf(m_curReaderSetting.btTemperature & 0xFF) + "℃";
} else {// 接收异常
return receviceIncompleteError();
}
// 标志位复位
return strTemperature;
} else if (paraName.equals(SESSIONSTATE)) {
return U8Property.getSessionState() + "";
} else if (paraName.equals(FLAGSTATE)) {
return U8Property.getFlagState() + "";
}
return null;
}
/********************************************************/
private final BroadcastReceiver mRecv = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, Intent intent) {
if (intent.getAction().equals(ReaderHelper.BROADCAST_REFRESH_INVENTORY_REAL)) {
byte btCmd = intent.getByteExtra("cmd", (byte) 0x00);
switch (btCmd) {
case CMD.REAL_TIME_INVENTORY:
case CMD.CUSTOMIZED_SESSION_TARGET_INVENTORY:
try {
mResponseHandler.onSuccess(REFRESHTEXT, null, null);
} catch (Exception e) {
System.out.println(e.toString());
}
break;
case ReaderHelper.INVENTORY_END:
mTagMaps = m_curInventoryBuffer.lsTagList;
//mTagMaps = tools.bubbleSort(mTagMaps);
mResponseHandler.onSuccess(REFRESHLIST, mTagMaps, null);
break;
}
} else if (intent.getAction().equals(ReaderHelper.BROADCAST_WRITE_LOG)) {
}
// 读写锁杀页面
if (intent.getAction().equals(ReaderHelper.BROADCAST_REFRESH_OPERATE_TAG)) {
byte btCmd = intent.getByteExtra("cmd", (byte) 0x00);
byte type = intent.getByteExtra("type", (byte) 0x00);
final String msg = intent.getStringExtra("msg");
switch (btCmd) {
case CMD.GET_ACCESS_EPC_MATCH:
break;
case CMD.READ_TAG:
break;
case CMD.WRITE_TAG:
break;
case CMD.LOCK_TAG:
break;
case CMD.KILL_TAG:
break;
}
}
// 设置功率
if (intent.getAction().equals(ReaderHelper.BROADCAST_REFRESH_READER_SETTING)) {
byte btCmd = intent.getByteExtra("cmd", (byte) 0x00);
if (btCmd == CMD.GET_OUTPUT_POWER || btCmd == CMD.SET_OUTPUT_POWER) {
}
// 温度
if (btCmd == CMD.GET_READER_TEMPERATURE) {
}
}
}
};
@Override
public Message Inventory() {
startInventory(new IResponseHandler() {
@Override
public void onSuccess(String msg, Object data, byte[] parameters) {
if (msg.equalsIgnoreCase(REFRESHLIST)) {
List<InventoryTagMap> InventoryOnceResult = (List<InventoryTagMap>) data;
stopInventory();
synchronized (object) {
object.notifyAll();
}
}
}
@Override
public void onFailure(String msg) {
stopInventory();
synchronized (object) {
object.notifyAll();
}
}
});
synchronized (object) {
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 打开串口
* @param moduleName 模块名
* @return
*/
@Override
public Message openSerialPort(String moduleName) {
DeviceModel deviceModel = new DeviceModel(mContext);
Device device = deviceModel.getDeviceFromModel(moduleName);
Message msg = new Message();
if (device == null) {
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.lose_configurationfile));
return msg;
}
String serialPortPath = device.getSerialPort();
int baudRate = device.getBaudRate();
try {
if (android.os.Build.VERSION.RELEASE.equals(AndroidVersions.V_4_0_3)) {
try {
mSerialPort = new SerialPort(new File(serialPortPath), baudRate, 0);
} catch (SecurityException e1) {
e1.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e1.toString()));
return msg;
} catch (IOException e1) {
e1.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e1.toString()));
return msg;
}
} else if (android.os.Build.VERSION.RELEASE.equals(AndroidVersions.V_5_1_1)) {
try {
mSerialPort = new SerialPort(new File(serialPortPath), baudRate, 0);
} catch (SecurityException e1) {
e1.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e1.toString()));
return msg;
} catch (IOException e1) {
e1.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e1.toString()));
return msg;
}
} else {
Toast.makeText(mContext, "程序版本有误,请联系技术支持人员!", Toast.LENGTH_SHORT).show();
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.version_exception));
return msg;
}
mReaderHelper = ReaderHelper.getDefaultHelper();
mReaderHelper.setReader(mSerialPort.getInputStream(), mSerialPort.getOutputStream());
mReader = mReaderHelper.getReader();
m_curReaderSetting = mReaderHelper.getCurReaderSetting();
m_curOperateTagBuffer = mReaderHelper.getCurOperateTagBuffer();
} catch (Exception e) {
e.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e.toString()));
return msg;
}
msg.setCode(0);
msg.setMessage(mContext.getResources().getString(R.string.u8_success));
return msg;
}
/**
* 关闭串口
* @return
*/
@Override
public Message closeSerialPort() {
Message msg = new Message();
if (mSerialPort != null) {
try {
mSerialPort.close();
msg.setCode(0);
msg.setMessage(mContext.getResources().getString(R.string.u8_success));
return msg;
} catch (Exception e) {
e.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e.toString()));
return msg;
}
}
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.serialPort_not_open));
return msg;
}
/**
* 模块上电
* @param moduleName 模块名
* @return
*/
@Override
public Message modulePowerOn(String moduleName) {
Message msg = new Message();
DeviceModel deviceModel = new DeviceModel(mContext);
Device device = deviceModel.getDeviceFromModel(moduleName);
if (device != null) {
try {
device.powerOn();
msg.setCode(0);
msg.setMessage(mContext.getResources().getString(R.string.u8_success));
return msg;
} catch (Exception e) {
e.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e.toString()));
return msg;
}
} else {
}
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.lose_configurationfile));
return msg;
}
/**
* 模块下电
* @param moduleName 模块名
* @return
*/
@Override
public Message modulePowerOff(String moduleName) {
Message msg = new Message();
DeviceModel deviceModel = new DeviceModel(mContext);
Device device = deviceModel.getDeviceFromModel(moduleName);
if (device != null) {
try {
device.powerOff();
msg.setCode(0);
msg.setMessage(mContext.getResources().getString(R.string.u8_success));
return msg;
} catch (Exception e) {
e.printStackTrace();
msg.setCode(1);
msg.setMessage(String.format(mContext.getResources().getString(R.string.exception_occurred), e.toString()));
return msg;
}
}
msg.setCode(1);
msg.setMessage(mContext.getResources().getString(R.string.lose_configurationfile));
return msg;
}
/**
* 标志位复位,包括:</br> havenotify :notify标志位</br> errorData :错误信息标志位</br>
* readDataString :读标签数据标志位</br> operationTagResult :写/锁/杀标签结果标志位</br>
* m_curReaderSetting.blnSetResult :设置结果标志位</br>
*/
private void flagReset() {
havenotify = false;
errorData = null;
readDataString = null;
operationTagResult = FAILED;
m_curReaderSetting.blnSetResult = false;
m_curReaderSetting.btAryOutputPower = null;
}
/**
* 设置匹配标签
*
* @param EPC
* 要绑定的EPC号(需要完整EPC,只绑定部分EPC时读写操作会返回无可操作标签错误),
* 需要解绑标签时此方法传进"Cancel".getBytes()即可
*
* @return 绑定/解绑结果:成功 :0, 失败:-1
*/
private int setEpcMatch(byte[] EPC) {
flagReset();
if (new String(EPC).equalsIgnoreCase("Cancel")) {
mReader.cancelAccessEpcMatch(m_curReaderSetting.btReadId);
// 发送指令后线程挂起 等待数据返回
synchronized (object) {
try {
object.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "setEpcMatchWaitException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
Log.e("see", "m_curReaderSetting.blnSetResult ==>"+m_curReaderSetting.blnSetResult);
if(m_curReaderSetting.blnSetResult)
return SUCCEED;
else {
return FAILED;
}
} else {
byte[] btAryEpc = EPC;
mReader.setAccessEpcMatch(m_curReaderSetting.btReadId, (byte) (btAryEpc.length & 0xFF), btAryEpc);
// 发送指令后线程挂起 等待数据返回
synchronized (object) {
try {
object.wait(timeout);
} catch (InterruptedException e) {
Loger.disk_log("Exception", "setEpcMatchWaitException" + getExceptionAllinformation(e), "M10_U8");
mReaderHelper.notify();
}
}
if(m_curReaderSetting.blnSetResult)
return SUCCEED;
else {
return FAILED;
}
}
}
/**
* 初始化盘询所需资源
*
* @throws Exception
*/
private void initInventoryParam() throws Exception {
mReaderHelper = ReaderHelper.getDefaultHelper();
mReader = mReaderHelper.getReader();
m_curInventoryBuffer = mReaderHelper.getCurInventoryBuffer();
m_curOperateTagBuffer = mReaderHelper.getCurOperateTagBuffer();
if (mReader != null) {
if (!mReader.IsAlive())
mReader.StartWait();
}
}
/**
* 若配置文件丟失,跳转到配置工具
*/
private void jumpToConfigurationTool() {
Intent intent = new Intent();
intent.putExtra("modelName", model);
intent.putExtra("packageName", packageName);
intent.putExtra("activityName", activityName);
intent.setClass(mContext, SetAndSaveActivity.class);
mContext.startActivity(intent);
}
/**
* 注册广播接收器
*/
private static void registerReceiver() {
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(mContext);
IntentFilter itent = new IntentFilter();
itent.addAction(ReaderHelper.BROADCAST_REFRESH_INVENTORY_REAL);
lbm.registerReceiver(mUSeries.mRecv, itent);
}
/**
* 获取全部异常信息.
*
* @param ex
* 异常
* @return
*/
private static String getExceptionAllinformation(Exception ex) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
PrintStream pout = new PrintStream(out);
ex.printStackTrace(pout);
String ret = new String(out.toByteArray());
pout.close();
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
private String receviceIncompleteError() {
mReader.resetRecevice();
return ERROR.RECEVICE_INCOMPLETE;
}
}
......@@ -6,7 +6,6 @@ import android.util.Log;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.fn.useries.operation.U8Series;
import com.fn.useries.reader.CMD;
import com.fn.useries.reader.ERROR;
import com.fn.useries.reader.HEAD;
......
......@@ -36,7 +36,6 @@ public class U8Property {
static public int getFlagState(){
Context context = StmApplication.getInstance().getApplicationContext();
SharedPreferences spf = context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
//SharedPreferences.Editor editor = spf.edit();
int state = spf.getInt(KEY_FLAG, 0);
return state;
}
......@@ -66,7 +65,6 @@ public class U8Property {
static public int getSoftSound(){
Context context = StmApplication.getInstance().getApplicationContext();
SharedPreferences spf =context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
//SharedPreferences.Editor editor = spf.edit();
return spf.getInt(KEY_SOFTWARE_SOUND, 1);
}
......
......@@ -13,7 +13,7 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import com.fn.useries.operation.U8Series;
import com.fn.useries.operation.M11U8Service;
import com.fn.useries.reader.ERROR;
import com.fn.useries.utils.MusicPlayer;
import com.stm.asset.R;
......@@ -30,8 +30,6 @@ import com.stm.asset.view.TextMoveLayout;
*/
public class DeviceSetActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private TextMoveLayout powerLayout;
private SeekBar powerSb;
private TextView moveTextDBM;
......@@ -40,7 +38,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private Spinner sessionSpinner;
private Spinner flagSpinner;
private U8Series mUSeries;
private M11U8Service mUSeries;
private int screenWidth;
@Override
......@@ -63,7 +61,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
powerLayout = findViewById(R.id.set_power_layout);
powerSb = findViewById(R.id.set_power_sb);
powerSb.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp());
powerSb.setMax(33);
powerSb.setMax(13);
layoutParams = new ViewGroup.LayoutParams(screenWidth, 40);
temperatureEt = findViewById(R.id.set_temperature_et);
......@@ -74,13 +72,13 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
findViewById(R.id.inventory_save_btn).setOnClickListener(this);
mUSeries = U8Series.getInstance();
mUSeries = M11U8Service.getInstance();
}
@Override
protected void onResume() {
super.onResume();
mUSeries.modulePowerOn(MODEL);
mUSeries.initService();
powerLayout.removeAllViews();
powerLayout.addView(moveTextDBM, layoutParams);
if (mUSeries != null) {
......@@ -92,13 +90,13 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
@Override
protected void onPause() {
super.onPause();
mUSeries.modulePowerOff(MODEL);
mUSeries.releaseService();
}
private void getPower() {
try {
Thread.sleep(800);
String outPowerSetParams = mUSeries.getParams(U8Series.PARA_POWER);
String outPowerSetParams = mUSeries.getParams(M11U8Service.PARA_POWER);
Log.i("DeviceSetActivity", "M10_U8:getPower " + outPowerSetParams);
if (outPowerSetParams.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
......@@ -117,13 +115,13 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
String[] mItemsFlag = { "A", "B" };
ArrayAdapter<String> simpleAdapter = new ArrayAdapter<>(this, R.layout.view_simple_spinner_item, mItems);
sessionSpinner.setAdapter(simpleAdapter);
String sessionParams = mUSeries.getParams(U8Series.SESSIONSTATE);
String sessionParams = mUSeries.getParams(M11U8Service.SESSIONSTATE);
if (sessionParams != null && !"".equals(sessionParams)) {
sessionSpinner.setSelection(Integer.parseInt(sessionParams));
}
simpleAdapter = new ArrayAdapter<>(this, R.layout.view_simple_spinner_item, mItemsFlag);
flagSpinner.setAdapter(simpleAdapter);
String flagParams = mUSeries.getParams(U8Series.FLAGSTATE);
String flagParams = mUSeries.getParams(M11U8Service.FLAGSTATE);
if (flagParams != null && !"".equals(flagParams)) {
flagSpinner.setSelection(Integer.parseInt(flagParams));
}
......@@ -138,7 +136,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private void getTemperature() {
temperatureEt.setText("");
try {
String strTemperature = mUSeries.getParams(U8Series.TEMPERATURE);
String strTemperature = mUSeries.getParams(M11U8Service.TEMPERATURE);
if (strTemperature.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {// 接收异常
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
StmApplication.getInstance().showToastShort(ERROR.RECEVICE_INCOMPLETE);
......@@ -156,21 +154,21 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private boolean setSessionAndFlag() {
int sessionIndex = sessionSpinner.getSelectedItemPosition();
int flagIndex = flagSpinner.getSelectedItemPosition();
boolean setSessionStateResult = mUSeries.setParams(U8Series.SESSIONSTATE, Byte.toString((byte) sessionIndex));
boolean setFlagStateResult = mUSeries.setParams(U8Series.FLAGSTATE, Byte.toString((byte) flagIndex));
boolean setSessionStateResult = mUSeries.setParams(M11U8Service.SESSIONSTATE, Byte.toString((byte) sessionIndex));
boolean setFlagStateResult = mUSeries.setParams(M11U8Service.FLAGSTATE, Byte.toString((byte) flagIndex));
return (setSessionStateResult && setFlagStateResult);
}
private boolean setPower() {
byte btOutputPower;
String outputPower;
try {
String powerStr = moveTextDBM.getText().toString();
btOutputPower = (byte) Integer.parseInt(powerStr.subSequence(0, powerStr.indexOf("dBm")).toString());
outputPower = powerStr.subSequence(0, powerStr.indexOf("dBm")).toString();
} catch (Exception e) {
return false;
}
try {
return mUSeries.setParams(U8Series.PARA_POWER, Byte.toString(btOutputPower));
return mUSeries.setParams(M11U8Service.PARA_POWER, outputPower);
} catch (Exception e) {
Log.i("DeviceSetActivity", "M10_U8:setPowerParamsException" + e.toString());
return false;
......
......@@ -10,11 +10,11 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.room.Room;
import com.fn.useries.model.ResponseHandler;
import com.fn.useries.operation.U8Series;
import com.fn.useries.operation.M11U8Service;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.reader.server.ReaderHelper;
import com.fn.useries.utils.Tools;
import com.series.inter.InventoryInterface;
import com.stm.asset.R;
import com.stm.asset.adapter.InventoryAdapter;
import com.stm.asset.base.BaseActivity;
......@@ -36,12 +36,10 @@ import java.util.List;
*/
public class InventoryActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private Button beginBtn;
private TextView txtCountTxt;
private U8Series mUSeries;
private M11U8Service mUSeries;
private ReaderHelper mReaderHelper;
private InventoryBuffer m_curInventoryBuffer;
private Handler mHandler;
......@@ -61,7 +59,7 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
m_curInventoryBuffer = mReaderHelper.getCurInventoryBuffer();
InventoryInfoDatabase database = Room.databaseBuilder(this, InventoryInfoDatabase.class, "inventoryInfoDemo").build();
inventoryInfoDao = database.inventoryInfoDao();
mUSeries = U8Series.getInstance();
mUSeries = M11U8Service.getInstance();
} catch (Exception e) {
e.printStackTrace();
}
......@@ -70,13 +68,13 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
@Override
protected void onResume() {
super.onResume();
mUSeries.modulePowerOn(MODEL);
mUSeries.initService();
}
@Override
protected void onPause() {
super.onPause();
mUSeries.modulePowerOff(MODEL);
mUSeries.releaseService();
}
private void initView() {
......@@ -105,21 +103,17 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
beginBtn.setText(R.string.inventory_btn_doing);
isInventory = true;
mRefreshTime = new Date().getTime();
mUSeries.startInventory(new ResponseHandler() {
mUSeries.startInventory(new InventoryInterface() {
@Override
public void onSuccess(String msg, Object data, byte[] parameters) {
super.onSuccess(msg, data, parameters);
if (U8Series.REFRESHLIST.equals(msg)) {
List<InventoryBuffer.InventoryTagMap> list = (List<InventoryBuffer.InventoryTagMap>) data;
if (list.size() > 0) {
inventoryAdapter.setData(list, false);
}
}
public void success(Object obj) {
InventoryBuffer.InventoryTagMap tag = (InventoryBuffer.InventoryTagMap) obj;
List<InventoryBuffer.InventoryTagMap> list = new ArrayList<>();
list.add(tag);
inventoryAdapter.setData(list, false);
}
@Override
public void onFailure(String msg) {
super.onFailure(msg);
public void fail(String msg) {
StmApplication.getInstance().showToastShort(getResources().getText(R.string.inventory_disk_failure) + msg);
}
});
......
......@@ -3,7 +3,6 @@ package com.stm.asset.page;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.LinearLayout;
......@@ -12,9 +11,6 @@ import android.widget.TextView;
import androidx.core.app.ActivityCompat;
import com.fn.useries.model.Message;
import com.fn.useries.operation.IUSeries;
import com.fn.useries.operation.U8Series;
import com.stm.asset.R;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
......@@ -39,15 +35,10 @@ import java.util.Map;
*/
public class MainActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private static final int REQUEST_TO_SET = 10001;
private RelativeLayout logoutLayout;
private View logoutLine;
private TextView userTxt;
private IUSeries mUSeries;
private boolean setFlag = false;
private UserInfo userInfo;
private LoadingDialog loadingDialog;
private Map<String, String> versionMap;
......@@ -57,15 +48,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
U8Series.setContext(StmApplication.getInstance().getApplicationContext());
mUSeries = U8Series.getInstance();
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
Log.i("MainActivity", "code:" + openSerialMsg.getCode());
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
}
loadingDialog = new LoadingDialog(this);
}
......@@ -80,15 +62,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
logoutLayout.setOnClickListener(this);
}
private void jumpToConfigurationTool() {
Intent intent = new Intent();
intent.putExtra("modelName", MODEL);
intent.putExtra("packageName", getPackageName());
intent.putExtra("activityName", MainActivity.class.getName());
intent.setClass(this, SetAndSaveActivity.class);
startActivityForResult(intent, REQUEST_TO_SET);
}
@Override
protected void onResume() {
super.onResume();
......@@ -103,7 +76,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
logoutLayout.setVisibility(View.GONE);
logoutLine.setVisibility(View.GONE);
}
// getVersionIno();
}
@Override
......@@ -114,9 +86,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
@Override
protected void onDestroy() {
super.onDestroy();
if (setFlag) {
mUSeries.closeSerialPort();
}
}
@Override
......@@ -142,43 +111,18 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
break;
case R.id.main_begin_inventory_layout:
if (userInfo != null) {
if (!setFlag) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, InventoryActivity.class);
startActivity(inventoryIntent);
}
} else {
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, InventoryActivity.class);
startActivity(inventoryIntent);
}
break;
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, InventoryActivity.class);
startActivity(inventoryIntent);
} else {
Intent loginIntent = new Intent();
loginIntent.setClass(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
}
case R.id.main_settings_layout:
if (!setFlag) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, DeviceSetActivity.class);
startActivity(inventoryIntent);
}
} else {
Intent deviceSetIntent = new Intent();
deviceSetIntent.setClass(MainActivity.this, DeviceSetActivity.class);
startActivity(deviceSetIntent);
}
Intent deviceSetIntent = new Intent();
deviceSetIntent.setClass(MainActivity.this, DeviceSetActivity.class);
startActivity(deviceSetIntent);
break;
case R.id.main_logout_layout:
userInfo = null;
......@@ -192,20 +136,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_TO_SET) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() == 0) {
setFlag = true;
}
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
showExitDialog();
......@@ -269,7 +199,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
sApp.setShowBackground(false);
// ActivityCompat.requestPermissions(MainActivity.this, new String[] {"android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"}, IConstant.PERMISSION_REQUEST_SELECT_PHOTO);
} else {
// TODO
//
}
}
});
......
......@@ -20,8 +20,8 @@ public class PropertyUtil {
private static final String KEY_HTTP_PORT = "key_http_port"; // Http Port
private static final String KEY_HTTP_PLATFORM = "key_http_platform"; // Http Platform
private static final String KEY_USE_HTTPS = "key_use_https"; // 是否启用Https
private static final String KEY_ENCRYPT_PWD = "key_encrypt_pwd"; // 作为请求的全局sign
private static final String KEY_ACCESS_TOKEN = "key_access_token"; // 作为请求的全局sign
private static final String KEY_ENCRYPT_PWD = "key_encrypt_pwd"; // 加密密钥
private static final String KEY_ACCESS_TOKEN = "key_access_token"; // 加密token
public static boolean isFirstBegin(Context context) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment