v2.0.11 버전
DB Open 후 No close 상태 처리 기타 안정화
This commit is contained in:
parent
1d1d7912a2
commit
37279a6a9a
@ -20,9 +20,10 @@ android {
|
||||
defaultConfig {
|
||||
applicationId "kr.co.enicom.acs"
|
||||
minSdkVersion 26
|
||||
//noinspection ExpiredTargetSdkVersion
|
||||
targetSdkVersion 30
|
||||
versionCode 207
|
||||
versionName "2.0.7"
|
||||
versionCode 200000011
|
||||
versionName "2.0.11"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
ndk.abiFilters 'armeabi-v7a'
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ public class H1Device {
|
||||
}
|
||||
|
||||
public int executeCommand(byte[] cmd) {
|
||||
Log.d("H1Device", "executeCommand() start");
|
||||
//Log.d("H1Device", "executeCommand() start");
|
||||
if (null == this.mDeviceConnection) {
|
||||
return ERR_H1DEVICE_ARGUMENT;
|
||||
} else {
|
||||
@ -120,7 +120,7 @@ public class H1Device {
|
||||
return ERR_H1DEVICE_RESPONSE;
|
||||
} else {
|
||||
this.mDeviceConnection.releaseInterface(this.mInterface);
|
||||
Log.d("H1Device", "executeCommand() end");
|
||||
//Log.d("H1Device", "executeCommand() end");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -176,7 +176,7 @@ public class H1Device {
|
||||
Log.d("H1Device", "receiveResponse() receiveDataLen() failed.");
|
||||
return false;
|
||||
} else {
|
||||
Log.d("H1Device", "receiveResponse() mResDataLength=" + this.mResDataLength);
|
||||
//Log.d("H1Device", "receiveResponse() mResDataLength=" + this.mResDataLength);
|
||||
if (!this.receiveData()) {
|
||||
Log.d("H1Device", "receiveResponse() receiveData() 1 failed.");
|
||||
return false;
|
||||
@ -224,13 +224,14 @@ public class H1Device {
|
||||
} else {
|
||||
this.mResData = ByteBuffer.allocate(this.mResDataLength);
|
||||
int maxPacketSize = this.mEndpointIn.getMaxPacketSize();
|
||||
Log.d("H1Device", "receiveData() maxPacketSize=" + maxPacketSize);
|
||||
//Log.d("H1Device", "receiveData() maxPacketSize=" + maxPacketSize);
|
||||
if (this.mResDataLength <= maxPacketSize) {
|
||||
byte[] rData = new byte[this.mResDataLength];
|
||||
if (!this.bulkTransfer(this.mDeviceConnection, this.mEndpointIn, rData, this.mResDataLength, BULK_TIMEOUT)) {
|
||||
Log.d("H1Device", "receiveData() failed 1.");
|
||||
return false;
|
||||
} else {
|
||||
Log.d("H1Device", "receiveData() mResDataLength=" + mResDataLength);
|
||||
this.mResData.put(rData);
|
||||
return true;
|
||||
}
|
||||
@ -247,6 +248,7 @@ public class H1Device {
|
||||
return false;
|
||||
}
|
||||
|
||||
//Log.d("H1Device", "receiveData() packetSize=" + packetSize);
|
||||
this.mResData.put(rData);
|
||||
}
|
||||
|
||||
@ -267,7 +269,7 @@ public class H1Device {
|
||||
return false;
|
||||
} else {
|
||||
this.mResCode = data[0];
|
||||
Log.d("H1Device", "receiveCode() mResCode=" + this.mResCode);
|
||||
//Log.d("H1Device", "receiveCode() mResCode=" + this.mResCode);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -60,6 +60,7 @@ public class BaseService extends Service {
|
||||
public static GpioManager mGpioManager = null;
|
||||
public static boolean mIsNeedUsbReset = false;
|
||||
public static boolean mIsServiceStarted = false;
|
||||
public static boolean mIsServiceReady = false;
|
||||
|
||||
// public static RitoUtil mRitoUtil = null;
|
||||
// public static ArrayBlockingQueue<Bitmap> mRBitmapFrameQueue = new ArrayBlockingQueue<Bitmap>(1);
|
||||
@ -100,8 +101,13 @@ public class BaseService extends Service {
|
||||
|
||||
public void forceStatusOrder(int order) {
|
||||
synchronized (mLock) {
|
||||
if(order == GlobalInfo.DOOR_CONTROL_STATUS_OPEN_LOCK || order == GlobalInfo.DOOR_CONTROL_STATUS_OPEN) {
|
||||
mCurrentOrder = DOOR_CONTROL_STATUS_CLOSE;
|
||||
mNextOrder = order;
|
||||
mCurrentOrder = order;
|
||||
} else {
|
||||
mNextOrder = order;
|
||||
mCurrentOrder = DOOR_CONTROL_STATUS_OPEN_LOCK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -233,6 +239,21 @@ public class BaseService extends Service {
|
||||
@Override
|
||||
public void run() {
|
||||
mIsAlive = true;
|
||||
|
||||
if (GlobalInfo.mUseDoorControlTime == 1) {
|
||||
try {
|
||||
sleep(2000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (GlobalInfo.checkIsDoorControlOpenTime()) {
|
||||
mDoorManager.forceStatusOrder(DOOR_CONTROL_STATUS_OPEN_LOCK);
|
||||
GlobalInfo.mDoorControlSentLastTime = SystemClock.uptimeMillis();
|
||||
} else {
|
||||
mDoorManager.forceStatusOrder(DOOR_CONTROL_STATUS_CLOSE);
|
||||
}
|
||||
}
|
||||
|
||||
while(mIsAlive) {
|
||||
try {
|
||||
sleep(1000);
|
||||
@ -311,7 +332,7 @@ public class BaseService extends Service {
|
||||
long curTime = SystemClock.uptimeMillis();
|
||||
if (GlobalInfo.mDoorControlTimeStatus != 1) {
|
||||
//mDoorManager.controlDoor(true, -1);
|
||||
mDoorManager.queueControlOrder(DOOR_CONTROL_STATUS_OPEN_LOCK);
|
||||
mDoorManager.forceStatusOrder(DOOR_CONTROL_STATUS_OPEN_LOCK);
|
||||
GlobalInfo.mDoorControlSentLastTime = curTime;
|
||||
if (MainActivity.INSTANCE != null) {
|
||||
MainActivity.INSTANCE.turnToBaseUI();
|
||||
@ -319,7 +340,7 @@ public class BaseService extends Service {
|
||||
}
|
||||
GlobalInfo.mDoorControlTimeStatus = 1;
|
||||
if(curTime - GlobalInfo.mDoorControlSentLastTime >= 5 * 60 * 1000) { // 5분 주기 OPENLOCK
|
||||
mDoorManager.queueControlOrder(DOOR_CONTROL_STATUS_OPEN_LOCK);
|
||||
mDoorManager.forceStatusOrder(DOOR_CONTROL_STATUS_OPEN_LOCK);
|
||||
GlobalInfo.mDoorControlSentLastTime = curTime;
|
||||
}
|
||||
} else {
|
||||
@ -656,8 +677,8 @@ public class BaseService extends Service {
|
||||
|
||||
}
|
||||
|
||||
|
||||
INSTANCE = this;
|
||||
mIsServiceReady = true;
|
||||
return START_NOT_STICKY;
|
||||
}
|
||||
|
||||
|
@ -126,6 +126,7 @@ public class GlobalInfo {
|
||||
public static int DCU_DEVICE_TYPE_NICOM = 0;
|
||||
public static int DCU_DEVICE_TYPE_UNION = 1;
|
||||
|
||||
public static int DOOR_CONTROL_STATUS_NONE = -1;
|
||||
public static int DOOR_CONTROL_STATUS_OPEN = 0;
|
||||
public static int DOOR_CONTROL_STATUS_CLOSE = 1;
|
||||
public static int DOOR_CONTROL_STATUS_OPEN_LOCK = 2;
|
||||
@ -319,6 +320,8 @@ public class GlobalInfo {
|
||||
if(count > 0)
|
||||
return;
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -339,6 +342,8 @@ public class GlobalInfo {
|
||||
GlobalInfo.mServerAddressSlave = cursor.getString(2);
|
||||
GlobalInfo.mServerPortSlave = cursor.getInt(3);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -372,6 +377,8 @@ public class GlobalInfo {
|
||||
cursor.moveToNext();
|
||||
result = true;
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -738,6 +745,8 @@ public class GlobalInfo {
|
||||
info.mResultCode = cursor.getInt(7);
|
||||
info.mRfidCode = cursor.getString(8);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -775,9 +784,12 @@ public class GlobalInfo {
|
||||
if (cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
if(count > 0) {
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
_database.close();
|
||||
return false;
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch(Exception e) {
|
||||
}
|
||||
@ -972,7 +984,7 @@ public class GlobalInfo {
|
||||
try {
|
||||
//Log.w("RITO", "ScanQuery : " + sql );
|
||||
Cursor cursor = database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
for(int i = 0; i< count ; i++){
|
||||
cursor.moveToNext();
|
||||
@ -1004,9 +1016,13 @@ public class GlobalInfo {
|
||||
_info.mPermitDate = cursor.getString(19);
|
||||
_info.mPermitTime = cursor.getString(20);
|
||||
_info.makeSafe();
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
database.close();
|
||||
return _info;
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1042,7 +1058,7 @@ public class GlobalInfo {
|
||||
String sql = "select id, name, authority, password, rfidcode, veincode, idx, oprno, johapnum, user_reg_date, rfid_reg_date, vein_reg_date, fingercode, finger_reg_date, facecode, face_reg_date, rfidcode2, veincode2, fingercode2, permit_date, permit_time from userinfo";
|
||||
try {
|
||||
Cursor cursor = database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.w(TAG, "User Count : " + count);
|
||||
|
||||
@ -1080,6 +1096,8 @@ public class GlobalInfo {
|
||||
//Log.w(TAG, "User #"+i+" : " + _info.mName);
|
||||
mUserList.add(_info);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1138,7 +1156,7 @@ public class GlobalInfo {
|
||||
String sql = "select address, port, address_slave, port_slave, update_addr, update_port, update_protocol from serverinfo where idx = 0";
|
||||
try {
|
||||
Cursor cursor = database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.w(TAG, "ServerInfo Count : " + count);
|
||||
|
||||
@ -1153,6 +1171,8 @@ public class GlobalInfo {
|
||||
GlobalInfo.mUpdateServerPort = cursor.getInt(5);
|
||||
GlobalInfo.mUpdateProtocol = cursor.getInt(6);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1166,7 +1186,7 @@ public class GlobalInfo {
|
||||
" from settings where idx = 0";
|
||||
try {
|
||||
Cursor cursor = database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.w(TAG, "settings Count : " + count);
|
||||
|
||||
@ -1216,6 +1236,8 @@ public class GlobalInfo {
|
||||
Log.w("RITO", "mAutoForgery : " + GlobalInfo.mAutoForgery);
|
||||
Log.w("RITO", "mAutoMaskWear : " + GlobalInfo.mAutoMaskWear);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1575,7 +1597,7 @@ public class GlobalInfo {
|
||||
Log.w(TAG, "Log Query : " + sql);
|
||||
try {
|
||||
Cursor cursor = _database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.d(TAG, "Log Count : " + count);
|
||||
|
||||
@ -1606,6 +1628,8 @@ public class GlobalInfo {
|
||||
|
||||
logList.add(_info);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1644,7 +1668,7 @@ public class GlobalInfo {
|
||||
Log.w(TAG, "AdminLog Query : " + sql);
|
||||
try {
|
||||
Cursor cursor = _database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.d(TAG, "AdminLog Count : " + count);
|
||||
|
||||
@ -1677,6 +1701,8 @@ public class GlobalInfo {
|
||||
|
||||
logList.add(_info);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1713,7 +1739,7 @@ public class GlobalInfo {
|
||||
}
|
||||
try {
|
||||
Cursor cursor = _database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.d(TAG, "Log Count : " + count);
|
||||
|
||||
@ -1735,6 +1761,8 @@ public class GlobalInfo {
|
||||
_info.mAttendanceCode = cursor.getInt(7);
|
||||
logList.add(_info);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1770,7 +1798,7 @@ public class GlobalInfo {
|
||||
}
|
||||
try {
|
||||
Cursor cursor = _database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.d(TAG, "Log Count : " + count);
|
||||
|
||||
@ -1792,6 +1820,8 @@ public class GlobalInfo {
|
||||
_info.mAttendanceCode = cursor.getInt(7);
|
||||
logList.add(_info);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1830,7 +1860,7 @@ public class GlobalInfo {
|
||||
Log.w(TAG, "User Query : " + sql);
|
||||
try {
|
||||
Cursor cursor = _database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.d(TAG, "User Count : " + count);
|
||||
|
||||
@ -1867,6 +1897,8 @@ public class GlobalInfo {
|
||||
_info.makeSafe();
|
||||
userList.add(_info);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -1897,7 +1929,7 @@ public class GlobalInfo {
|
||||
|
||||
try {
|
||||
Cursor cursor = _database.rawQuery(sql, null);
|
||||
if(cursor != null){
|
||||
if(cursor != null) {
|
||||
int count = cursor.getCount();
|
||||
Log.d(TAG, "User Count : " + count);
|
||||
|
||||
@ -1934,6 +1966,8 @@ public class GlobalInfo {
|
||||
_info.makeSafe();
|
||||
userList.add(_info);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -2303,6 +2337,8 @@ public class GlobalInfo {
|
||||
cursor.moveToNext();
|
||||
tableCount = cursor.getInt(0);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
@ -2336,6 +2372,8 @@ public class GlobalInfo {
|
||||
cursor.moveToNext();
|
||||
tableCount = cursor.getInt(0);
|
||||
}
|
||||
|
||||
cursor.close(); // added by ritoseo - 2025-10-14
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
@ -2456,7 +2494,7 @@ public class GlobalInfo {
|
||||
return false;
|
||||
|
||||
int currentMinutes = getCurrentMinutesInDay();
|
||||
if(currentMinutes >= mDoorControlTimeStart && currentMinutes <= mDoorControlTimeEnd)
|
||||
if(currentMinutes >= mDoorControlTimeStart && currentMinutes < mDoorControlTimeEnd)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
@ -1743,8 +1743,15 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
|
||||
new Thread("DelayedSetter") {
|
||||
@Override
|
||||
public void run() {
|
||||
while(!BaseService.mIsServiceReady) {
|
||||
try {
|
||||
sleep(500);
|
||||
sleep(100);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
try {
|
||||
sleep(200);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -2077,6 +2084,11 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
|
||||
GlobalInfo.mAttendanceMode = GlobalInfo.ATTENDANCE_MODE_NONE;
|
||||
}
|
||||
|
||||
if(GlobalInfo.checkIsDoorControlOpenTime()) {
|
||||
mIsOnRfidVerifyingProcess = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if(logResult.mId.length() > 0) {
|
||||
//Toast.makeText(this,"인증 성공 [" + logResult.mName + "]", Toast.LENGTH_SHORT).show();
|
||||
|
||||
|
@ -158,6 +158,7 @@ public class RfidManager implements SerialInputOutputManager.Listener {
|
||||
mSerialThread = new Thread() {
|
||||
byte[] accData = new byte[128];
|
||||
int accFilled = 0;
|
||||
int failedCount = 0;
|
||||
int PACKET_LENGTH = GlobalInfo.BLE_RFID_CODE_LENGTH + 2;
|
||||
@Override
|
||||
public void run() {
|
||||
@ -209,20 +210,30 @@ public class RfidManager implements SerialInputOutputManager.Listener {
|
||||
sleep(50);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
|
||||
if(acmHandle < 0) {
|
||||
acmHandle = mSerialManager.OpenSerial("/dev/ttyACM0", 115200);
|
||||
if(acmHandle < 0) {
|
||||
if(failedCount < 10000) {
|
||||
failedCount++;
|
||||
}
|
||||
Log.e(RfidManager.class.getName(), "Error to open BLE Reader Module[ttyACM0]!");
|
||||
try {
|
||||
sleep(500 * failedCount);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
} else {
|
||||
failedCount = 0;
|
||||
Log.d(RfidManager.class.getName(), "Success to open BLE Reader Module[ttyACM0] :-)");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
mSerialThread.start();
|
||||
}
|
||||
|
||||
if(acmHandle < 0) {
|
||||
acmHandle = mSerialManager.OpenSerial("/dev/ttyACM0", 115200);
|
||||
if(acmHandle < 0) {
|
||||
Log.e(RfidManager.class.getName(), "Error to open BLE Reader Module[ttyACM0]!");
|
||||
} else {
|
||||
Log.d(RfidManager.class.getName(), "Success to open BLE Reader Module[ttyACM0] :-)");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -254,6 +265,8 @@ public class RfidManager implements SerialInputOutputManager.Listener {
|
||||
}
|
||||
//mNotifyTarget.onRfidResult("success", dataToHexString(data));
|
||||
}
|
||||
} else {
|
||||
Log.w(RfidManager.class.getName(), "There is no NotifyTarget Exist for RFID Reader!");
|
||||
}
|
||||
}
|
||||
|
||||
|
BIN
app/src/main/res/raw/fail.mp3
Normal file
BIN
app/src/main/res/raw/fail.mp3
Normal file
Binary file not shown.
Binary file not shown.
BIN
app/src/main/res/raw/sucess.mp3
Normal file
BIN
app/src/main/res/raw/sucess.mp3
Normal file
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user