ACS v3 - UI기능 추가사항 반영 1차 완료.

RFID, 지문,지정맥 2개등록
ttyACM0 BLE 모듈 시리얼 통신 기능 추가
시간 지정 개방기능 구현
사용자별 기간, 시간대 처리 구현
This commit is contained in:
ritoseo 2025-07-06 23:05:20 +09:00
parent 124b2b8ae9
commit c2776d0267
49 changed files with 3867 additions and 402 deletions

View File

@ -21,8 +21,8 @@ android {
applicationId "kr.co.enicom.acs"
minSdkVersion 26
targetSdkVersion 30
versionCode 1
versionName "2.0.3"
versionCode 204
versionName "2.0.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk.abiFilters 'armeabi-v7a'
}

View File

@ -23,6 +23,7 @@
<activity android:name=".system.BaseSettingActivity" />
<activity android:name=".system.DateTimeActivity" />
<activity android:name=".system.DeviceSettingActivity" />
<activity android:name=".system.DoorControlTimeActivity" />
<activity android:name=".system.NetworkSettingActivity" />
<activity android:name=".system.SystemSettingActivity" />
<activity android:name=".system.LoginMenuActivity" />

View File

@ -31,6 +31,8 @@ import kr.co.enicom.acs.system.SystemUtil;
import kr.co.rito.RitoUtil;
import kr.co.rito.miscmanager.GpioManager;
import static kr.co.enicom.acs.GlobalInfo.DOOR_CONTROL_STATUS_CLOSE;
import static kr.co.enicom.acs.GlobalInfo.DOOR_CONTROL_STATUS_OPEN_LOCK;
import static kr.co.enicom.acs.GlobalInfo.VERIFY_METHOD_FACE;
import static kr.co.enicom.acs.GlobalInfo.VERIFY_METHOD_FINGER_FACE;
import static kr.co.enicom.acs.GlobalInfo.VERIFY_METHOD_FINGER_PRINT;
@ -217,6 +219,7 @@ public class BaseService extends Service {
class PeriodicChecker extends Thread {
int mAliveCount = 0;
boolean mIsAlive = false;
int mPrevDoorControlOpenStatus = -1;
private long getUTC()
{
@ -301,6 +304,35 @@ public class BaseService extends Service {
}
}
if(MainActivity.INSTANCE != null) {
if (GlobalInfo.mUseDoorControlTime == 1) {
if (GlobalInfo.checkIsDoorControlOpenTime()) {
if (GlobalInfo.mDoorControlTimeStatus != 1) {
//mDoorManager.controlDoor(true, -1);
mDoorManager.queueControlOrder(DOOR_CONTROL_STATUS_OPEN_LOCK);
if (MainActivity.INSTANCE != null) {
MainActivity.INSTANCE.turnToBaseUI();
}
}
GlobalInfo.mDoorControlTimeStatus = 1;
} else {
if (GlobalInfo.mDoorControlTimeStatus != 0) {
//mDoorManager.controlDoor(false, 0);
mDoorManager.queueControlOrder(DOOR_CONTROL_STATUS_CLOSE);
if (MainActivity.INSTANCE != null) {
MainActivity.INSTANCE.turnToBaseUI();
}
}
GlobalInfo.mDoorControlTimeStatus = 0;
}
} else {
if (GlobalInfo.mDoorControlTimeStatus != -1) {
GlobalInfo.mDoorControlTimeStatus = -1;
mDoorManager.queueControlOrder(DOOR_CONTROL_STATUS_CLOSE);
}
}
}
if(isOnBlocking)
continue;

View File

@ -354,6 +354,28 @@ public class FingerManager implements DigentFPUsbDriver.DigentFPUsbCallBack {
}
}
{
idx = 0;
int[] scoreList = new int[humans];
for (UserInfo user : userList) {
if (user.mFingerTemplate2.length() > 0 && user.mFingerTemplate2.length() == ServerManager.FINGER_CODE_LENGTH) {
byte[] fingerFeature = hexToByteArray(user.mFingerTemplate2);
System.arraycopy(fingerFeature, 0, compareList, idx * IzzixOEMAPI32Values.MAX_FEATUREVECT_LEN, IzzixOEMAPI32Values.MAX_FEATUREVECT_LEN);
finger_users++;
}
scoreList[idx] = idx;
idx++;
}
byte[] feature = hexToByteArray(veinCode);
int[] findIndex = new int[1];
IzzixOEMAPI32ErrorCodes result = mIzzixOEMAPI32.matchFingerOneToN(feature, compareList, humans, IzzixOEMAPI32Values.LOWER_LEVEL, scoreList, findIndex, null);
if (result.getErrorCode() >= IzzixOEMAPI32ErrorCodes.FPAPIERR_NO.getErrorCode()) {
Log.w(TAG, "리턴 유저 : " + userList.get(findIndex[0]).mName);
return userList.get(findIndex[0]);
}
}
// for (UserInfo user : userList) {
// if (user.mFingerTemplate.length() > 0 && user.mFingerTemplate.length() == ServerManager.FINGER_CODE_LENGTH) {
@ -374,25 +396,6 @@ public class FingerManager implements DigentFPUsbDriver.DigentFPUsbCallBack {
// //idx++;
// }
// int maxScore = scoreList[0];
// int maxIdx = 0;
// for(int i = 1;i < humans;i++) {
// if(scoreList[i] > maxScore) {
// maxScore = scoreList[i];
// maxIdx = i;
// }
// }
//
// Log.w(TAG, "최고 점수 : " + maxScore);
// if(maxScore >= 90) {
// return userList.get(maxIdx);
// }
return null;
}

View File

@ -23,6 +23,7 @@ import java.io.OutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
@ -88,6 +89,10 @@ public class GlobalInfo {
public static final int DEFAULT_AUTO_MASK_WEAR = 0;
public static final int DEFAULT_MANAGER_LOGIN_CAPTURE_SEND = 0;
public static final int DEFAULT_USE_ATTENDANCE = 0;
public static final int DEFAULT_USE_DOOR_CONTROL_TIME = 0;
public static final int DEFAULT_DOOR_CONTROL_TIME_START = 9 * 60;
public static final int DEFAULT_DOOR_CONTROL_TIME_END = 18 * 60;
public static final int VERIFY_COMBINATION_WITH_RFID = 0;
public static final int VERIFY_COMBINATION_WITH_ID = 1;
@ -157,6 +162,9 @@ public class GlobalInfo {
public static int VEIN_MULTI_SCAN_COUNT_BASE = 7000;
public static int mVerifyActivateMethod = (VERIFY_METHOD_VEIN | VERIFY_METHOD_RFID);
// public static int mRfidDualMode = 0; // RFID 2개 등록 모드
// public static int mBioDualMode = 0; // 지문/지정맥 2개 등록 모드
public static String mDeviceId;
public static String mDeviceName;
public static String mSerialNumber = null;
@ -241,6 +249,17 @@ public class GlobalInfo {
public static boolean mIsReloadUserListFinished = false;
public static boolean mIsCaseOpened = false; // 본체가 열렸는 여부
public static int mUseAttendance = 1; // 근태 관리 사용 여부
public static final int ATTENDANCE_MODE_NONE = 0;
public static final int ATTENDANCE_MODE_IN = 1;
public static final int ATTENDANCE_MODE_OUT = 2;
public static int mAttendanceMode = ATTENDANCE_MODE_NONE; // 근태 관리. 1 : 출근, 2 : 퇴근
public static int mUseDoorControlTime = 1; // 개방시간 사용 여부
public static int mDoorControlTimeStatus = -1; // 개방시간 상태 보존. -1 : 미제어, 0 : 닫음, 1 : 열림
public static int mDoorControlTimeStart = 7 * 60 + 41; // 개방시간 시작 시간(Minute) Default = 09:00
public static int mDoorControlTimeEnd = 7 * 60 + 41; //18 * 60; // 개방시간 종료 시간(Minute) Default = 18:00
public static ArrayList<UserInfo> mUserList;
private static Object mLock = new Object();
@ -325,7 +344,7 @@ public class GlobalInfo {
}
private static void createLogTable(SQLiteDatabase database) {
String sql = "create table logging(idx integer PRIMARY KEY AUTOINCREMENT, log_time text, log_id text, log_name text, oprno text, johapnum text, verify_method integer, rfid_code text)";
String sql = "create table logging(idx integer PRIMARY KEY AUTOINCREMENT, log_time text, log_id text, log_name text, oprno text, johapnum text, verify_method integer, rfid_code text, attendance_code integer)";
try {
database.execSQL(sql);
} catch (Exception e) {
@ -335,6 +354,10 @@ public class GlobalInfo {
columnAppend(database, "logging", "rfid_code", "text");
}
if(!columnExists(database, "logging", "attendance_code")) {
columnAppend(database, "logging", "attendance_code", "integer");
}
sql = "create table adminlog(idx integer PRIMARY KEY AUTOINCREMENT, log_time text, log_id text, log_name text, verify_method integer, rfid_code text, verify_result integer, capture_file text)";
try {
database.execSQL(sql);
@ -343,7 +366,7 @@ public class GlobalInfo {
}
private static void createLogTempTable(SQLiteDatabase database) {
String sql = "create table logtemp(idx integer PRIMARY KEY AUTOINCREMENT, id text, name text, oprno text, johapnum text, date text, time text, method integer, resultcode integer, rfid_code text)";
String sql = "create table logtemp(idx integer PRIMARY KEY AUTOINCREMENT, id text, name text, oprno text, johapnum text, date text, time text, method integer, resultcode integer, rfid_code text, attendance_code integer)";
try {
database.execSQL(sql);
} catch (Exception e) {
@ -352,15 +375,20 @@ public class GlobalInfo {
if(!columnExists(database, "logtemp", "rfid_code")) {
columnAppend(database, "logtemp", "rfid_code", "text");
}
if(!columnExists(database, "logtemp", "attendance_code")) {
columnAppend(database, "logtemp", "attendance_code", "integer");
}
}
private static void createTable(SQLiteDatabase database) {
String sql = "create table userinfo(idx integer PRIMARY KEY AUTOINCREMENT, id text, name text, authority integer, password text, rfidcode text, veincode text, " +
"oprno text, johapnum text, user_reg_date text, rfid_reg_date text, vein_reg_date text, fingercode text, finger_reg_date text, facecode blob, face_reg_date text)";
"oprno text, johapnum text, user_reg_date text, rfid_reg_date text, vein_reg_date text, fingercode text, finger_reg_date text, facecode blob, face_reg_date text, " +
"rfidcode2 text, veincode2 text, fingercode2 text, permit_date text, permit_time text)";
try {
database.execSQL(sql);
sql = String.format("insert into userinfo (id, name, authority, password, rfidcode, veincode, oprno, johapnum, user_reg_date, rfid_reg_date, vein_reg_date, fingercode, finger_reg_date) values " +
"('%s', '관리자', %d, '%s', '', '', '', '', '', '', '', '', '')",
sql = String.format("insert into userinfo (id, name, authority, password, rfidcode, veincode, oprno, johapnum, user_reg_date, rfid_reg_date, vein_reg_date, fingercode, finger_reg_date, rfidcode2, veincode2, fingercode2, permit_date, permit_time) values " +
"('%s', '관리자', %d, '%s', '', '', '', '', '', '', '', '', '', '', '', '', '', '')",
ADMIN_ID, AUTHORITY_TYPE_ADMIN, ADMIN_PASSWD);
database.execSQL(sql);
} catch (Exception e) {
@ -383,6 +411,22 @@ public class GlobalInfo {
columnAppend(database, "userinfo", "face_reg_date", "text");
}
if(!columnExists(database, "userinfo", "rfidcode2")) {
columnAppend(database, "userinfo", "rfidcode2", "text");
}
if(!columnExists(database, "userinfo", "veincode2")) {
columnAppend(database, "userinfo", "veincode2", "text");
}
if(!columnExists(database, "userinfo", "fingercode2")) {
columnAppend(database, "userinfo", "fingercode2", "text");
}
if(!columnExists(database, "userinfo", "permit_date")) {
columnAppend(database, "userinfo", "permit_date", "text");
}
if(!columnExists(database, "userinfo", "permit_time")) {
columnAppend(database, "userinfo", "permit_time", "text");
}
sql = "create table serverinfo(idx integer, address text, port integer, address_slave text, port_slave integer," +
"update_addr text, update_port integer, update_protocol integer)";
@ -431,7 +475,8 @@ public class GlobalInfo {
"state_period integer, volume integer, use_access_control integer, door_control_mode integer, door_control_time integer," +
"socket_use_encrypt integer, dcu_device_type integer, use_dcu_watchdog integer, use_case_check integer, input_timeout integer, " +
"auto_reboot_use integer, auto_reboot_period integer, auto_reboot_hour integer, dcu_watchdog_timeout integer, verify_log_auto_resend integer, verify_activate_method integer," +
"auto_forgery integer, auto_mask_wear integer, manager_login_capture_send integer" +
"auto_forgery integer, auto_mask_wear integer, manager_login_capture_send integer, use_attendance integer, " +
"use_door_control_time integer, door_control_time_start integer, door_control_time_end integer" +
")";
try {
database.execSQL(sql);
@ -440,20 +485,23 @@ public class GlobalInfo {
"state_period, volume, use_access_control, door_control_mode, door_control_time, " +
"socket_use_encrypt, dcu_device_type, use_dcu_watchdog, use_case_check, input_timeout, " +
"auto_reboot_use, auto_reboot_period, auto_reboot_hour, dcu_watchdog_timeout, verify_log_auto_resend, verify_activate_method, " +
"auto_forgery, auto_mask_wear, manager_login_capture_send" +
"auto_forgery, auto_mask_wear, manager_login_capture_send, use_attendance, " +
"use_door_control_time, door_control_time_start, door_control_time_end" +
") " +
"values (0, '', '', 0, 0, %d, " +
"%d, %d, %d, %d, %d, %d, " +
"%d, %d, %d, %d, %d, " +
"%d, %d, %d, %d, %d, " +
"%d, %d, %d, %d, %d, %d, " +
"%d, %d, %d, %d, " +
"%d, %d, %d" +
")",
VERIFY_COMBINATION_OR, DEFAULT_VERIFY_PRINTUSERNAME, DEFAULT_VERIFY_POPUPTIME, DEFAULT_LOG_DELETESTATUS , 1, 1, 1,
DEFAULT_SERVER_CHECK_TIME_DURATION, DEFAULT_DEVICE_VOLUME, DOOR_USE_ACCESS_CONTROL, DEFAULT_DOOR_CONTROL_MODE, DEFAULT_DOOR_OPEN_TIME,
DEFAULT_SOCKET_USE_ENCRYPTION, DEFAULT_DCU_DEVICE_TYPE, DEFAULT_USE_DCU_WATCHDOG, DEFAULT_USE_CASE_CHECK, DEFAULT_INPUT_TIMEOUT_SECONDS,
DEFAULT_AUTO_REBOOT_USE, DEFAULT_AUTO_REBOOT_PERIOD, DEFAULT_AUTO_REBOOT_HOUR, DEFAULT_DCU_WATCHDOG_TIME, DEFAULT_VERIFY_LOG_AUTO_RESEND, DEFAULT_VERIFY_ACTIVATE_METHOD,
DEFAULT_AUTO_FORGERY, DEFAULT_AUTO_MASK_WEAR, DEFAULT_MANAGER_LOGIN_CAPTURE_SEND
DEFAULT_AUTO_FORGERY, DEFAULT_AUTO_MASK_WEAR, DEFAULT_MANAGER_LOGIN_CAPTURE_SEND, DEFAULT_USE_ATTENDANCE,
DEFAULT_USE_DOOR_CONTROL_TIME, DEFAULT_DOOR_CONTROL_TIME_START, DEFAULT_DOOR_CONTROL_TIME_END
);
database.execSQL(sql);
@ -514,6 +562,40 @@ public class GlobalInfo {
}
}
if(!columnExists(database, "settings", "use_attendance")) {
columnAppend(database, "settings", "use_attendance", "integer");
sql = String.format("update settings set use_attendance = %d where idx = 0", DEFAULT_USE_ATTENDANCE);
try {
database.execSQL(sql);
} catch (Exception e) {
}
}
if(!columnExists(database, "settings", "use_door_control_time")) {
columnAppend(database, "settings", "use_door_control_time", "integer");
sql = String.format("update settings set use_door_control_time = %d where idx = 0", DEFAULT_USE_DOOR_CONTROL_TIME);
try {
database.execSQL(sql);
} catch (Exception e) {
}
}
if(!columnExists(database, "settings", "door_control_time_start")) {
columnAppend(database, "settings", "door_control_time_start", "integer");
sql = String.format("update settings set door_control_time_start = %d where idx = 0", DEFAULT_DOOR_CONTROL_TIME_START);
try {
database.execSQL(sql);
} catch (Exception e) {
}
}
if(!columnExists(database, "settings", "door_control_time_end")) {
columnAppend(database, "settings", "door_control_time_end", "integer");
sql = String.format("update settings set door_control_time_end = %d where idx = 0", DEFAULT_DOOR_CONTROL_TIME_END);
try {
database.execSQL(sql);
} catch (Exception e) {
}
}
/*sql = "create table logging(idx integer PRIMARY KEY AUTOINCREMENT, log_time text, log_id text, log_name text, verify_method integer)";
try {
database.execSQL(sql);
@ -620,8 +702,8 @@ public class GlobalInfo {
// info.mID, info.mName, info.mAuthority, info.mPassword, info.mRFIDCode, info.mVeinTemplate, info.mOprno, info.mJohapnum, info.mUserRegistDateTime, info.mRfidRegistDateTime, info.mVeinRegistDateTime, info.mFingerTemplate, info.mFingerRegistDateTime);
// _database.execSQL(sql);
String sql = String.format("insert into userinfo (id, name, authority, password, rfidcode, veincode, oprno, johapnum, user_reg_date, rfid_reg_date, vein_reg_date, fingercode, finger_reg_date, facecode, face_reg_date) " +
"values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
String sql = String.format("insert into userinfo (id, name, authority, password, rfidcode, veincode, 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) " +
"values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
SQLiteStatement insertStmt;
insertStmt = _database.compileStatement(sql);
@ -642,6 +724,11 @@ public class GlobalInfo {
insertStmt.bindString(idx++, info.mFingerRegistDateTime);
insertStmt.bindBlob(idx++, info.mFaceTemplate);
insertStmt.bindString(idx++, info.mFaceRegistDateTime);
insertStmt.bindString(idx++, info.mRFIDCode2);
insertStmt.bindString(idx++, info.mVeinTemplate2);
insertStmt.bindString(idx++, info.mFingerTemplate2);
insertStmt.bindString(idx++, info.mPermitDate);
insertStmt.bindString(idx++, info.mPermitTime);
insertStmt.execute();
mUserList.add(info);
@ -682,7 +769,7 @@ public class GlobalInfo {
// info.mID, info.mName, info.mAuthority, info.mPassword, info.mRFIDCode, info.mVeinTemplate, info.mFingerTemplate, info.mOprno, info.mJohapnum, info.mUserRegistDateTime, info.mRfidRegistDateTime, info.mVeinRegistDateTime, info.mFingerRegistDateTime, info.mIndex);
// _database.execSQL(sql);
String sql = String.format("update userinfo set id = ?, name = ?, authority = ?, password = ?, rfidcode = ?, veincode = ?, fingercode = ?, facecode = ?, oprno = ?, johapnum = ?, user_reg_date = ?, rfid_reg_date = ?, vein_reg_date = ?, finger_reg_date = ?, face_reg_date = ? where idx = ?");
String sql = String.format("update userinfo set id = ?, name = ?, authority = ?, password = ?, rfidcode = ?, veincode = ?, fingercode = ?, facecode = ?, oprno = ?, johapnum = ?, user_reg_date = ?, rfid_reg_date = ?, vein_reg_date = ?, finger_reg_date = ?, face_reg_date = ?, rfidcode2 = ?, veincode2 = ?, fingercode2 = ?, permit_date = ?, permit_time = ? where idx = ?");
SQLiteStatement insertStmt;
insertStmt = _database.compileStatement(sql);
insertStmt.clearBindings();
@ -702,6 +789,11 @@ public class GlobalInfo {
insertStmt.bindString(idx++, info.mVeinRegistDateTime);
insertStmt.bindString(idx++, info.mFingerRegistDateTime);
insertStmt.bindString(idx++, info.mFaceRegistDateTime);
insertStmt.bindString(idx++, info.mRFIDCode2);
insertStmt.bindString(idx++, info.mVeinTemplate2);
insertStmt.bindString(idx++, info.mFingerTemplate2);
insertStmt.bindString(idx++, info.mPermitDate);
insertStmt.bindString(idx++, info.mPermitTime);
insertStmt.bindLong(idx++, info.mIndex);
insertStmt.execute();
@ -789,7 +881,7 @@ public class GlobalInfo {
if(database == null)
return null;
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 " +
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 where id = '" + id + "'";
try {
//Log.w("RITO", "ScanQuery : " + sql );
@ -818,6 +910,13 @@ public class GlobalInfo {
_info.mFaceTemplate = cursor.getBlob(14);
_info.mFaceRegistDateTime = cursor.getString(15);
_info.mRFIDCode2 = cursor.getString(16);
_info.mVeinTemplate2 = cursor.getString(17);
_info.mFingerTemplate2 = cursor.getString(18);
_info.mPermitDate = cursor.getString(19);
_info.mPermitTime = cursor.getString(20);
_info.makeSafe();
database.close();
return _info;
@ -835,6 +934,14 @@ public class GlobalInfo {
return (mVerifyActivateMethod & method) > 0;
}
// public static boolean isRfidDualMode() {
// return (mRfidDualMode > 0);
// }
//
// public static boolean isBioDualMode() {
// return (mBioDualMode > 0);
// }
public static boolean isVerifyMethod(int method) {
return (mVerifyMethod & method) > 0;
}
@ -846,7 +953,7 @@ public class GlobalInfo {
return;
mUserList.clear();
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 from userinfo";
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){
@ -875,6 +982,14 @@ public class GlobalInfo {
_info.mFaceTemplate = cursor.getBlob(14);
_info.mFaceRegistDateTime = cursor.getString(15);
_info.mRFIDCode2 = cursor.getString(16);
_info.mVeinTemplate2 = cursor.getString(17);
_info.mFingerTemplate2 = cursor.getString(18);
_info.mPermitDate = cursor.getString(19);
_info.mPermitTime = cursor.getString(20);
_info.makeSafe();
//Log.w(TAG, "User #"+i+" : " + _info.mName);
mUserList.add(_info);
@ -959,7 +1074,8 @@ public class GlobalInfo {
sql = "select device_id, device_name, verify_mode, verify_method, verify_combination, verify_printusername, verify_popuptime, log_delete_status, log_delete_term, log_delete_checkperiod, log_delete_checkperiod_cnt, " +
"state_period, volume, use_access_control, door_control_mode, door_control_time, socket_use_encrypt, dcu_device_type, use_dcu_watchdog, use_case_check, input_timeout, auto_reboot_use, auto_reboot_period, auto_reboot_hour, " +
"dcu_watchdog_timeout, verify_log_auto_resend, verify_activate_method, auto_forgery, auto_mask_wear, manager_login_capture_send " +
"dcu_watchdog_timeout, verify_log_auto_resend, verify_activate_method, auto_forgery, auto_mask_wear, manager_login_capture_send, use_attendance, " +
"use_door_control_time, door_control_time_start, door_control_time_end " +
" from settings where idx = 0";
try {
Cursor cursor = database.rawQuery(sql, null);
@ -999,6 +1115,11 @@ public class GlobalInfo {
GlobalInfo.mAutoForgery = cursor.getInt(27);
GlobalInfo.mAutoMaskWear = cursor.getInt(28);
GlobalInfo.mManagerLoginCaptureSend = cursor.getInt(29);
GlobalInfo.mUseAttendance = cursor.getInt(30);
GlobalInfo.mUseDoorControlTime = cursor.getInt(31);
GlobalInfo.mDoorControlTimeStart = cursor.getInt(32);
GlobalInfo.mDoorControlTimeEnd = cursor.getInt(33);
Log.w("RITO", "mAutoForgery : " + GlobalInfo.mAutoForgery);
Log.w("RITO", "mAutoMaskWear : " + GlobalInfo.mAutoMaskWear);
@ -1171,7 +1292,7 @@ public class GlobalInfo {
{
try {
SQLiteDatabase _database;
if (target.equals("log")) {
if (target.equals("log") || target.equals("attendance")) {
_database = getLogDatabase();
} else {
_database = getDatabase();
@ -1268,6 +1389,30 @@ public class GlobalInfo {
sql += " and";
sql += String.format(" datetime(log_time, 'localtime') <= datetime('%s:59', 'localtime')", to);
}
sql += "and (attendance_code < 1 or attendance_code > 2 or attendance_code IS NULL)";
} else {
sql += " where (attendance_code < 1 or attendance_code > 2 or attendance_code IS NULL)";
}
try {
_database.execSQL(sql);
} catch (Exception e) {
}
} else if (target.equals("attendance")) {
sql = String.format("delete from logging");
if (from.length() > 0 || to.length() > 0) {
sql += " where";
if (from.length() > 0) {
sql += String.format(" datetime(log_time, 'localtime') >= datetime('%s:00', 'localtime')", from);
}
if (to.length() > 0) {
if (from.length() > 0)
sql += " and";
sql += String.format(" datetime(log_time, 'localtime') <= datetime('%s:59', 'localtime')", to);
}
sql += "and (attendance_code >= 1 and attendance_code <= 2)";
} else {
sql += " where (attendance_code >= 1 and attendance_code <= 2)";
}
try {
@ -1455,7 +1600,7 @@ public class GlobalInfo {
return null;
ArrayList<LogInfo> logList = new ArrayList<LogInfo>();
String sql = "select log_time, log_id, log_name, oprno, johapnum, verify_method, rfid_code from logging";
String sql = "select log_time, log_id, log_name, oprno, johapnum, verify_method, rfid_code, attendance_code from logging";
if(from != null || to != null) {
sql += " where";
if(from != null) {
@ -1488,6 +1633,7 @@ public class GlobalInfo {
if(_info.mRfidCode == null) {
_info.mRfidCode = "";
}
_info.mAttendanceCode = cursor.getInt(7);
logList.add(_info);
}
}
@ -1499,6 +1645,67 @@ public class GlobalInfo {
return logList;
}
public static ArrayList<LogInfo> queryLogDataAttendance(String from, String to, boolean isAttendance) {
SQLiteDatabase _database= getLogDatabase();
if(_database == null)
return null;
ArrayList<LogInfo> logList = new ArrayList<LogInfo>();
String sql = "select log_time, log_id, log_name, oprno, johapnum, verify_method, rfid_code, attendance_code from logging";
if(from != null || to != null) {
sql += " where";
if(from != null) {
sql += String.format(" datetime(log_time, 'localtime') >= datetime('%s 00:00:01', 'localtime')", from);
}
if(to != null) {
if(from != null)
sql += " and";
sql += String.format(" datetime(log_time, 'localtime') <= datetime('%s 23:59:59', 'localtime')", to);
}
if(isAttendance) {
sql += String.format(" and attendance_code >= 1 and attendance_code <= 2");
} else {
sql += String.format(" and (attendance_code < 1 or attendance_code > 2 or attendance_code IS NULL)");
}
}
try {
Cursor cursor = _database.rawQuery(sql, null);
if(cursor != null){
int count = cursor.getCount();
Log.d(TAG, "Log Count : " + count);
for(int i = 0; i< count ; i++){
cursor.moveToNext();
LogInfo _info = new LogInfo();
String _datetime = cursor.getString(0);
_info.mDate = _datetime.substring(0, 10);
_info.mTime = _datetime.substring(11);
_info.mId = cursor.getString(1);
_info.mName = cursor.getString(2);
_info.mOprno = cursor.getString(3);
_info.mJohapnum = cursor.getString(4);
_info.mMethod = cursor.getInt(5);
_info.mRfidCode = cursor.getString(6);
if(_info.mRfidCode == null) {
_info.mRfidCode = "";
}
_info.mAttendanceCode = cursor.getInt(7);
logList.add(_info);
}
}
} catch (Exception e) {
e.printStackTrace();
}
_database.close();
return logList;
}
public static ArrayList<UserInfo> queryUserDataDateTime(String from, String to) {
SQLiteDatabase _database= getDatabase();
if(_database == null)
@ -1508,7 +1715,7 @@ public class GlobalInfo {
to = SystemUtil.convertDateTime14ToDateTime19(to);
ArrayList<UserInfo> userList = new ArrayList<UserInfo>();
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 from userinfo";
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";
if(from != null || to != null) {
sql += " where";
if(from != null) {
@ -1550,6 +1757,14 @@ public class GlobalInfo {
_info.mFaceTemplate = cursor.getBlob(14);
_info.mFaceRegistDateTime = cursor.getString(15);
_info.mRFIDCode2 = cursor.getString(16);
_info.mVeinTemplate2 = cursor.getString(17);
_info.mFingerTemplate2 = cursor.getString(18);
_info.mPermitDate = cursor.getString(19);
_info.mPermitTime = cursor.getString(20);
_info.makeSafe();
userList.add(_info);
}
@ -1568,7 +1783,7 @@ public class GlobalInfo {
return null;
ArrayList<UserInfo> userList = new ArrayList<UserInfo>();
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 from userinfo";
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";
if(from != null || to != null) {
sql += " where";
if(from != null) {
@ -1609,6 +1824,14 @@ public class GlobalInfo {
_info.mFaceTemplate = cursor.getBlob(14);
_info.mFaceRegistDateTime = cursor.getString(15);
_info.mRFIDCode2 = cursor.getString(16);
_info.mVeinTemplate2 = cursor.getString(17);
_info.mFingerTemplate2 = cursor.getString(18);
_info.mPermitDate = cursor.getString(19);
_info.mPermitTime = cursor.getString(20);
_info.makeSafe();
userList.add(_info);
}
@ -1728,7 +1951,8 @@ public class GlobalInfo {
"use_access_control = %d, door_control_mode = %d, door_control_time = %d, " +
"socket_use_encrypt = %d, dcu_device_type = %d, use_dcu_watchdog = %d, use_case_check = %d, input_timeout = %d, " +
"auto_reboot_use = %d, auto_reboot_period = %d, auto_reboot_hour = %d, dcu_watchdog_timeout = %d, verify_log_auto_resend = %d, verify_activate_method = %d, " +
"auto_forgery = %d, auto_mask_wear = %d, manager_login_capture_send = %d " +
"auto_forgery = %d, auto_mask_wear = %d, manager_login_capture_send = %d, use_attendance = %d, " +
"use_door_control_time = %d, door_control_time_start = %d, door_control_time_end = %d " +
" where idx = 0",
GlobalInfo.mDeviceId, GlobalInfo.mDeviceName, GlobalInfo.mVerifyMode, GlobalInfo.mVerifyMethod, GlobalInfo.mVerifyCombination,
GlobalInfo.mVerifyPrintUserName, GlobalInfo.mVerifyPopupTime, GlobalInfo.mLogDeleteStatus, GlobalInfo.mLogDeleteTerm, GlobalInfo.mLogDeleteCheckPeriod, GlobalInfo.mLogDeleteCheckPeriodCnt,
@ -1736,7 +1960,8 @@ public class GlobalInfo {
GlobalInfo.mUseAccessControl, GlobalInfo.mDoorControlMode, GlobalInfo.mDoorControlTime,
GlobalInfo.mUseSocketEncrypt, GlobalInfo.mDcuDeviceType, GlobalInfo.mUseDCUWatchdog, GlobalInfo.mUseCaseCheck, GlobalInfo.mInputTimeout,
GlobalInfo.mAutoRebootUse, GlobalInfo.mAutoRebootPeriod, GlobalInfo.mAutoRebootHour, GlobalInfo.mDCUWatchdogTime, GlobalInfo.mVerifyLogAutoResend, GlobalInfo.mVerifyActivateMethod,
GlobalInfo.mAutoForgery, GlobalInfo.mAutoMaskWear, GlobalInfo.mManagerLoginCaptureSend
GlobalInfo.mAutoForgery, GlobalInfo.mAutoMaskWear, GlobalInfo.mManagerLoginCaptureSend, GlobalInfo.mUseAttendance,
GlobalInfo.mUseDoorControlTime, GlobalInfo.mDoorControlTimeStart, GlobalInfo.mDoorControlTimeEnd
);
try {
@ -1885,8 +2110,8 @@ public class GlobalInfo {
return;
try {
String sql = String.format("insert into logging (log_time, log_id, log_name, oprno, johapnum, verify_method, rfid_code) values (datetime('now', 'localtime'), '%s', '%s', '%s', '%s', %d, '%s')",
logInfo.mId, logInfo.mName, logInfo.mOprno, logInfo.mJohapnum, logInfo.mMethod, logInfo.mRfidCode);
String sql = String.format("insert into logging (log_time, log_id, log_name, oprno, johapnum, verify_method, rfid_code, attendance_code) values (datetime('now', 'localtime'), '%s', '%s', '%s', '%s', %d, '%s', %d)",
logInfo.mId, logInfo.mName, logInfo.mOprno, logInfo.mJohapnum, logInfo.mMethod, logInfo.mRfidCode, logInfo.mAttendanceCode);
_database.execSQL(sql);
} catch (Exception e) {
}
@ -2045,4 +2270,49 @@ public class GlobalInfo {
}
}
}
public static boolean checkIsDoorControlOpenTime() {
if(mUseDoorControlTime == 0)
return false;
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24시간 기준
int minute = calendar.get(Calendar.MINUTE);
int currentMinutes = hour * 60 + minute;
if(currentMinutes >= mDoorControlTimeStart && currentMinutes <= mDoorControlTimeEnd)
return true;
return false;
}
public static boolean checkIsDateInRange(String range, String date) {
if(range == null || date == null || date.length() == 0)
return false;
if(!range.contains("~"))
return false;
String[] split = range.split("~");
if(date.compareTo(split[0].trim()) >= 0 && date.compareTo(split[1].trim()) <= 0)
return true;
return false;
}
public static boolean checkIsTimeInRange(String range, String time) {
if(range == null || time == null || time.length() == 0)
return false;
if(!range.contains("~"))
return false;
String[] split = range.split("~");
if(time.compareTo(split[0].trim()) >= 0 && time.compareTo(split[1].trim()) <= 0)
return true;
return false;
}
}

View File

@ -9,6 +9,8 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.drawable.Drawable;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.media.AudioAttributes;
@ -41,6 +43,7 @@ import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
@ -114,6 +117,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
private Handler mDelayHandler = new Handler();
private Button mSettingButton = null, mTitleBackButton = null;
private Button mWorkinButton = null, mWorkoutButton = null, mAttendanceButton = null;
private CameraSurfaceView mCameraView = null;
@ -254,6 +258,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
LogInfo _logInfo = new LogInfo();
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
_logInfo.mMethod = GlobalInfo.VERIFY_METHOD_FINGER_PRINT;
_logInfo.mAttendanceCode = GlobalInfo.mAttendanceMode;
Log.i("Finger", "Finger Code : " + value);
_logInfo.mDate = GlobalInfo.getOffsetDateFromToday(0);
@ -267,6 +272,20 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
if (GlobalInfo.isVerifyMethodAllAnd() && !info.mID.equals(mLastVerifyUser.mID)) {
info = null;
}
if(info.mPermitDate.length() > 0) {
if(!GlobalInfo.checkIsDateInRange(info.mPermitDate, _logInfo.mDate)) {
Log.i("Finger", String.format("사용자 출입 기간 실패 : [%s] %s", info.mID, info.mName));
info = null;
}
}
if(info != null && info.mPermitTime.length() > 0) {
if(!GlobalInfo.checkIsTimeInRange(info.mPermitTime, _logInfo.mTime)) {
Log.i("Finger", String.format("사용자 출입 시간 실패 : [%s] %s", info.mID, info.mName));
info = null;
}
}
}
if (info != null) {
@ -343,6 +362,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
if (value.length() == 0) { // Code 획득 실패.
LogInfo _logInfo = new LogInfo();
_logInfo.mMethod = GlobalInfo.VERIFY_METHOD_FINGER_PRINT;
_logInfo.mAttendanceCode = GlobalInfo.mAttendanceMode;
_logInfo.mDate = GlobalInfo.getOffsetDateFromToday(0);
_logInfo.mTime = GlobalInfo.getOffsetTimeFromToday(0);
processVerifyResult(_logInfo); // 지정맥 인증 실패 로그 전송
@ -375,6 +395,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
LogInfo _logInfo = new LogInfo();
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
_logInfo.mMethod = VERIFY_METHOD_FACE;
_logInfo.mAttendanceCode = GlobalInfo.mAttendanceMode;
Log.i("Face", "Face Code : " + faceCode);
_logInfo.mDate = GlobalInfo.getOffsetDateFromToday(0);
@ -676,6 +697,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
if(status.equals("success") && mVerifyMethod != GlobalInfo.VERIFY_METHOD_VEIN) {
LogInfo _logInfo = new LogInfo();
_logInfo.mMethod = GlobalInfo.VERIFY_METHOD_RFID;
_logInfo.mAttendanceCode = GlobalInfo.mAttendanceMode;
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
Log.i("RFID", "Card Code : " + value);
_logInfo.mRfidCode = value; // Added by ritoseo - 2021-04-16
@ -691,6 +713,25 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
_logInfo.mId = info.mID;
_logInfo.mName = info.mName;
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_SUCCESS;
if(info.mPermitDate.length() > 0) {
if(!GlobalInfo.checkIsDateInRange(info.mPermitDate, _logInfo.mDate)) {
Log.i("RFID", String.format("사용자 출입 기간 실패 : [%s] %s", info.mID, info.mName));
info = null;
_logInfo.mId = "";
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
}
}
if(info != null && info.mPermitTime.length() > 0) {
if(!GlobalInfo.checkIsTimeInRange(info.mPermitTime, _logInfo.mTime)) {
Log.i("RFID", String.format("사용자 출입 시간 실패 : [%s] %s", info.mID, info.mName));
info = null;
_logInfo.mId = "";
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
}
}
mLastVerifyUser = info;
}
}
@ -710,6 +751,25 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
_logInfo.mId = info.mID;
_logInfo.mName = info.mName;
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_SUCCESS;
if(info.mPermitDate.length() > 0) {
if(!GlobalInfo.checkIsDateInRange(info.mPermitDate, _logInfo.mDate)) {
Log.i("RFID", String.format("사용자 출입 기간 실패 : [%s] %s", info.mID, info.mName));
info = null;
_logInfo.mId = "";
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
}
}
if(info != null && info.mPermitTime.length() > 0) {
if(!GlobalInfo.checkIsTimeInRange(info.mPermitTime, _logInfo.mTime)) {
Log.i("RFID", String.format("사용자 출입 시간 실패 : [%s] %s", info.mID, info.mName));
info = null;
_logInfo.mId = "";
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
}
}
mLastVerifyUser = info;
}
}
@ -740,6 +800,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
LogInfo _logInfo = new LogInfo();
_logInfo.mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
_logInfo.mMethod = GlobalInfo.VERIFY_METHOD_VEIN;
_logInfo.mAttendanceCode = GlobalInfo.mAttendanceMode;
Log.i("VEIN", "Vein Code : " + value);
// Log.i("VEIN", "Vein Code Length: " + value.length());
// try {
@ -864,6 +925,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
mConsecutiveVeinFailCount = 0;
LogInfo _logInfo = new LogInfo();
_logInfo.mMethod = GlobalInfo.VERIFY_METHOD_VEIN;
_logInfo.mAttendanceCode = GlobalInfo.mAttendanceMode;
_logInfo.mDate = GlobalInfo.getOffsetDateFromToday(0);
_logInfo.mTime = GlobalInfo.getOffsetTimeFromToday(0);
processVerifyResult(_logInfo); // 지정맥 인증 실패 로그 전송
@ -973,9 +1035,8 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//setTheme(R.style.AppBlackTheme);
INSTANCE = this;
SystemUtil.shellCommand("niasysc SHELL-ORDER=killall kr.co.rito.factory");
SystemUtil.shellCommand("niasysc SHELL-ORDER=chmod 666 /dev/ttyACM0");
// new Thread() {
// @Override
@ -1284,8 +1345,61 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
return true;
}
});
if(mWorkinButton == null)
mWorkinButton = (Button) findViewById(R.id.workinbutton) ;
mWorkinButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view)
{
GlobalInfo.mAttendanceMode = GlobalInfo.ATTENDANCE_MODE_IN;
mWorkinButton.setVisibility(View.INVISIBLE);
mWorkoutButton.setVisibility(View.INVISIBLE);
mAttendanceButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.workin_icon_76, 0, 0);
mAttendanceButton.setText(R.string.main_attendance_mode_in);
mAttendanceButton.setVisibility(View.VISIBLE);
}
});
if(mWorkoutButton == null)
mWorkoutButton = (Button) findViewById(R.id.workoutbutton) ;
mWorkoutButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view)
{
GlobalInfo.mAttendanceMode = GlobalInfo.ATTENDANCE_MODE_OUT;
mWorkinButton.setVisibility(View.INVISIBLE);
mWorkoutButton.setVisibility(View.INVISIBLE);
mAttendanceButton.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.workout_icon_76, 0, 0);
mAttendanceButton.setText(R.string.main_attendance_mode_out);
mAttendanceButton.setVisibility(View.VISIBLE);
}
});
if(mAttendanceButton == null)
mAttendanceButton = (Button) findViewById(R.id.attendancebutton) ;
mAttendanceButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view)
{
GlobalInfo.mAttendanceMode = GlobalInfo.ATTENDANCE_MODE_NONE;
mWorkinButton.setVisibility(View.VISIBLE);
mWorkoutButton.setVisibility(View.VISIBLE);
mAttendanceButton.setVisibility(View.INVISIBLE);
}
});
startService(new Intent(this, BaseService.class));
GlobalInfo.mDoorControlTimeStatus = -1;
INSTANCE = this;
//BaseService.setLastActivity(null);
/*
@ -1563,6 +1677,12 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
BaseService.setLastActivity(null);
if(GlobalInfo.mUseAttendance == 1) {
mWorkinButton.setVisibility(View.VISIBLE);
mWorkoutButton.setVisibility(View.VISIBLE);
GlobalInfo.mAttendanceMode = GlobalInfo.ATTENDANCE_MODE_NONE;
}
/*if(mVeinManager == null) {
Log.i(TAG, "Create NEW VeinManager");
mVeinManager = new VeinManager(this);
@ -1684,38 +1804,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
}
//Log.e("ryu", "on start face init!");
if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_VEIN)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_VEIN);
else if(mVerifyMethod == VERIFY_METHOD_RFID)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_CARD);
else if(mVerifyMethod == VERIFY_METHOD_FINGER_PRINT)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FINGER_PRINT);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FACE)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FACE);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_VEIN_FACE)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_VEIN_FACE);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FINGER_FACE)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FINGER_FACE);
else if(GlobalInfo.isVerifyMethod(VERIFY_METHOD_RFID)){
if(mVerifyMethod == VERIFY_METHOD_VEIN_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_VEIN);
else if(mVerifyMethod == VERIFY_METHOD_FINGER_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FINGER_PRINT);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FACE_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FACE);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_VEIN_FACE_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR) {
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_VEIN_FACE);
}
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FINGER_FACE_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FINGER_FACE);
else {
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_CARD);
}
}
else
mMainUiHandler.sendEmptyMessage(MAIN_UI_INIT);
turnToBaseUI();
}
}.start();
@ -1939,6 +2028,8 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
BaseService.mServerManager.reportLoggingResult(logResult);
}
GlobalInfo.mAttendanceMode = GlobalInfo.ATTENDANCE_MODE_NONE;
if(logResult.mId.length() > 0) {
//Toast.makeText(this,"인증 성공 [" + logResult.mName + "]", Toast.LENGTH_SHORT).show();
@ -2015,21 +2106,80 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
}
}.start();
Message message = new Message();
mMainUiHandler.sendEmptyMessage(RESULT_FAIL);
//processResultPopup(POPUP_TYPE_DENIED, "인증 실패");
new LedScheduler(GlobalInfo.GPIO_PIN_LED_RED).start();
}
}
public void turnToBaseUI() {
if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_VEIN)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_VEIN);
else if(mVerifyMethod == VERIFY_METHOD_RFID)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_CARD);
else if(mVerifyMethod == VERIFY_METHOD_FINGER_PRINT)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FINGER_PRINT);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FACE)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FACE);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_VEIN_FACE)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_VEIN_FACE);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FINGER_FACE)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FINGER_FACE);
else if(GlobalInfo.isVerifyMethod(VERIFY_METHOD_RFID)){
if(mVerifyMethod == VERIFY_METHOD_VEIN_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_VEIN);
else if(mVerifyMethod == VERIFY_METHOD_FINGER_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FINGER_PRINT);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FACE_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FACE);
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_VEIN_FACE_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR) {
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_VEIN_FACE);
}
else if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FINGER_FACE_COMB_RFID && mVerifyCombination == VERIFY_COMBINATION_OR)
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_FINGER_FACE);
else {
mMainUiHandler.sendEmptyMessage(MAIN_SELECT_CARD);
}
}
else
mMainUiHandler.sendEmptyMessage(MAIN_UI_INIT);
}
class MainUiHandler extends Handler{
@Override
public void handleMessage(Message msg) {
int imageWidth = 585;
int imageHeight = 402;
int imageWidthTriple = 380;
int imageHeightTriple = 261;
int imageWidthWithFace = 490;
int imageHeightWithFace = 337;
int image1PosX = 39;
int image2PosX = 665;
int imageFace1PosX = 135;
int imageFace2PosX = 656;
int imageTriple2PosX = 450;
int imageTriple3PosX = 860;
if(GlobalInfo.mUseAttendance == 1) {
imageWidth *= 0.738;
imageWidthTriple *= 0.738;
imageWidthWithFace *= 0.738;
image1PosX = 39;
image2PosX = 500;
imageFace1PosX = 70;
imageFace2PosX = 500;
imageTriple2PosX = 350;
imageTriple3PosX = 660;
mWorkinButton.setVisibility(View.VISIBLE);
mWorkoutButton.setVisibility(View.VISIBLE);
}
super.handleMessage(msg);
mMainUiStatus = msg.what;
mSettingButton.setVisibility(View.VISIBLE);
@ -2041,24 +2191,50 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
mCameraView.setDropFrame(true);
BaseService.mFaceManager.mRBitmapFrameQueue.clear();
if(GlobalInfo.checkIsDoorControlOpenTime()) { // 개방시간 사용 시간여부
LayoutSetting(mVerifyCheck, CHECK, 563, 126, 155, 155, R.drawable.popup_fail, View.INVISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, 348, 40, 0, 0, R.drawable.main_img1, View.INVISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 348, 40, 0, 0, R.drawable.main_img2, View.INVISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 348, 40, 0, 0, R.drawable.main_fingerprint, View.INVISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 348, 40, 0, 0, R.drawable.main_fingerprint, View.INVISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 534, 385, 340, 65, R.string.main_verify_fail, View.INVISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 582, 498, 660, 65, R.string.main_card_text2, View.INVISIBLE);
if(GlobalInfo.mUseAttendance == 1) {
mWorkinButton.setVisibility(View.INVISIBLE);
mWorkoutButton.setVisibility(View.INVISIBLE);
mAttendanceButton.setVisibility(View.INVISIBLE);
}
TextView tv = findViewById(R.id.doorcontroltimetext);
tv.setText(String.format("%d:%02d~%d:%02d", GlobalInfo.mDoorControlTimeStart / 60, GlobalInfo.mDoorControlTimeStart % 60
, GlobalInfo.mDoorControlTimeEnd / 60, GlobalInfo.mDoorControlTimeEnd % 60));
findViewById(R.id.doorcontrolframe).setVisibility(View.VISIBLE);
return;
} else {
findViewById(R.id.doorcontrolframe).setVisibility(View.INVISIBLE);
}
//Log.e(TAG,"[RYU] MainUiHandler msg.what: " + msg.what);
switch (msg.what) {
case MAIN_UI_INIT: //or
LayoutSetting(mVerifyCheck, CHECK, 0, 0, 0, 0, 0, View.INVISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, 39, 40, 585, 402, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, image1PosX, 40, imageWidth, imageHeight, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 0,0,0,0, 0, View.INVISIBLE);
if(GlobalInfo.isActivatedMethod(VERIFY_METHOD_VEIN))
{
LayoutSetting(mLoginImage[VEIN], VEIN, 665, 40, 585, 402, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 665, 40, 585, 402, R.drawable.main_fingerprint, View.INVISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, image2PosX, 40, imageWidth, imageHeight, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, image2PosX, 40, imageWidth, imageHeight, R.drawable.main_fingerprint, View.INVISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 50, 498, 337, 65, R.string.main_text1, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 387, 498, 660, 65, R.string.main_text2, View.VISIBLE);
}else
{
LayoutSetting(mLoginImage[VEIN], VEIN, 665, 40, 585, 402, R.drawable.main_img2, View.INVISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 665, 40, 585, 402, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, image2PosX, 40, imageWidth, imageHeight, R.drawable.main_img2, View.INVISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, image2PosX, 40, imageWidth, imageHeight, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 50, 498, 337+660, 65, R.string.main_card_finger_text1, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 387, 498, 0, 0, 0, View.INVISIBLE);
}
@ -2066,9 +2242,9 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
case MAIN_SELECT_CARD:
LayoutSetting(mVerifyCheck, CHECK, 0,0,0,0,0, View.INVISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, 348, 40, 585, 402, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 665, 40, 0, 0, R.drawable.main_img2, View.INVISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 665, 40, 0, 0, R.drawable.main_fingerprint, View.INVISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, 348, 40, imageWidth, imageHeight, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, image2PosX, 40, 0, 0, R.drawable.main_img2, View.INVISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, image2PosX, 40, 0, 0, R.drawable.main_fingerprint, View.INVISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 0,0,0,0, 0, View.INVISIBLE);
if (mVerifyMethod == VERIFY_METHOD_VEIN_COMB_RFID || mVerifyMethod == GlobalInfo.VERIFY_METHOD_FINGER_COMB_RFID) {
@ -2087,7 +2263,7 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
case MAIN_SELECT_VEIN:
LayoutSetting(mVerifyCheck, CHECK, 0,0,0,0,0, View.INVISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, 348, 40, 0, 0, R.drawable.main_img1, View.INVISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 348, 40, 585, 402, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 348, 40, imageWidth, imageHeight, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 348, 40, 0, 0, R.drawable.main_fingerprint, View.INVISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 0,0,0,0, 0, View.INVISIBLE);
if(mVerifyMethod == VERIFY_METHOD_VEIN_COMB_RFID) {
@ -2097,8 +2273,8 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
mTitleBackButton.setVisibility(View.VISIBLE);
waitTimeHandler(MAIN_SELECT_VEIN, GlobalInfo.mVerifyPopupTime * 1000);
}else{
LayoutSetting(mLoginImage[CARD], CARD, 39, 40, 585, 402, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 665, 40, 585, 402, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, image1PosX, 40, imageWidth, imageHeight, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, image2PosX, 40, imageWidth, imageHeight, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 50, 498, 337, 65, R.string.main_text1, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 387, 498, 660, 65, R.string.main_text2, View.VISIBLE);
}
@ -2111,8 +2287,8 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
case MAIN_SELECT_FINGER_PRINT:
LayoutSetting(mVerifyCheck, CHECK, 0,0,0,0,0, View.INVISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, 348, 40, 0, 0, R.drawable.main_img1, View.INVISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 348, 40, 585, 402, R.drawable.main_img2, View.INVISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 348, 40, 585, 402, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 348, 40, imageWidth, imageHeight, R.drawable.main_img2, View.INVISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 348, 40, imageWidth, imageHeight, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 0,0,0,0, 0, View.INVISIBLE);
if(mVerifyMethod == VERIFY_METHOD_FINGER_COMB_RFID){
if(mVerifyCombination == VERIFY_COMBINATION_AND) {
@ -2121,8 +2297,8 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
mTitleBackButton.setVisibility(View.VISIBLE);
waitTimeHandler(MAIN_SELECT_FINGER_PRINT, GlobalInfo.mVerifyPopupTime * 1000);
}else{
LayoutSetting(mLoginImage[CARD], CARD, 39, 40, 585, 402, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 665, 40, 585, 402, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, image1PosX, 40, imageWidth, imageHeight, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, image2PosX, 40, imageWidth, imageHeight, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 50, 498, 337+660, 65, R.string.main_card_finger_text1, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 387, 498, 0, 0, 0, View.INVISIBLE);
}
@ -2143,24 +2319,24 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
if(mVerifyMethod == GlobalInfo.VERIFY_METHOD_FACE_COMB_RFID) {
if(mVerifyCombination == VERIFY_COMBINATION_OR) {
LayoutSetting(mLoginImage[CARD], CARD, 39, 40, 585, 402, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 665, 40, 585, 402, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, image1PosX, 40, imageWidth, imageHeight, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, image2PosX, 40, imageWidth, imageHeight, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 0, 0, 0, 0, 0, View.INVISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 40, 498, 1000, 65, R.string.main_face_rfid_text, View.VISIBLE);
//mCameraView.surfaceMove(665, 40, 585, 402);
//mCameraView.surfaceMove(image2PosX, 40, 585, 402);
mCameraView.surfaceMove(160 + 10, 36 + 10, 960 - 20, 540 - 20);
}
else {
//mCameraView.surfaceMove(348, 40, 585, 402);
mCameraView.surfaceMove(160 + 10, 36 + 10, 960 - 20, 540 - 20);
LayoutSetting(mLoginImage[FACE], FACE, 348, 40, 585, 402, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 348, 40, imageWidth, imageHeight, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 288, 498, 1000, 65, R.string.main_face_and_rfid_text, View.VISIBLE);
mTitleBackButton.setVisibility(View.VISIBLE);
waitTimeHandler(MAIN_SELECT_FACE,GlobalInfo.mVerifyPopupTime * 1000);
}
} else {
//mCameraView.surfaceMove(348, 40, 585, 402);
//LayoutSetting(mLoginImage[FACE], FACE, 348, 40, 585, 402, R.drawable.main_img4, View.VISIBLE);
//LayoutSetting(mLoginImage[FACE], FACE, 348, 40, imageWidth, imageHeight, R.drawable.main_img4, View.VISIBLE);
//mCameraView.surfaceMove(152, 10, 896, 476);
mCameraView.surfaceMove(160 + 10, 36 + 10, 960 - 20, 540 - 20);
LayoutSetting(mLoginImage[FACE_BG], FACE_BG, 0, 0, 1280, 626, R.drawable.bg, View.INVISIBLE);
@ -2182,9 +2358,9 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
if(mVerifyCombination == VERIFY_COMBINATION_OR) {
//mCameraView.surfaceMove(450, 110, 380, 261);
mCameraView.surfaceMove(160 + 10, 36 + 10, 960 - 20, 540 - 20);
LayoutSetting(mLoginImage[CARD], CARD, 40, 110, 380, 261, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 450, 110, 380, 261, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 860, 110, 380, 261, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, 40, 110, imageWidthTriple, imageHeightTriple, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, imageTriple2PosX, 110, imageWidthTriple, imageHeightTriple, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, imageTriple3PosX, 110, imageWidthTriple, imageHeightTriple, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 40, 433, 1000, 65, R.string.main_vein_or_face_text1, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 40, 498, 660, 65, R.string.main_vein_or_face_text2, View.VISIBLE);
}
@ -2201,8 +2377,8 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
//mCameraView.surfaceMove(656, 30, 490, 337);
mCameraView.surfaceMove(160 + 10, 36 + 10, 960 - 20, 540 - 20);
LayoutSetting(mLoginImage[CARD], CARD, 0, 0, 0, 0, 0, View.INVISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, 135, 30, 490, 337, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 656, 30, 490, 337, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginImage[VEIN], VEIN, imageFace1PosX, 30, imageWidthWithFace, imageHeightWithFace, R.drawable.main_img2, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, imageFace2PosX, 30, imageWidthWithFace, imageHeightWithFace, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 263, 433, 800, 65, R.string.main_vein_and_face_text1, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 394, 498, 660, 65, R.string.main_vein_and_face_text2, View.VISIBLE);
}
@ -2220,9 +2396,9 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
//mCameraView.surfaceMove(450, 110, 380, 261);
mCameraView.surfaceMove(160 + 10, 36 + 10, 960 - 20, 540 - 20);
LayoutSetting(mLoginImage[CARD], CARD, 40, 110, 380, 261, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 450, 110, 380, 261, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 860, 110, 380, 261, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginImage[CARD], CARD, 40, 110, imageWidthTriple, imageHeightTriple, R.drawable.main_img1, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, imageTriple2PosX, 110, imageWidthTriple, imageHeightTriple, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, imageTriple3PosX, 110, imageWidthTriple, imageHeightTriple, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 40, 433, 1000, 65, R.string.main_finger_or_face_text1, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 40, 498, 660, 65, R.string.main_finger_or_face_text2, View.VISIBLE);
} else {
@ -2238,8 +2414,8 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
//mCameraView.surfaceMove(656, 30, 490, 337);
mCameraView.surfaceMove(160 + 10, 36 + 10, 960 - 20, 540 - 20);
LayoutSetting(mLoginImage[CARD], CARD, 0, 0, 0, 0, 0, View.INVISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, 135, 30, 490, 337, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, 656, 30, 490, 337, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginImage[FINGER], FINGER, imageFace1PosX, 30, imageWidthWithFace, imageHeightWithFace, R.drawable.main_fingerprint, View.VISIBLE);
LayoutSetting(mLoginImage[FACE], FACE, imageFace2PosX, 30, imageWidthWithFace, imageHeightWithFace, R.drawable.main_img4, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 346, 433, 800, 65, R.string.main_finger_and_face_text1, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 500, 498, 660, 65, R.string.main_finger_and_face_text2, View.VISIBLE);
}
@ -2267,6 +2443,12 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 0, 385, 660, 65, 0, View.VISIBLE, " ");
}
if(GlobalInfo.mUseAttendance == 1) {
mWorkinButton.setVisibility(View.INVISIBLE);
mWorkoutButton.setVisibility(View.INVISIBLE);
mAttendanceButton.setVisibility(View.INVISIBLE);
}
waitTimeHandler(RESULT_SUCCESS,GlobalInfo.mVerifyPopupTime * 1000);
break;
@ -2284,6 +2466,13 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
//LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 402, 385, 340, 65, R.string.main_verify_fail, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_WHITE], COLOR_WHITE, 534, 385, 340, 65, R.string.main_verify_fail, View.VISIBLE);
LayoutSetting(mLoginText[COLOR_YELLOW], COLOR_YELLOW, 582, 498, 660, 65, R.string.main_card_text2, View.INVISIBLE);
if(GlobalInfo.mUseAttendance == 1) {
mWorkinButton.setVisibility(View.INVISIBLE);
mWorkoutButton.setVisibility(View.INVISIBLE);
mAttendanceButton.setVisibility(View.INVISIBLE);
}
waitTimeHandler(RESULT_FAIL,GlobalInfo.mVerifyPopupTime * 1000);
break;
}
@ -2308,6 +2497,33 @@ public class MainActivity extends AppCompatActivity implements RfidManager.resul
mLoginImage[target].setImageResource(resId);
mLoginImage[target].setVisibility(visible);
// mLoginImage[target].setScaleType(ImageView.ScaleType.FIT_XY);
// mLoginImage[target].post(() -> {
// Drawable drawable = mLoginImage[target].getDrawable();
// if (drawable == null) return;
//
// float viewWidth = mLoginImage[target].getWidth();
// float viewHeight = mLoginImage[target].getHeight();
//
// float drawableWidth = drawable.getIntrinsicWidth();
// float drawableHeight = drawable.getIntrinsicHeight();
//
// // 높이 기준으로 스케일 결정
// float scale = viewHeight / drawableHeight;
//
// // 스케일된 이미지의 너비
// float scaledWidth = drawableWidth * scale;
//
// // 우측 정렬을 위한 이동 거리 (오른쪽을 잘라냄)
// float dx = 0;
//
// Matrix matrix = new Matrix();
// matrix.setScale(scale, scale);
// matrix.postTranslate(dx, 0);
//
// mLoginImage[target].setImageMatrix(matrix);
// });
} else if (object instanceof TextView) {
mLoginText[target].setLayoutParams(new FrameLayout.LayoutParams(width, height));
mLoginText[target].setX(x);

View File

@ -35,6 +35,10 @@ public class RfidManager implements SerialInputOutputManager.Listener {
private boolean withIoManager;
private Context mContext = null;
private SerialManager mSerialManager = null;
private int acmHandle = -1;
private Thread mSerialThread = null;
//private Handler mainLooper;
private BroadcastReceiver broadcastReceiver;
@ -67,7 +71,7 @@ public class RfidManager implements SerialInputOutputManager.Listener {
public UserInfo scanUserForVerify(ArrayList<UserInfo> userList, String rfidCode) {
for(UserInfo user : userList) {
if(user.mRFIDCode.equals(rfidCode))
if(user.mRFIDCode.equals(rfidCode) || user.mRFIDCode2.equals(rfidCode))
return user;
}
@ -147,6 +151,73 @@ public class RfidManager implements SerialInputOutputManager.Listener {
if(!succeed) {
connect();
}
if(mSerialManager == null) {
mSerialManager = new SerialManager();
mSerialThread = new Thread() {
byte[] accData = new byte[128];
int accFilled = 0;
@Override
public void run() {
byte[] tmpData = new byte[128];
while(true) {
if(acmHandle >= 0) {
byte[] readData = new byte[128];
int recvSize = mSerialManager.ReadSerial(acmHandle, readData, 128);
if(recvSize > 0) {
byte[] rfidId = new byte[recvSize];
System.arraycopy(readData, 0, rfidId, 0, recvSize);
Log.d(RfidManager.class.getName(), String.format("Received from BLE Reader Module : %d bytes. [%s]", recvSize, byteArrayToHexString(rfidId)));
System.arraycopy(readData, 0, accData, accFilled, recvSize);
accFilled += recvSize;
}
if(accFilled > 0) {
while (accData[0] != 0x02 && accFilled > 1) {
System.arraycopy(accData, 1, tmpData, 0, accFilled - 1);
System.arraycopy(tmpData, 0, accData, 0, accFilled - 1);
accFilled--;
}
if(accFilled >= 9) {
if(accData[0] == 0x02 && accData[8] == 0x03) { // 모바일 신분증 데이터 형식 매칭
byte[] rfidId = new byte[7];
System.arraycopy(accData, 1, rfidId, 0, 7);
String rfidHex = byteArrayToHexString(rfidId);
if(accFilled > 9) {
System.arraycopy(accData, 9, tmpData, 0, accFilled - 9);
System.arraycopy(tmpData, 0, accData, 0, accFilled - 9);
}
Log.d(RfidManager.class.getName(), String.format("BLE Reader Try [%s]", rfidHex));
mNotifyTarget.onRfidResult("success", rfidHex);
accFilled -= 9;
} else {
accFilled = 0;
}
}
}
}
try {
sleep(50);
} catch (InterruptedException e) {
}
}
}
};
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

View File

@ -0,0 +1,11 @@
package kr.co.enicom.acs;
public class SerialManager {
public SerialManager() {
System.loadLibrary("serialutil");
}
public native int OpenSerial(String dev, int baudrate);
public native int ReadSerial(int devHandle, byte[] buffer, int maxlen);
public native int WriteSerial(int devHandle, byte[] buffer, int length);
public native int CloseSerial(int devHandle);
}

View File

@ -9,7 +9,9 @@ public class UserInfo {
public int mAuthority; // 0 : Admin, 1 : User
public String mPassword;
public String mRFIDCode;
public String mRFIDCode2;
public String mVeinTemplate;
public String mVeinTemplate2;
public String mUserRegistDateTime;
public String mRfidRegistDateTime;
public String mVeinRegistDateTime;
@ -18,18 +20,24 @@ public class UserInfo {
public boolean mCheck;
public String mFingerTemplate;
public String mFingerTemplate2;
public String mFingerRegistDateTime;
public byte[] mFaceTemplate;
public String mFaceRegistDateTime;
public String mPermitDate;
public String mPermitTime;
public UserInfo() {
mID = "";
mName = "";
mAuthority = -1;
mPassword = "";
mRFIDCode = "";
mRFIDCode2 = "";
mVeinTemplate = "";
mVeinTemplate2 = "";
mOprno = "";
mJohapnum = "";
mUserRegistDateTime = "";
@ -38,10 +46,14 @@ public class UserInfo {
mCheck = false;
mFingerTemplate = "";
mFingerTemplate2 = "";
mFingerRegistDateTime = "";
mFaceTemplate = "".getBytes();
mFaceRegistDateTime = "";
mPermitDate = "";
mPermitTime = "";
}
public void makeSafe() {
@ -53,8 +65,12 @@ public class UserInfo {
mPassword = "";
if(mRFIDCode == null)
mRFIDCode = "";
if(mRFIDCode2 == null)
mRFIDCode2 = "";
if(mVeinTemplate == null)
mVeinTemplate = "";
if(mVeinTemplate2 == null)
mVeinTemplate2 = "";
if(mOprno == null)
mOprno = "";
@ -68,10 +84,17 @@ public class UserInfo {
mVeinRegistDateTime = "";
if(mFingerTemplate == null)
mFingerTemplate = "";
if(mFingerTemplate2 == null)
mFingerTemplate2 = "";
if(mFingerRegistDateTime == null)
mFingerRegistDateTime = "";
if(mFaceRegistDateTime == null)
mFaceRegistDateTime = "";
if(mPermitDate == null)
mPermitDate = "";
if(mPermitTime == null)
mPermitTime = "";
}
public void copyMemberToInfo(UserInfo target) {
@ -83,7 +106,9 @@ public class UserInfo {
target.mAuthority = mAuthority;
target.mPassword = mPassword;
target.mRFIDCode = mRFIDCode;
target.mRFIDCode2 = mRFIDCode2;
target.mVeinTemplate = mVeinTemplate;
target.mVeinTemplate2 = mVeinTemplate2;
target.mOprno = mOprno;
target.mIndex = mIndex;
target.mJohapnum = mJohapnum;
@ -92,7 +117,11 @@ public class UserInfo {
target.mVeinRegistDateTime = mVeinRegistDateTime;
target.mFingerTemplate = mFingerTemplate;
target.mFingerTemplate2 = mFingerTemplate2;
target.mFaceTemplate = mFaceTemplate;
target.mPermitDate = mPermitDate;
target.mPermitTime = mPermitTime;
}
public boolean valueExist(String value) {

View File

@ -248,6 +248,20 @@ public class VeinManager {
} catch (Exception e) {
}
}
if(user.mVeinTemplate2.length() > 0 && user.mVeinTemplate2.length() == ServerManager.VEIN_CODE_ENROLL_LENGTH) {
try {
boolean result = VeinManager.this.h1Client.verify(user.mVeinTemplate2, mVeinCode, SecurityLevel.MIDDLE);
if (result) {
Log.e("ENROLL", user.mVeinTemplate2);
Log.e("Vein", mVeinCode);
mResultInfo = user;
scanFinished = true;
return;
}
} catch (Exception e) {
}
}
}
scanFinished = true;
@ -268,6 +282,18 @@ public class VeinManager {
} catch (Exception e) {
}
}
if (user.mVeinTemplate2.length() > 0 && user.mVeinTemplate2.length() == ServerManager.VEIN_CODE_ENROLL_LENGTH) {
try {
boolean result = this.h1Client.verify(user.mVeinTemplate2, veinCode, SecurityLevel.MIDDLE);
if (result) {
Log.e("ENROLL", user.mVeinTemplate2);
Log.e("Vein", veinCode);
return user;
}
} catch (Exception e) {
}
}
}
} else { // 멀티스레드 SCAN
int verifierCount = (userList.size() / GlobalInfo.VEIN_MULTI_SCAN_COUNT_BASE);

View File

@ -25,6 +25,7 @@ public class LogAdapter extends ArrayAdapter<LogInfo> {
ArrayList<LogInfo> sample;
ArrayList<LogInfo> filteredItemList;
LayoutInflater mLayoutInflater = null;
int mViewMode = 0; // 0 : 인증 이력, 1 : 근태 이력
public LogAdapter(Context context, ArrayList<LogInfo> data) {
super(context,0, data);
@ -35,6 +36,10 @@ public class LogAdapter extends ArrayAdapter<LogInfo> {
mLayoutInflater = LayoutInflater.from(mContext);
}
public void setViewMode(int mode) {
mViewMode = mode;
}
@Override
public int getCount() {
//Log.w("RITO", "filteredItem getCount : " + filteredItemList.size());
@ -71,7 +76,7 @@ public class LogAdapter extends ArrayAdapter<LogInfo> {
TextView userName = (TextView)convertView.findViewById(R.id.username);
TextView logDate = (TextView)convertView.findViewById(R.id.logDate);
TextView logTime = (TextView)convertView.findViewById(R.id.logTime);
//TextView logResult = (TextView)convertView.findViewById(R.id.logResult);
TextView logResult = (TextView)convertView.findViewById(R.id.logResult);
ImageView imageMethodRfid = (ImageView) convertView.findViewById(R.id.imageMethodRfid);
ImageView imageMethodVein = (ImageView) convertView.findViewById(R.id.imageMethodVein);
// ImageView imageMethodFinger = (ImageView) convertView.findViewById(R.id.imageMethodFinger);
@ -95,10 +100,12 @@ public class LogAdapter extends ArrayAdapter<LogInfo> {
} else if (GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_VEIN_FACE)) {
imageMethodFace.setVisibility(View.VISIBLE);
imageMethodFace.setBackgroundResource(R.drawable.list_face_icon_nor);
logResult.setVisibility(View.GONE);
} else if (GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_FINGER_FACE)) {
imageMethodFace.setVisibility(View.VISIBLE);
imageMethodFace.setBackgroundResource(R.drawable.list_face_icon_nor);
imageMethodVein.setBackgroundResource(R.drawable.list_fprint_icon_nor);
logResult.setVisibility(View.GONE);
}
if(listViewItem.mId != null && listViewItem.mId.length() > 0) {
@ -121,14 +128,24 @@ public class LogAdapter extends ArrayAdapter<LogInfo> {
imageMethodFace.setBackgroundResource(R.drawable.list_face_icon_color);
}
//logResult.setText("성공");
//logResult.setTextColor(Color.parseColor("#1DAE17"));
imageResult.setBackgroundResource(R.drawable.list_success_icon);
if(listViewItem.mAttendanceCode == GlobalInfo.ATTENDANCE_MODE_NONE) {
logResult.setText("성공");
logResult.setTextColor(Color.parseColor("#1DAE17"));
} else if(listViewItem.mAttendanceCode == GlobalInfo.ATTENDANCE_MODE_IN) {
logResult.setText("출근");
logResult.setTextColor(Color.parseColor("#117EF8"));
imageResult.setBackgroundResource(R.drawable.list_workin_icon_resized);
} else if(listViewItem.mAttendanceCode == GlobalInfo.ATTENDANCE_MODE_OUT) {
logResult.setText("퇴근");
logResult.setTextColor(Color.parseColor("#1DAE17"));
}
} else {
userId.setText("");
userName.setText("");
//logResult.setText("실패");
//logResult.setTextColor(Color.parseColor("#E42E2E"));
logResult.setText("실패");
logResult.setTextColor(Color.parseColor("#E42E2E"));
imageResult.setBackgroundResource(R.drawable.list_fail_icon);
}
listViewItem.mDate = listViewItem.mDate.replaceAll("-","");

View File

@ -23,6 +23,8 @@ public class LogInfo {
// For Setting ADMIN Login
public String mCaptureId;
public int mAttendanceCode; // 근태 정보. 0 : 적용없음, 1 : 출근, 2 : 퇴근
public LogInfo() {
mId = "";
mName = "";
@ -30,6 +32,7 @@ public class LogInfo {
mJohapnum = "";
mRfidCode = "";
mCaptureId = "";
mAttendanceCode = 0;
mMethod = GlobalInfo.VERIFY_METHOD_VEIN;
mResultCode = GlobalInfo.VERIFY_RESULT_FAILED;
}

View File

@ -98,6 +98,17 @@ public class MgtDataActivity extends BaseActivity {
}
});
Button dataattendancebutton = (Button) findViewById(R.id.dataattendancebutton);
dataattendancebutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
deleteDialog(7, POPMODE_ALL);
}
});
Button datafingerbutton = (Button) findViewById(R.id.datafingerbutton);
datafingerbutton.setOnClickListener(new Button.OnClickListener() {
@Override
@ -134,6 +145,12 @@ public class MgtDataActivity extends BaseActivity {
} else if (GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_FINGER_FACE)) {
dataveinlayout.setVisibility(View.GONE);
}
if(GlobalInfo.mUseAttendance == 1) {
findViewById(R.id.dataattendance).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.dataattendance).setVisibility(View.INVISIBLE);
}
}
@Override
@ -249,6 +266,8 @@ public class MgtDataActivity extends BaseActivity {
mDeleteTarget = "finger";
} else if (menu == 6) {
mDeleteTarget = "face";
} else if (menu == 7) {
mDeleteTarget = "attendance";
}
if (popupmode == POPMODE_ALL) {

View File

@ -102,6 +102,17 @@ public class MgtLogActivity extends BaseActivity {
}
});
Button logattendancebutton = (Button) findViewById(R.id.logattendancebutton);
logattendancebutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
layoutChange(3);
logInfoSetting();
}
});
ImageView logdeleteimage = (ImageView) findViewById(R.id.logdeleteimage);
logdeleteimage.setOnClickListener(new Button.OnClickListener() {
@Override
@ -159,7 +170,11 @@ public class MgtLogActivity extends BaseActivity {
}
});
if(GlobalInfo.mUseAttendance == 1) {
findViewById(R.id.logattendance).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.logattendance).setVisibility(View.INVISIBLE);
}
}
String startbeforeText = "";
@ -192,7 +207,12 @@ public class MgtLogActivity extends BaseActivity {
mStartdate.setText(fromday);
mEnddate.setText(today);
updateLogList(fromday, today);
//updateLogList(fromday, today);
if(mLayoutDeps == 2) {
updateLogListAttendance(fromday, today, false);
} else {
updateLogListAttendance(fromday, today, true);
}
}
private void updateLogList(String fromDate, String toDate) {
@ -202,6 +222,13 @@ public class MgtLogActivity extends BaseActivity {
mLogAdapter.notifyDataSetChanged();
}
private void updateLogListAttendance(String fromDate, String toDate, boolean isAttendance) {
ArrayList<LogInfo> infoList = GlobalInfo.queryLogDataAttendance(fromDate, toDate, isAttendance);
mLogAdapter.sample = infoList;
mLogAdapter.filteredItemList = infoList;
mLogAdapter.notifyDataSetChanged();
}
@Override
protected void onStart() {
//checkVerify();
@ -285,7 +312,7 @@ public class MgtLogActivity extends BaseActivity {
FrameLayout sub3 = (FrameLayout) findViewById(R.id.frameLayoutsub3);
sub3.setVisibility(View.INVISIBLE);
}
else
else if(layout == 2)
{
LinearLayout sub1 = (LinearLayout) findViewById(R.id.frameLayoutsub1);
sub1.setVisibility(View.INVISIBLE);
@ -298,6 +325,19 @@ public class MgtLogActivity extends BaseActivity {
titleView.setText(R.string.mgt_log_authentication_text);
}
else if(layout == 3)
{
LinearLayout sub1 = (LinearLayout) findViewById(R.id.frameLayoutsub1);
sub1.setVisibility(View.INVISIBLE);
LinearLayout sub2 = (LinearLayout) findViewById(R.id.frameLayoutsub2);
sub2.setVisibility(View.INVISIBLE);
FrameLayout sub3 = (FrameLayout) findViewById(R.id.frameLayoutsub3);
sub3.setVisibility(View.VISIBLE);
titleView.setText(R.string.mgt_log_attendance_text);
}
mLayoutDeps = layout;
}catch(Exception e)
@ -512,7 +552,12 @@ public class MgtLogActivity extends BaseActivity {
mEnddate.setText(String.format("%04d-%02d-%02d", numberpickeryear.getValue(), numberpickermonth.getValue(), numberpickerday.getValue()));
}
updateLogList(mStartdate.getText().toString(), mEnddate.getText().toString());
//updateLogList(mStartdate.getText().toString(), mEnddate.getText().toString());
if(mLayoutDeps == 2) {
updateLogListAttendance(mStartdate.getText().toString(), mEnddate.getText().toString(), false);
} else {
updateLogListAttendance(mStartdate.getText().toString(), mEnddate.getText().toString(), true);
}
}catch (Exception e)
{

View File

@ -41,6 +41,7 @@ import kr.co.enicom.acs.GlobalInfo;
import kr.co.enicom.acs.MainActivity;
import kr.co.enicom.acs.R;
import kr.co.enicom.acs.RfidManager;
import kr.co.enicom.acs.system.DoorControlTimeActivity;
import kr.co.enicom.acs.system.LoginMenuActivity;
import kr.co.enicom.acs.system.ServerSettingActivity;
import kr.co.enicom.acs.system.SettingsActivity;
@ -236,6 +237,17 @@ public class MgtSystemSettingsActivity extends BaseActivity implements RfidManag
});
Button datadoorcontroltimebutton = (Button) findViewById(R.id.datadoorcontroltimebutton);
datadoorcontroltimebutton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MgtSystemSettingsActivity.this, DoorControlTimeActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
}
});
Button biometricsmenubutton = (Button) findViewById(R.id.biometricsmenubutton);
biometricsmenubutton.setOnClickListener(new Button.OnClickListener() {
@Override
@ -351,6 +363,30 @@ public class MgtSystemSettingsActivity extends BaseActivity implements RfidManag
});
ImageView systemattendanceimage = (ImageView) findViewById(R.id.systemattendanceimage);
systemattendanceimage.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
if(GlobalInfo.mUseAttendance == 0) {
systemattendanceimage.setImageResource(R.drawable.toggle_pressed);
GlobalInfo.mUseAttendance = 1;
}
else {
GlobalInfo.mUseAttendance = 0;
systemattendanceimage.setImageResource(R.drawable.toggle_nor);
}
}
});
if(GlobalInfo.mUseAttendance == 0) {
systemattendanceimage.setImageResource(R.drawable.toggle_nor);
} else {
systemattendanceimage.setImageResource(R.drawable.toggle_pressed);
}
ImageView systemautorebootuseimage = (ImageView) findViewById(R.id.systemautorebootuseimage);
systemautorebootuseimage.setOnClickListener(new Button.OnClickListener() {
@Override

View File

@ -24,13 +24,21 @@ import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.NumberPicker;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import kr.co.enicom.acs.Base64Util;
import kr.co.enicom.acs.BaseActivity;
import kr.co.enicom.acs.BaseService;
@ -45,6 +53,7 @@ import kr.co.enicom.acs.system.LoginMenuActivity;
import kr.co.enicom.acs.system.SettingsActivity;
import kr.co.enicom.acs.UserInfo;
import kr.co.enicom.acs.VeinManager;
import kr.co.enicom.acs.system.SystemUtil;
import kr.co.rito.RitoUtil;
public class MgtUserInfoActivity extends BaseActivity implements RfidManager.resultNotify, VeinManager.resultNotify, FingerManager.resultNotify, FaceManager.resultNotify {
@ -61,6 +70,10 @@ public class MgtUserInfoActivity extends BaseActivity implements RfidManager.re
private static int UPDATE_DATA_FINGER_CODE = (1 << 6);
private static int UPDATE_DATA_FACE_CODE = (1 << 7);
private Dialog mCognitionDialog = null;
private int mUpdateIndex = 0; // RFID1,2 또는 지정맥 1,2 지정
private int mBioDualMode = 0;
private int mRfidDualMode = 0;
LinearLayout mLinearLayout= null;
InputMethodManager mImm = null;
@ -115,27 +128,74 @@ public class MgtUserInfoActivity extends BaseActivity implements RfidManager.re
button.performClick();
}
TextView view = (TextView)findViewById(R.id.textViewRfidValue);
if(view != null && info.mRFIDCode != null) {
view.setText(info.mRFIDCode);
if(info.mRFIDCode.length() > 0 && info.mRFIDCode2.length() > 0) {
mRfidDualMode = 1;
TextView view = (TextView) findViewById(R.id.textViewRfid1Value);
if (view != null && info.mRFIDCode != null) {
view.setText(info.mRFIDCode);
}
view = (TextView) findViewById(R.id.textViewRfid2Value);
if (view != null && info.mRFIDCode2 != null) {
view.setText(info.mRFIDCode2);
}
} else {
TextView view = (TextView) findViewById(R.id.textViewRfidValue);
if (view != null && info.mRFIDCode != null) {
view.setText(info.mRFIDCode);
}
}
view = (TextView)findViewById(R.id.textViewVeinValue);
if (view != null && info.mVeinTemplate != null) {
view.setText(info.mVeinTemplate);
if(info.mVeinTemplate.length() > 0 && info.mVeinTemplate2.length() > 0) {
mBioDualMode = 1;
TextView view = (TextView) findViewById(R.id.textViewVein1Value);
if (view != null && info.mVeinTemplate != null) {
view.setText(info.mVeinTemplate);
}
view = (TextView) findViewById(R.id.textViewVein2Value);
if (view != null && info.mVeinTemplate2 != null) {
view.setText(info.mVeinTemplate2);
}
} else {
TextView view = (TextView) findViewById(R.id.textViewVeinValue);
if (view != null && info.mVeinTemplate != null) {
view.setText(info.mVeinTemplate);
}
}
if(info.mFingerTemplate.length() > 0 && info.mFingerTemplate2.length() > 0) {
mBioDualMode = 1;
TextView view = (TextView) findViewById(R.id.textViewFinger1Value);
if (view != null && info.mFingerTemplate != null) {
view.setText(info.mFingerTemplate);
}
view = (TextView)findViewById(R.id.textViewFingerValue);
if (view != null && info.mFingerTemplate != null) {
view.setText(info.mFingerTemplate);
view = (TextView) findViewById(R.id.textViewFinger2Value);
if (view != null && info.mFingerTemplate2 != null) {
view.setText(info.mFingerTemplate2);
}
} else {
TextView view = (TextView) findViewById(R.id.textViewFingerValue);
if (view != null && info.mFingerTemplate != null) {
view.setText(info.mFingerTemplate);
}
}
view = (TextView)findViewById(R.id.textViewFaceValue);
TextView view = (TextView)findViewById(R.id.textViewFaceValue);
if (view != null && info.mFaceTemplate != null) {
String faceTemplate = byteArrayToHexString(info.mFaceTemplate);
view.setText(faceTemplate);
}
view = (TextView)findViewById(R.id.textViewPermitDateValue);
if (view != null && info.mPermitDate != null) {
view.setText(info.mPermitDate);
}
view = (TextView)findViewById(R.id.textViewPermitTimeValue);
if (view != null && info.mPermitTime != null) {
view.setText(info.mPermitTime);
}
}
LinearLayout layoutVein = (LinearLayout)findViewById(R.id.layoutVein);
@ -157,46 +217,712 @@ public class MgtUserInfoActivity extends BaseActivity implements RfidManager.re
layoutFinger.setVisibility(View.GONE);
}
updateMenuListVisibility();
mDateText = findViewById(R.id.textViewPermitDateValue);
mTimeText = findViewById(R.id.textViewPermitTimeValue);
/*
RFID UI 처리
*/
Button button = (Button) findViewById(R.id.buttonSetRfid) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 0;
cognitionPopup(GlobalInfo.VERIFY_METHOD_RFID);
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
button = (Button) findViewById(R.id.buttonSetRfid1) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 0;
cognitionPopup(GlobalInfo.VERIFY_METHOD_RFID);
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
button = (Button) findViewById(R.id.buttonSetRfid2) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 1;
cognitionPopup(GlobalInfo.VERIFY_METHOD_RFID);
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
ImageButton imgButton = (ImageButton) findViewById(R.id.buttonDeleteRfid1);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewRfid2Value);
TextView tv2 = findViewById(R.id.textViewRfidValue);
tv2.setText(tv1.getText());
tv1 = findViewById(R.id.textViewRfid2Value);
tv1.setText("");
mRfidDualMode = 0;
updateMenuListVisibility();
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
imgButton = (ImageButton) findViewById(R.id.buttonDeleteRfid2);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewRfid1Value);
TextView tv2 = findViewById(R.id.textViewRfidValue);
tv2.setText(tv1.getText());
tv1 = findViewById(R.id.textViewRfid2Value);
tv1.setText("");
mRfidDualMode = 0;
updateMenuListVisibility();
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
imgButton = (ImageButton) findViewById(R.id.buttonAddRfid);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewRfidValue);
TextView tv2 = findViewById(R.id.textViewRfid1Value);
tv2.setText(tv1.getText());
tv1 = findViewById(R.id.textViewRfid2Value);
tv1.setText("");
mRfidDualMode = 1;
updateMenuListVisibility();
}
});
/*
지정맥 UI 처리
*/
button = (Button) findViewById(R.id.buttonSetVein) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 0;
cognitionPopup(GlobalInfo.VERIFY_METHOD_VEIN);
}
});
button = (Button) findViewById(R.id.buttonSetVein1) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 0;
cognitionPopup(GlobalInfo.VERIFY_METHOD_VEIN);
}
});
button = (Button) findViewById(R.id.buttonSetVein2) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 1;
cognitionPopup(GlobalInfo.VERIFY_METHOD_VEIN);
}
});
imgButton = (ImageButton) findViewById(R.id.buttonDeleteVein1);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewVein2Value);
TextView tv2 = findViewById(R.id.textViewVeinValue);
tv2.setText(tv1.getText());
tv1 = findViewById(R.id.textViewVein2Value);
tv1.setText("");
mBioDualMode = 0;
updateMenuListVisibility();
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
imgButton = (ImageButton) findViewById(R.id.buttonDeleteVein2);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewVein1Value);
TextView tv2 = findViewById(R.id.textViewVeinValue);
tv2.setText(tv1.getText());
tv1 = findViewById(R.id.textViewVein2Value);
tv1.setText("");
mBioDualMode = 0;
updateMenuListVisibility();
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
imgButton = (ImageButton) findViewById(R.id.buttonAddVein);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewVeinValue);
TextView tv2 = findViewById(R.id.textViewVein1Value);
tv2.setText(tv1.getText());
tv1 = findViewById(R.id.textViewVein2Value);
tv1.setText("");
mBioDualMode = 1;
updateMenuListVisibility();
}
});
/*
지문 UI 처리
*/
button = (Button) findViewById(R.id.buttonSetFinger) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 0;
cognitionPopup(GlobalInfo.VERIFY_METHOD_FINGER_PRINT);
}
});
button = (Button) findViewById(R.id.buttonSetFace) ;
button = (Button) findViewById(R.id.buttonSetFinger1) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 0;
cognitionPopup(GlobalInfo.VERIFY_METHOD_FINGER_PRINT);
}
});
button = (Button) findViewById(R.id.buttonSetFinger2) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 1;
cognitionPopup(GlobalInfo.VERIFY_METHOD_FINGER_PRINT);
}
});
imgButton = (ImageButton) findViewById(R.id.buttonDeleteFinger1);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewFinger2Value);
TextView tv2 = findViewById(R.id.textViewFingerValue);
tv2.setText(tv1.getText());
mBioDualMode = 0;
updateMenuListVisibility();
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
imgButton = (ImageButton) findViewById(R.id.buttonDeleteFinger2);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewFinger1Value);
TextView tv2 = findViewById(R.id.textViewFingerValue);
tv2.setText(tv1.getText());
mBioDualMode = 0;
updateMenuListVisibility();
//showRegistVerifyTemplate(GlobalInfo.VERIFY_METHOD_RFID);
}
});
imgButton = (ImageButton) findViewById(R.id.buttonAddFinger);
imgButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
TextView tv1 = findViewById(R.id.textViewFingerValue);
TextView tv2 = findViewById(R.id.textViewFinger1Value);
tv2.setText(tv1.getText());
tv1 = findViewById(R.id.textViewFinger2Value);
tv1.setText("");
mBioDualMode = 1;
updateMenuListVisibility();
}
});
button = (Button) findViewById(R.id.buttonSetFace);
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
mUpdateIndex = 0;
cognitionPopup(GlobalInfo.VERIFY_METHOD_FACE);
}
});
button = (Button) findViewById(R.id.buttonSetPermitDate);
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
permitDateDialog();
}
});
button = (Button) findViewById(R.id.buttonSetPermitTime);
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
numberPicker(1, null);
}
});
}
private final int DATE_POPUP = 0;
private final int TIME_POPUP = 1;
private TextView mDateText = null, mTimeText = null;
private NumberPicker numberpickeryear = null, numberpickermonth = null, numberpickerday = null;
private NumberPicker numberpickertime = null, numberpickerminute = null, numberpickertime2 = null, numberpickerminute2 = null;
private void setDividerColor(NumberPicker picker, int color){
java.lang.reflect.Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for(java.lang.reflect.Field pf : pickerFields){
if(pf.getName().equals("mSelectionDivider")){
pf.setAccessible(true);
try{
ColorDrawable colorDrawable = new ColorDrawable(color);
pf.set(picker, colorDrawable);
}catch(Exception e)
{
}
break;
}
}
}
public void setSelectedTextColor(NumberPicker np) {
final int count = np.getChildCount();
for(int i = 0; i < count; i++){
View child = np.getChildAt(i);
if(child instanceof EditText){
try{
Field selectorWheelPaintField = np.getClass().getDeclaredField("mSelectorWheelPaint");
selectorWheelPaintField.setAccessible(true);
((EditText) child).setTextSize(42);
((EditText) child).setTextColor(Color.parseColor("#333333"));
np.performClick();
}
catch(NoSuchFieldException e){
}
catch(IllegalArgumentException e){
}
}
}
}
private void numberPicker(final int mode, final Dialog pdialog)
{
numberpickeryear = null;
numberpickermonth = null;
numberpickerday = null;
numberpickertime = null;
numberpickerminute = null;
numberpickertime2 = null;
numberpickerminute2 = null;
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
if(mode == DATE_POPUP)
dialog.setContentView(R.layout.date_yyyymmdd_dialog);
else
dialog.setContentView(R.layout.date_hhmm_hhmm_dialog);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Button buttonConfirm = (Button) dialog.findViewById(R.id.buttonConfirm);
Button buttonCancel = (Button) dialog.findViewById(R.id.buttonCancel);
Date currentTime = Calendar.getInstance().getTime();
SimpleDateFormat dayFormat = new SimpleDateFormat("dd", Locale.getDefault());
SimpleDateFormat monthFormat = new SimpleDateFormat("MM", Locale.getDefault());
SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy", Locale.getDefault());
SimpleDateFormat timeFormat = new SimpleDateFormat("HH", Locale.getDefault());
SimpleDateFormat minuteFormat = new SimpleDateFormat("mm", Locale.getDefault());
String year = yearFormat.format(currentTime);
String month = monthFormat.format(currentTime);
String day = dayFormat.format(currentTime);
String time = timeFormat.format(currentTime);
String minute = minuteFormat.format(currentTime);
Calendar maxday = Calendar.getInstance();
maxday.set(Integer.valueOf(year),Integer.valueOf(month) -1,1);
if(mode == DATE_POPUP) {
numberpickeryear = (NumberPicker) dialog.findViewById(R.id.numberpickeryear);
numberpickermonth = (NumberPicker) dialog.findViewById(R.id.numberpickermonth);
numberpickerday = (NumberPicker) dialog.findViewById(R.id.numberpickerday);
numberpickeryear.setMinValue(Integer.valueOf(year) - 1);
numberpickeryear.setMaxValue(Integer.valueOf(year) + 50);
numberpickeryear.setValue(Integer.valueOf(year));
numberpickeryear.setWrapSelectorWheel(false);
numberpickermonth.setMinValue(1);
numberpickermonth.setMaxValue(12);
numberpickermonth.setValue(Integer.valueOf(month));
numberpickermonth.setWrapSelectorWheel(false);
numberpickerday.setMinValue(1);
numberpickerday.setMaxValue(maxday.getActualMaximum(Calendar.DAY_OF_MONTH));
numberpickerday.setValue(Integer.valueOf(day));
numberpickerday.setWrapSelectorWheel(false);
numberpickeryear.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickeryear, android.R.color.white);
setSelectedTextColor(numberpickeryear);
numberpickeryear.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickermonth.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickermonth, android.R.color.white);
setSelectedTextColor(numberpickermonth);
numberpickermonth.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickermonth.setOnScrollListener(new NumberPicker.OnScrollListener() {
@Override
public void onScrollStateChange(NumberPicker view, int scrollState) {
NumberPicker picker = view;
if (scrollState == SCROLL_STATE_IDLE) {
Calendar maxday = Calendar.getInstance();
maxday.set(Integer.valueOf(year), Integer.valueOf(picker.getValue()) - 1, 1);
numberpickerday.setMinValue(1);
numberpickerday.setMaxValue(maxday.getActualMaximum(Calendar.DAY_OF_MONTH));
numberpickerday.setValue(Integer.valueOf(day));
numberpickerday.setWrapSelectorWheel(false);
numberpickerday.invalidate();
}
}
});
numberpickerday.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickerday, android.R.color.white);
setSelectedTextColor(numberpickerday);
numberpickerday.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
}else {
numberpickertime = (NumberPicker) dialog.findViewById(R.id.numberpickerhour);
numberpickerminute = (NumberPicker) dialog.findViewById(R.id.numberpickerminute);
numberpickertime2 = (NumberPicker) dialog.findViewById(R.id.numberpickerhour2);
numberpickerminute2 = (NumberPicker) dialog.findViewById(R.id.numberpickerminute2);
String[] hourValues = new String[24];
String[] minuteValues = new String[60];
for(int i = 0;i < 24;i++) {
hourValues[i] = String.format("%02d", i);
}
for(int i = 0;i < 60;i++) {
minuteValues[i] = String.format("%02d", i);
}
numberpickertime.setMinValue(0);
numberpickertime.setMaxValue(23);
numberpickertime.setValue(9);
numberpickertime.setDisplayedValues(hourValues);
numberpickertime.setWrapSelectorWheel(false);
numberpickerminute.setMinValue(0);
numberpickerminute.setMaxValue(59);
numberpickerminute.setValue(0);
numberpickerminute.setDisplayedValues(minuteValues);
numberpickerminute.setWrapSelectorWheel(false);
numberpickertime2.setMinValue(0);
numberpickertime2.setMaxValue(23);
numberpickertime2.setValue(18);
numberpickertime2.setDisplayedValues(hourValues);
numberpickertime2.setWrapSelectorWheel(false);
numberpickerminute2.setMinValue(0);
numberpickerminute2.setMaxValue(59);
numberpickerminute2.setValue(0);
numberpickerminute2.setDisplayedValues(minuteValues);
numberpickerminute2.setWrapSelectorWheel(false);
numberpickertime.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickertime, android.R.color.white);
setSelectedTextColor(numberpickertime);
numberpickertime2.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickertime2, android.R.color.white);
setSelectedTextColor(numberpickertime2);
numberpickertime.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickertime2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickerminute.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickerminute, android.R.color.white);
setSelectedTextColor(numberpickerminute);
numberpickerminute.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickerminute2.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickerminute2, android.R.color.white);
setSelectedTextColor(numberpickerminute2);
numberpickerminute2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
}
buttonConfirm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try{
if(mode == 0) {
TextView editstartdate = (TextView) pdialog.findViewById(R.id.editstartdate);
TextView editenddate = (TextView) pdialog.findViewById(R.id.editenddate);
//mDateText.setText(String.format("%04d-%02d-%02d", numberpickeryear.getValue(), numberpickermonth.getValue(), numberpickerday.getValue()));
if(mPickerTarget.equals("s")) {
mStartDate = String.format("%04d-%02d-%02d", numberpickeryear.getValue(), numberpickermonth.getValue(), numberpickerday.getValue());
editstartdate.setText(mStartDate);
} else if(mPickerTarget.equals("e")) {
mEndDate = String.format("%04d-%02d-%02d", numberpickeryear.getValue(), numberpickermonth.getValue(), numberpickerday.getValue());
editenddate.setText(mEndDate);
}
dialog.dismiss();
} else {
if(numberpickertime.getValue() * 60 + numberpickerminute.getValue() >= numberpickertime2.getValue() * 60 + numberpickerminute2.getValue()) {
Toast.makeText(MgtUserInfoActivity.this, "종료시간이 더 커야 합니다.", Toast.LENGTH_SHORT).show();
return;
}
mTimeText.setText(String.format("%02d:%02d ~ %02d:%02d",
numberpickertime.getValue(), numberpickerminute.getValue(), numberpickertime2.getValue(), numberpickerminute2.getValue()));
dialog.dismiss();
}
}catch (Exception e)
{
e.printStackTrace();
}
}
});
buttonCancel.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
private String mStartDate = "";
private String mEndDate = "";
private String mPickerTarget = "";
private void permitDateDialog() {
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.date_range_dialog);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
TextView editstartdate = (TextView) dialog.findViewById(R.id.editstartdate);
TextView editenddate = (TextView) dialog.findViewById(R.id.editenddate);
Button editstartdatebutton = (Button) dialog.findViewById(R.id.editstartdatebutton);
Button editenddatebutton = (Button) dialog.findViewById(R.id.editenddatebutton);
editstartdatebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
//numberPicker(menu, 0, editstartdate.getText().toString());
mPickerTarget = "s";
numberPicker(0, dialog);
} catch (Exception e) {
e.printStackTrace();
}
}
});
editenddatebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
//numberPicker(menu, 1, editenddate.getText().toString());
mPickerTarget = "e";
numberPicker(0, dialog);
} catch (Exception e) {
e.printStackTrace();
}
}
});
SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
Date currentTime = Calendar.getInstance().getTime();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
String startdate = dayFormat.format(cal.getTime());
String enddate = dayFormat.format(currentTime);
editstartdate.setText(startdate);
editenddate.setText(enddate);
if (mStartDate.length() > 0)
editstartdate.setText(mStartDate);
if (mEndDate.length() > 0)
editenddate.setText(mEndDate);
Button buttonConfirm = (Button) dialog.findViewById(R.id.buttonConfirm);
Button buttonCancel = (Button) dialog.findViewById(R.id.buttonCancel);
buttonConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
mStartDate = editstartdate.getText().toString();
mEndDate = editenddate.getText().toString();
mDateText.setText(mStartDate + " ~ " + mEndDate);
} catch (Exception e) {
e.printStackTrace();
} finally {
dialog.dismiss();
}
}
});
buttonCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
} catch (Exception e) {
e.printStackTrace();
} finally {
dialog.dismiss();
}
}
});
dialog.show();
}
private void updateMenuListVisibility() {
if(mRfidDualMode == 1) {
findViewById(R.id.layoutRfid).setVisibility(View.GONE);
findViewById(R.id.layoutRfid1).setVisibility(View.VISIBLE);
findViewById(R.id.layoutRfid2).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.layoutRfid).setVisibility(View.VISIBLE);
findViewById(R.id.layoutRfid1).setVisibility(View.GONE);
findViewById(R.id.layoutRfid2).setVisibility(View.GONE);
}
if(GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_VEIN) || GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_VEIN_FACE)) {
findViewById(R.id.layoutFinger).setVisibility(View.GONE);
findViewById(R.id.layoutFinger1).setVisibility(View.GONE);
findViewById(R.id.layoutFinger2).setVisibility(View.GONE);
if(mBioDualMode == 1) {
findViewById(R.id.layoutVein).setVisibility(View.GONE);
findViewById(R.id.layoutVein1).setVisibility(View.VISIBLE);
findViewById(R.id.layoutVein2).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.layoutVein).setVisibility(View.VISIBLE);
findViewById(R.id.layoutVein1).setVisibility(View.GONE);
findViewById(R.id.layoutVein2).setVisibility(View.GONE);
}
}
else if(GlobalInfo.isActivatedMethod(VERIFY_METHOD_FINGER_PRINT) || GlobalInfo.isActivatedMethod(VERIFY_METHOD_FINGER_FACE)) {
findViewById(R.id.layoutVein).setVisibility(View.GONE);
findViewById(R.id.layoutVein1).setVisibility(View.GONE);
findViewById(R.id.layoutVein2).setVisibility(View.GONE);
if(mBioDualMode == 1) {
findViewById(R.id.layoutFinger).setVisibility(View.GONE);
findViewById(R.id.layoutFinger1).setVisibility(View.VISIBLE);
findViewById(R.id.layoutFinger2).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.layoutFinger).setVisibility(View.VISIBLE);
findViewById(R.id.layoutFinger1).setVisibility(View.GONE);
findViewById(R.id.layoutFinger2).setVisibility(View.GONE);
}
}
findViewById(R.id.scrollView).postInvalidate();
}
private void menuKeySetting()
{
mIsIntent = false;
@ -474,34 +1200,66 @@ public class MgtUserInfoActivity extends BaseActivity implements RfidManager.re
if(edit.getText().toString().length() > 0)
info.mPassword = edit.getText().toString();
TextView text = (TextView) findViewById(R.id.textViewRfidValue);
if(text.getText().toString().length() > 0)
info.mRFIDCode = text.getText().toString();
if(mRfidDualMode == 1) {
TextView text = (TextView) findViewById(R.id.textViewRfid1Value);
if (text.getText().toString().length() > 0)
info.mRFIDCode = text.getText().toString();
text = (TextView) findViewById(R.id.textViewVeinValue);
if(text.getText().toString().length() > 0) {
info.mVeinTemplate = text.getText().toString();
// if(GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_VEIN) || GlobalInfo.isActivatedMethod(VERIFY_METHOD_VEIN_FACE)) {
// info.mVeinTemplate = text.getText().toString();
// } else if(GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_FINGER_PRINT) || GlobalInfo.isActivatedMethod(VERIFY_METHOD_FINGER_FACE)) {
// info.mFingerTemplate = text.getText().toString();
// }
text = (TextView) findViewById(R.id.textViewRfid2Value);
if (text.getText().toString().length() > 0)
info.mRFIDCode2 = text.getText().toString();
} else {
TextView text = (TextView) findViewById(R.id.textViewRfidValue);
if (text.getText().toString().length() > 0)
info.mRFIDCode = text.getText().toString();
}
text = (TextView) findViewById(R.id.textViewFingerValue);
if(text.getText().toString().length() > 0) {
info.mFingerTemplate = text.getText().toString();
// if(GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_VEIN) || GlobalInfo.isActivatedMethod(VERIFY_METHOD_VEIN_FACE)) {
// info.mVeinTemplate = text.getText().toString();
// } else if(GlobalInfo.isActivatedMethod(GlobalInfo.VERIFY_METHOD_FINGER_PRINT) || GlobalInfo.isActivatedMethod(VERIFY_METHOD_FINGER_FACE)) {
// info.mFingerTemplate = text.getText().toString();
// }
if(mBioDualMode == 1) {
TextView text = (TextView) findViewById(R.id.textViewVein1Value);
if (text.getText().toString().length() > 0) {
info.mVeinTemplate = text.getText().toString();
}
text = (TextView) findViewById(R.id.textViewVein2Value);
if (text.getText().toString().length() > 0) {
info.mVeinTemplate2 = text.getText().toString();
}
} else {
TextView text = (TextView) findViewById(R.id.textViewVeinValue);
if (text.getText().toString().length() > 0) {
info.mVeinTemplate = text.getText().toString();
}
}
text = (TextView) findViewById(R.id.textViewFaceValue);
if(mBioDualMode == 1) {
TextView text = (TextView) findViewById(R.id.textViewFinger1Value);
if (text.getText().toString().length() > 0) {
info.mFingerTemplate = text.getText().toString();
}
text = (TextView) findViewById(R.id.textViewFinger2Value);
if (text.getText().toString().length() > 0) {
info.mFingerTemplate2 = text.getText().toString();
}
} else {
TextView text = (TextView) findViewById(R.id.textViewFingerValue);
if (text.getText().toString().length() > 0) {
info.mFingerTemplate = text.getText().toString();
}
}
TextView text = (TextView) findViewById(R.id.textViewFaceValue);
if(text.getText().toString().length() > 0)
info.mFaceTemplate = FaceManager.hexToByteArray(text.getText().toString().trim());
text = (TextView) findViewById(R.id.textViewPermitDateValue);
if(text.getText().toString().length() > 0)
info.mPermitDate = text.getText().toString().trim();
text = (TextView) findViewById(R.id.textViewPermitTimeValue);
if(text.getText().toString().length() > 0)
info.mPermitTime = text.getText().toString().trim();
int authority = -1;
RadioButton button = (RadioButton)findViewById(R.id.radioButtonAdmin);
if(button.isChecked())
@ -895,8 +1653,18 @@ public class MgtUserInfoActivity extends BaseActivity implements RfidManager.re
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView text = (TextView) findViewById(R.id.textViewRfidValue);
text.setText(value);
if(mRfidDualMode == 1) {
if(mUpdateIndex == 0) {
TextView text = (TextView) findViewById(R.id.textViewRfid1Value);
text.setText(value);
} else {
TextView text = (TextView) findViewById(R.id.textViewRfid2Value);
text.setText(value);
}
} else {
TextView text = (TextView) findViewById(R.id.textViewRfidValue);
text.setText(value);
}
}
});
@ -927,8 +1695,18 @@ public class MgtUserInfoActivity extends BaseActivity implements RfidManager.re
// }
if(status.equals("enroll_success")) {
TextView text = (TextView) findViewById(R.id.textViewVeinValue);
text.setText(value);
if(mBioDualMode == 1) {
if(mUpdateIndex == 0) {
TextView text = (TextView) findViewById(R.id.textViewVein1Value);
text.setText(value);
} else {
TextView text = (TextView) findViewById(R.id.textViewVein2Value);
text.setText(value);
}
} else {
TextView text = (TextView) findViewById(R.id.textViewVeinValue);
text.setText(value);
}
if(mCognitionDialog != null) {
mCognitionDialog.dismiss();
@ -982,10 +1760,18 @@ public class MgtUserInfoActivity extends BaseActivity implements RfidManager.re
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView text = (TextView) findViewById(R.id.textViewFingerValue);
//TextView text = (TextView) findViewById(R.id.textViewVeinValue);
text.setText(fingerCode);
//text.setText("1234567890");
if(mBioDualMode == 1) {
if(mUpdateIndex == 0) {
TextView text = (TextView) findViewById(R.id.textViewFinger1Value);
text.setText(value);
} else {
TextView text = (TextView) findViewById(R.id.textViewFinger2Value);
text.setText(value);
}
} else {
TextView text = (TextView) findViewById(R.id.textViewFingerValue);
text.setText(fingerCode);
}
if(mCognitionDialog != null) {
mCognitionDialog.dismiss();

View File

@ -70,6 +70,16 @@ public class DeviceSettingActivity extends BaseActivity {
}
});
Button deviceidreset = (Button) findViewById(R.id.deviceidreset);
deviceidreset.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
popupDialog(0);
}
});
}
private void menuKeySetting()
@ -106,6 +116,59 @@ public class DeviceSettingActivity extends BaseActivity {
});
}
private void popupDialog(final int mode)
{
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(R.layout.delete_dialog);
TextView textview = (TextView) dialog.findViewById(R.id.dialogtext);
Button buttonConfirm = (Button) dialog.findViewById(R.id.buttonConfirm);
Button buttonCancel = (Button) dialog.findViewById(R.id.buttonCancel);
if (mode == 0) {
textview.setText(R.string.mgt_reset);
textview.setVisibility(View.VISIBLE);
buttonConfirm.setText(R.string.dialog_ok);
buttonConfirm.setTextColor(Color.parseColor("#00816D"));
} else if (mode == 1) {
textview.setText(R.string.mgt_save);
textview.setVisibility(View.VISIBLE);
buttonConfirm.setText(R.string.dialog_save);
buttonConfirm.setTextColor(Color.parseColor("#00816D"));
}
buttonConfirm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
if (mode == 0) {
mDeviceIdText.setText("");
mDeviceNameText.setText("");
GlobalInfo.mDeviceId = "";
GlobalInfo.mDeviceName = "";
GlobalInfo.updateDatabase(GlobalInfo.TARGET_FLAG_DEVICE_INFO);
} else if (mode == 1) {
}
}catch (Exception e)
{
e.printStackTrace();
}finally {
dialog.dismiss();
}
}
});
buttonCancel.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
private void systemPopup(final int mode)
{

View File

@ -0,0 +1,441 @@
package kr.co.enicom.acs.system;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.InputType;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.NumberPicker;
import android.widget.TextView;
import android.widget.Toast;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import kr.co.enicom.acs.BaseActivity;
import kr.co.enicom.acs.GlobalInfo;
import kr.co.enicom.acs.MainActivity;
import kr.co.enicom.acs.R;
import kr.co.enicom.acs.manage.MgtSystemSettingsActivity;
import kr.co.enicom.acs.manage.MgtUserInfoActivity;
public class DoorControlTimeActivity extends BaseActivity {
private ImageView mMenuKey[] = null;
private final int DEVICE_ID_POPUP = 0;
private final int DEVICE_NAME_POPUP = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_door_control_time);
menuKeySetting();
mTimeText = findViewById(R.id.doorcontroltimesettext);
ImageView doorcontroltimeuseimage = (ImageView) findViewById(R.id.doorcontroltimeuseimage);
doorcontroltimeuseimage.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
if(GlobalInfo.mUseDoorControlTime == 0) {
doorcontroltimeuseimage.setImageResource(R.drawable.toggle_pressed);
GlobalInfo.mUseDoorControlTime = 1;
}
else {
GlobalInfo.mUseDoorControlTime = 0;
doorcontroltimeuseimage.setImageResource(R.drawable.toggle_nor);
}
}
});
if(GlobalInfo.mUseDoorControlTime == 0) {
doorcontroltimeuseimage.setImageResource(R.drawable.toggle_nor);
} else {
doorcontroltimeuseimage.setImageResource(R.drawable.toggle_pressed);
}
Button button = (Button) findViewById(R.id.doorcontroltimesetimagebutton) ;
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
// TODO : click event
numberPicker(1);
}
});
updateTimeTextFromGlobal();
}
private void menuKeySetting()
{
mMenuKey = new ImageView[2];
mMenuKey[0] = (ImageView) findViewById(R.id.logincard_title_back) ;
mMenuKey[0].setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(!mIsIntent) {
mIsIntent = true;
Intent intent = new Intent(getApplicationContext(), MgtSystemSettingsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
}
return false;
}
});
mMenuKey[1] = (ImageView) findViewById(R.id.logincard_title_home) ;
mMenuKey[1].setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(!mIsIntent) {
mIsIntent = true;
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
}
return false;
}
});
}
private final int DATE_POPUP = 0;
private final int TIME_POPUP = 1;
private TextView mTimeText = null;
private NumberPicker numberpickeryear = null, numberpickermonth = null, numberpickerday = null;
private NumberPicker numberpickertime = null, numberpickerminute = null, numberpickertime2 = null, numberpickerminute2 = null;
private void setDividerColor(NumberPicker picker, int color){
java.lang.reflect.Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for(java.lang.reflect.Field pf : pickerFields){
if(pf.getName().equals("mSelectionDivider")){
pf.setAccessible(true);
try{
ColorDrawable colorDrawable = new ColorDrawable(color);
pf.set(picker, colorDrawable);
}catch(Exception e)
{
}
break;
}
}
}
public void setSelectedTextColor(NumberPicker np) {
final int count = np.getChildCount();
for(int i = 0; i < count; i++){
View child = np.getChildAt(i);
if(child instanceof EditText){
try{
Field selectorWheelPaintField = np.getClass().getDeclaredField("mSelectorWheelPaint");
selectorWheelPaintField.setAccessible(true);
((EditText) child).setTextSize(42);
((EditText) child).setTextColor(Color.parseColor("#333333"));
np.performClick();
}
catch(NoSuchFieldException e){
}
catch(IllegalArgumentException e){
}
}
}
}
private void numberPicker(final int mode)
{
numberpickeryear = null;
numberpickermonth = null;
numberpickerday = null;
numberpickertime = null;
numberpickerminute = null;
numberpickertime2 = null;
numberpickerminute2 = null;
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
if(mode == DATE_POPUP)
dialog.setContentView(R.layout.date_yyyymmdd_dialog);
else
dialog.setContentView(R.layout.date_hhmm_hhmm_dialog);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Button buttonConfirm = (Button) dialog.findViewById(R.id.buttonConfirm);
Button buttonCancel = (Button) dialog.findViewById(R.id.buttonCancel);
Date currentTime = Calendar.getInstance().getTime();
SimpleDateFormat dayFormat = new SimpleDateFormat("dd", Locale.getDefault());
SimpleDateFormat monthFormat = new SimpleDateFormat("MM", Locale.getDefault());
SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy", Locale.getDefault());
SimpleDateFormat timeFormat = new SimpleDateFormat("HH", Locale.getDefault());
SimpleDateFormat minuteFormat = new SimpleDateFormat("mm", Locale.getDefault());
String year = yearFormat.format(currentTime);
String month = monthFormat.format(currentTime);
String day = dayFormat.format(currentTime);
String time = timeFormat.format(currentTime);
String minute = minuteFormat.format(currentTime);
Calendar maxday = Calendar.getInstance();
maxday.set(Integer.valueOf(year),Integer.valueOf(month) -1,1);
if(mode == DATE_POPUP) {
numberpickeryear = (NumberPicker) dialog.findViewById(R.id.numberpickeryear);
numberpickermonth = (NumberPicker) dialog.findViewById(R.id.numberpickermonth);
numberpickerday = (NumberPicker) dialog.findViewById(R.id.numberpickerday);
numberpickeryear.setMinValue(Integer.valueOf(year) - 1);
numberpickeryear.setMaxValue(Integer.valueOf(year) + 50);
numberpickeryear.setValue(Integer.valueOf(year));
numberpickeryear.setWrapSelectorWheel(false);
numberpickermonth.setMinValue(1);
numberpickermonth.setMaxValue(12);
numberpickermonth.setValue(Integer.valueOf(month));
numberpickermonth.setWrapSelectorWheel(false);
numberpickerday.setMinValue(1);
numberpickerday.setMaxValue(maxday.getActualMaximum(Calendar.DAY_OF_MONTH));
numberpickerday.setValue(Integer.valueOf(day));
numberpickerday.setWrapSelectorWheel(false);
numberpickeryear.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickeryear, android.R.color.white);
setSelectedTextColor(numberpickeryear);
numberpickeryear.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickermonth.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickermonth, android.R.color.white);
setSelectedTextColor(numberpickermonth);
numberpickermonth.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickermonth.setOnScrollListener(new NumberPicker.OnScrollListener() {
@Override
public void onScrollStateChange(NumberPicker view, int scrollState) {
NumberPicker picker = view;
if (scrollState == SCROLL_STATE_IDLE) {
Calendar maxday = Calendar.getInstance();
maxday.set(Integer.valueOf(year), Integer.valueOf(picker.getValue()) - 1, 1);
numberpickerday.setMinValue(1);
numberpickerday.setMaxValue(maxday.getActualMaximum(Calendar.DAY_OF_MONTH));
numberpickerday.setValue(Integer.valueOf(day));
numberpickerday.setWrapSelectorWheel(false);
numberpickerday.invalidate();
}
}
});
numberpickerday.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickerday, android.R.color.white);
setSelectedTextColor(numberpickerday);
numberpickerday.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
}else {
numberpickertime = (NumberPicker) dialog.findViewById(R.id.numberpickerhour);
numberpickerminute = (NumberPicker) dialog.findViewById(R.id.numberpickerminute);
numberpickertime2 = (NumberPicker) dialog.findViewById(R.id.numberpickerhour2);
numberpickerminute2 = (NumberPicker) dialog.findViewById(R.id.numberpickerminute2);
String[] hourValues = new String[24];
String[] minuteValues = new String[60];
for(int i = 0;i < 24;i++) {
hourValues[i] = String.format("%02d", i);
}
for(int i = 0;i < 60;i++) {
minuteValues[i] = String.format("%02d", i);
}
numberpickertime.setMinValue(0);
numberpickertime.setMaxValue(23);
//numberpickertime.setValue(Integer.valueOf(time));
numberpickertime.setDisplayedValues(hourValues);
numberpickertime.setWrapSelectorWheel(false);
numberpickertime.setValue(GlobalInfo.mDoorControlTimeStart / 60);
numberpickerminute.setMinValue(0);
numberpickerminute.setMaxValue(59);
//numberpickerminute.setValue(Integer.valueOf(minute));
numberpickerminute.setDisplayedValues(minuteValues);
numberpickerminute.setWrapSelectorWheel(false);
numberpickerminute.setValue(GlobalInfo.mDoorControlTimeStart % 60);
numberpickertime2.setMinValue(0);
numberpickertime2.setMaxValue(23);
//numberpickertime2.setValue(Integer.valueOf(time));
numberpickertime2.setDisplayedValues(hourValues);
numberpickertime2.setWrapSelectorWheel(false);
numberpickertime2.setValue(GlobalInfo.mDoorControlTimeEnd / 60);
numberpickerminute2.setMinValue(0);
numberpickerminute2.setMaxValue(59);
//numberpickerminute2.setValue(Integer.valueOf(minute));
numberpickerminute2.setDisplayedValues(minuteValues);
numberpickerminute2.setWrapSelectorWheel(false);
numberpickerminute2.setValue(GlobalInfo.mDoorControlTimeEnd % 60);
numberpickertime.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickertime, android.R.color.white);
setSelectedTextColor(numberpickertime);
numberpickertime2.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickertime2, android.R.color.white);
setSelectedTextColor(numberpickertime2);
numberpickertime.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickertime2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickerminute.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickerminute, android.R.color.white);
setSelectedTextColor(numberpickerminute);
numberpickerminute.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
numberpickerminute2.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
setDividerColor(numberpickerminute2, android.R.color.white);
setSelectedTextColor(numberpickerminute2);
numberpickerminute2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
setSelectedTextColor(picker);
}
});
}
buttonConfirm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try{
if(mode == 0) {
dialog.dismiss();
} else {
if(numberpickertime.getValue() * 60 + numberpickerminute.getValue() >= numberpickertime2.getValue() * 60 + numberpickerminute2.getValue()) {
Toast.makeText(DoorControlTimeActivity.this, "종료시간이 더 커야 합니다.", Toast.LENGTH_SHORT).show();
return;
}
GlobalInfo.mDoorControlTimeStart = numberpickertime.getValue() * 60 + numberpickerminute.getValue();
GlobalInfo.mDoorControlTimeEnd = numberpickertime2.getValue() * 60 + numberpickerminute2.getValue();
// mTimeText.setText(String.format("%02d:%02d ~ %02d:%02d",
// numberpickertime.getValue(), numberpickerminute.getValue(), numberpickertime2.getValue(), numberpickerminute2.getValue()));
updateTimeTextFromGlobal();
dialog.dismiss();
}
}catch (Exception e)
{
e.printStackTrace();
}
}
});
buttonCancel.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
void updateTimeTextFromGlobal() {
mTimeText.setText(String.format("%02d:%02d ~ %02d:%02d",
GlobalInfo.mDoorControlTimeStart / 60, GlobalInfo.mDoorControlTimeStart % 60, GlobalInfo.mDoorControlTimeEnd / 60, GlobalInfo.mDoorControlTimeEnd % 60));
}
@Override
protected void onStart() {
//checkVerify();
//refresh();
View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE;
decorView.setSystemUiVisibility(uiOptions);
super.onStart();
}
@Override
public void onPause() {
GlobalInfo.updateDatabase(GlobalInfo.TARGET_FLAG_DEVICE_INFO);
super.onPause();
}
@Override
public void finish() {
super.finish();
Intent intent = new Intent(DoorControlTimeActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
//intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
}
}

View File

@ -155,6 +155,73 @@ public class ServerSettingActivity extends BaseActivity {
doServerTest(GlobalInfo.mServerAddressSlave, GlobalInfo.mServerPortSlave);
}
});
Button serverreset = (Button) findViewById(R.id.serverreset);
serverreset.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
popupDialog(0);
}
});
}
private void popupDialog(final int mode)
{
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(R.layout.delete_dialog);
TextView textview = (TextView) dialog.findViewById(R.id.dialogtext);
Button buttonConfirm = (Button) dialog.findViewById(R.id.buttonConfirm);
Button buttonCancel = (Button) dialog.findViewById(R.id.buttonCancel);
if (mode == 0) {
textview.setText(R.string.mgt_reset);
textview.setVisibility(View.VISIBLE);
buttonConfirm.setText(R.string.dialog_ok);
buttonConfirm.setTextColor(Color.parseColor("#00816D"));
} else if (mode == 1) {
textview.setText(R.string.mgt_save);
textview.setVisibility(View.VISIBLE);
buttonConfirm.setText(R.string.dialog_save);
buttonConfirm.setTextColor(Color.parseColor("#00816D"));
}
buttonConfirm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
try {
if (mode == 0) {
mServer1IpText.setText("");
mServer1PostText.setText("");
mServer2IpText.setText("");
mServer2PostText.setText("");
GlobalInfo.mServerAddress = "";
GlobalInfo.mServerPort = 0;
GlobalInfo.mServerAddressSlave = "";
GlobalInfo.mServerPortSlave = 0;
GlobalInfo.updateDatabase(GlobalInfo.TARGET_FLAG_SERVER_INFO);
} else if (mode == 1) {
}
}catch (Exception e)
{
e.printStackTrace();
}finally {
dialog.dismiss();
}
}
});
buttonCancel.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
private void menuKeySetting()

View File

@ -28,3 +28,9 @@ target_link_libraries(ritoutil
ncnn
lib_opencv
)
add_library(serialutil SHARED serial_jni.cpp)
target_include_directories(serialutil PRIVATE libyuv/include)
target_link_libraries(serialutil)

View File

@ -2544,3 +2544,7 @@ Java_kr_co_enicom_acs_Camera2APIs_ARGBScaleEx(
return
ret;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="25px"
/>
<solid
android:color="#66000000"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="960px"
android:height="412px"
/>
</shape>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/workin_btn_pressed" /> <!-- pressed -->
<item android:drawable="@drawable/workin_btn_nor" /> <!-- default -->
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/worout_btn_pressed" /> <!-- pressed -->
<item android:drawable="@drawable/worout_btn_nor" /> <!-- default -->
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

View File

@ -144,6 +144,41 @@
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_device_id_reset_text"
android:textColor="#117ef8"
android:textSize="42px" />
<TextView
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<Button
android:id="@+id/deviceidreset"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

View File

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".system.ServerSettingActivity">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="0dp"
android:layout_height="94px"
android:background="@drawable/title_bar"
app:layout_constraintEnd_toEndOf="@+id/frameLayout2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/logincard_title_back"
android:layout_width="43px"
android:layout_height="45px"
android:layout_marginStart="44px"
android:layout_marginTop="28px"
app:srcCompat="@drawable/title_back_icon" />
<ImageView
android:id="@+id/logincard_title_home"
android:layout_width="61px"
android:layout_height="50px"
android:layout_marginStart="140px"
android:layout_marginTop="25px"
app:srcCompat="@drawable/title_home_icon" />
<TextView
android:id="@+id/title_menu"
android:layout_width="280px"
android:layout_height="55px"
android:layout_marginStart="528px"
android:layout_marginTop="20px"
android:alpha="1"
android:fontFamily="@font/nanumbarungothicbold"
android:text="@string/mgt_system_door_control_time_text"
android:textColor="#ffffff"
android:textSize="48px"
android:textStyle="bold" />
</FrameLayout>
<LinearLayout
android:id="@+id/frameLayout2"
android:layout_width="1280px"
android:layout_height="626px"
android:layout_marginTop="94px"
android:orientation="vertical"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/frameLayout">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_door_control_time_use_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/deviceidtext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<ImageView
android:layout_width="19px"
android:layout_height="38px"
android:layout_marginStart="1217px"
android:layout_marginTop="27px"
app:srcCompat="@drawable/list_arrow_icon" />
<ImageView
android:id="@+id/doorcontroltimeuseimage"
android:layout_width="105px"
android:layout_height="56px"
android:layout_marginStart="1135px"
android:layout_marginTop="20px"
app:srcCompat="@drawable/toggle_pressed" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_door_control_time_set_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/doorcontroltimesettext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<ImageView
android:id="@+id/doorcontroltimesetimage"
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<Button
android:id="@+id/doorcontroltimesetimagebutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

View File

@ -74,6 +74,8 @@
android:visibility="invisible" />
</FrameLayout>
<FrameLayout
android:id="@+id/mainLayout"
android:layout_width="1280px"
@ -83,6 +85,7 @@
app:layout_constraintStart_toStartOf="@+id/maintopLayout"
app:layout_constraintTop_toTopOf="@+id/maintopLayout">
<Button
android:id="@+id/settingbutton"
android:layout_width="95px"
@ -91,6 +94,50 @@
android:layout_marginTop="481px"
android:background="@drawable/admin_icon_btn" />
<Button
android:id="@+id/workinbutton"
android:layout_width="300px"
android:layout_height="210px"
android:layout_marginStart="950px"
android:layout_marginTop="30px"
android:fontFamily="@font/nanumbarungothicbold"
android:textColor="#ffffff"
android:paddingTop="80px"
android:textSize="40px"
android:text = "@string/main_attendance_in"
android:background="@drawable/workin_btn"
android:visibility="invisible" />
<Button
android:id="@+id/workoutbutton"
android:layout_width="300px"
android:layout_height="210px"
android:layout_marginStart="950px"
android:layout_marginTop="246px"
android:fontFamily="@font/nanumbarungothicbold"
android:textColor="#ffffff"
android:paddingTop="80px"
android:textSize="40px"
android:text = "@string/main_attendance_out"
android:background="@drawable/workout_btn"
android:visibility="invisible" />
<Button
android:id="@+id/attendancebutton"
android:layout_width="280px"
android:layout_height="402px"
android:layout_marginStart="960px"
android:layout_marginTop="44px"
android:fontFamily="@font/nanumbarungothicbold"
android:textColor="#ffffff"
android:paddingTop="85px"
android:paddingBottom="70px"
android:textSize="40px"
android:drawableTop="@drawable/workin_icon_76"
android:text = "@string/main_attendance_mode_in"
android:background="@drawable/button_shape_attendance"
android:visibility="invisible" />
<ImageView
android:id="@+id/mainloginveinimage"
android:layout_width="585px"
@ -143,7 +190,7 @@
android:layout_marginStart="49px"
android:layout_marginTop="493px"
android:background="@drawable/title_back_icon"
android:visibility="invisible"/>
android:visibility="invisible" />
<ImageView
android:id="@+id/mainloginfacebg"
@ -178,6 +225,44 @@
android:textScaleX="0.857"
android:textSize="35px" />
<FrameLayout
android:id="@+id/doorcontrolframe"
android:layout_width="960px"
android:layout_height="412px"
android:layout_marginLeft="160px"
android:layout_marginTop="90px"
android:visibility="invisible"
android:background="@drawable/panel_shape_door_control"
>
<TextView
android:id="@+id/doorcontroltimetext"
android:layout_width="match_parent"
android:layout_height="110px"
android:layout_marginTop="106px"
android:gravity="center_horizontal"
android:fontFamily="@font/pretendardbold"
android:text=""
android:textStyle="bold"
android:textColor="#ffe600"
android:textSize="92px" />
<TextView
android:id="@+id/doorcontrolmsgtext"
android:layout_width="match_parent"
android:layout_height="110px"
android:layout_marginTop="224px"
android:gravity="center_horizontal"
android:fontFamily="@font/pretendardsemibold"
android:text="현재는 출입문 개방시간입니다."
android:textColor="#ffffff"
android:textSize="56px" />
</FrameLayout>
</FrameLayout>
<!--
@ -272,6 +357,8 @@
android:layout_marginTop="2dp"
android:text="LED Blue"
android:textAllCaps="false" />
</FrameLayout>

View File

@ -12,7 +12,6 @@
android:layout_width="0dp"
android:layout_height="94px"
android:background="@drawable/title_bar"
app:layout_constraintEnd_toEndOf="@+id/frameLayout2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@ -47,252 +46,298 @@
android:textStyle="bold" />
</FrameLayout>
<LinearLayout
android:id="@+id/frameLayout2"
android:layout_width="1280px"
android:layout_height="626px"
<ScrollView
android:id="@+id/systemsettinglayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="94px"
android:orientation="vertical"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/frameLayout">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<LinearLayout
android:id="@+id/frameLayout2"
android:layout_width="1280px"
android:layout_height="626px"
android:orientation="vertical"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/frameLayout">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server1_ip_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/server1iptext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<Button
android:id="@+id/server1ipbutton"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
android:layout_height="94px"
android:background="@drawable/layout_border">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server1_port_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/server1porttext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server1_ip_text"
android:textColor="#333333"
android:textSize="42px" />
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<TextView
android:id="@+id/server1iptext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<Button
android:id="@+id/server1portbutton"
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<Button
android:id="@+id/server1ipbutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
android:layout_height="94px"
android:background="@drawable/layout_border">
</FrameLayout>
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server1_port_text"
android:textColor="#333333"
android:textSize="42px" />
<!-- Server 1 Check PING, Socket -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server1_check_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/server1porttext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_arrow_icon" />
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<Button
android:id="@+id/server1checkbutton"
<Button
android:id="@+id/server1portbutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
<!-- Server 1 Check PING, Socket -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
android:layout_height="94px"
android:background="@drawable/layout_border">
</FrameLayout>
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server1_check_text"
android:textColor="#333333"
android:textSize="42px" />
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_arrow_icon" />
<Button
android:id="@+id/server1checkbutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server2_ip_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/server2iptext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<Button
android:id="@+id/server2ipbutton"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
android:layout_height="94px"
android:background="@drawable/layout_border">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server2_port_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/server2porttext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server2_ip_text"
android:textColor="#333333"
android:textSize="42px" />
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<TextView
android:id="@+id/server2iptext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<Button
android:id="@+id/server2portbutton"
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<Button
android:id="@+id/server2ipbutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
android:layout_height="94px"
android:background="@drawable/layout_border">
</FrameLayout>
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server2_port_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/server2porttext"
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<!-- Server 2 Check PING, Socket -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_edit_icon" />
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server2_check_text"
android:textColor="#333333"
android:textSize="42px" />
<Button
android:id="@+id/server2portbutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_arrow_icon" />
<Button
android:id="@+id/server2checkbutton"
<!-- Server 2 Check PING, Socket -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server2_check_text"
android:textColor="#333333"
android:textSize="42px" />
<ImageView
android:layout_width="44px"
android:layout_height="42px"
android:layout_marginStart="1193px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_arrow_icon" />
<Button
android:id="@+id/server2checkbutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<TextView
android:layout_width="400px"
android:layout_height="150px"
android:layout_marginStart="40px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_server_reset_text"
android:textColor="#117ef8"
android:textSize="42px" />
<TextView
android:layout_width="386px"
android:layout_height="144px"
android:layout_marginStart="778px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<Button
android:id="@+id/serverreset"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
</LinearLayout>
</ScrollView>
</FrameLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

View File

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="851px"
android:layout_height="399px"
android:background="@drawable/layout_dialog_border">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="280px"
android:orientation="horizontal">
<Space
android:layout_width="80px"
android:layout_height="match_parent"/>
<LinearLayout
android:layout_width="300px"
android:layout_height="280px"
android:orientation="horizontal">
<NumberPicker
android:id="@+id/numberpickerhour"
android:layout_width="70px"
android:layout_height="match_parent"
android:layout_marginStart="40px"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:theme="@style/numberPickerCustomSize">
</NumberPicker>
<TextView
android:layout_width="60px"
android:layout_height="match_parent"
android:layout_marginTop="126px"
android:layout_marginStart="50px"
android:visibility="visible"
android:background="#00000000"
android:fontFamily="@font/nanumbarungothic"
android:text=":"
android:textColor="#333333"
android:textSize="50px" />
<NumberPicker
android:id="@+id/numberpickerminute"
android:layout_width="70px"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:theme="@style/numberPickerCustomSize">
</NumberPicker>
</LinearLayout>
<TextView
android:layout_width="50px"
android:layout_height="match_parent"
android:layout_marginTop="126px"
android:layout_marginStart="20px"
android:visibility="visible"
android:background="#00000000"
android:fontFamily="@font/nanumbarungothic"
android:text="~"
android:textColor="#333333"
android:textSize="50px" />
<LinearLayout
android:layout_width="300px"
android:layout_height="280px"
android:orientation="horizontal">
<NumberPicker
android:id="@+id/numberpickerhour2"
android:layout_width="70px"
android:layout_height="match_parent"
android:layout_marginStart="20px"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:theme="@style/numberPickerCustomSize">
</NumberPicker>
<TextView
android:layout_width="60px"
android:layout_height="match_parent"
android:layout_marginTop="126px"
android:layout_marginStart="50px"
android:visibility="visible"
android:background="#00000000"
android:fontFamily="@font/nanumbarungothic"
android:text=":"
android:textColor="#333333"
android:textSize="50px" />
<NumberPicker
android:id="@+id/numberpickerminute2"
android:layout_width="70px"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:theme="@style/numberPickerCustomSize">
</NumberPicker>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
<Button
android:id="@+id/buttonCancel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:background="@drawable/button_border_topleft"
android:alpha="1"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/dialog_cancle"
android:textColor="#333333"
android:textSize="50px" />
<Button
android:id="@+id/buttonConfirm"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:background="@drawable/button_border_topright"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/dialog_ok"
android:textColor="#00816D"
android:textSize="50px" />
</LinearLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="851px"
android:layout_height="399px"
android:background="@drawable/layout_dialog_border">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/editstartdate"
android:layout_width="326px"
android:layout_height="120px"
android:layout_marginStart="45px"
android:layout_marginTop="90px"
android:background="@drawable/edittext_border"
android:fontFamily="@font/nanumbarungothic"
android:gravity="center"
android:lines="2"
android:minLines="2"
android:scrollbars="vertical"
android:textColor="#333333"
android:textSize="42px"
android:visibility="visible" />
<Button
android:id="@+id/editstartdatebutton"
android:layout_width="326px"
android:layout_height="120px"
android:layout_marginStart="45px"
android:layout_marginTop="90px"
android:background="#00000000" />
<TextView
android:layout_width="28px"
android:layout_height="49px"
android:layout_marginStart="412px"
android:layout_marginTop="134px"
android:background="@null"
android:fontFamily="@font/nanumbarungothic"
android:gravity="center"
android:text="~"
android:textColor="#333333"
android:textSize="50px"
android:visibility="visible" />
<TextView
android:id="@+id/editenddate"
android:layout_width="326px"
android:layout_height="120px"
android:layout_marginStart="480px"
android:layout_marginTop="90px"
android:background="@drawable/edittext_border"
android:fontFamily="@font/nanumbarungothic"
android:gravity="center"
android:lines="2"
android:minLines="2"
android:scrollbars="vertical"
android:textColor="#333333"
android:textSize="42px"
android:visibility="visible" />
<Button
android:id="@+id/editenddatebutton"
android:layout_width="326px"
android:layout_height="120px"
android:layout_marginStart="480px"
android:layout_marginTop="90px"
android:background="#00000000" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="120px"
android:layout_marginTop="140px"
android:layout_gravity="center"
android:background="#00000000"
android:orientation="horizontal">
<Button
android:id="@+id/buttonCancel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/numberpicker"
android:layout_weight="1"
android:alpha="1"
android:background="@drawable/button_border_topleft"
android:fontFamily="@font/nanumbarungothic"
android:gravity="center"
android:text="@string/dialog_cancle"
android:textColor="#333333"
android:textSize="42px" />
<Button
android:id="@+id/buttonConfirm"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/button_border_topright"
android:fontFamily="@font/nanumbarungothic"
android:gravity="center"
android:text="@string/dialog_ok"
android:textColor="#00816D"
android:textSize="42px" />
</LinearLayout>
</FrameLayout>
<!-- <FrameLayout-->
<!-- android:id="@+id/layouttitle"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="82px"-->
<!-- android:visibility="visible">-->
<!-- <TextView-->
<!-- android:id="@+id/dialogtitle"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:background="@drawable/layout_border_top"-->
<!-- android:fontFamily="@font/nanumbarungothicbold"-->
<!-- android:gravity="center"-->
<!-- android:text=""-->
<!-- android:textColor="#FFFFFF"-->
<!-- android:textSize="42px" />-->
<!-- <ImageButton-->
<!-- android:id="@+id/dialogcancle"-->
<!-- android:layout_width="27px"-->
<!-- android:layout_height="27px"-->
<!-- android:layout_marginStart="798px"-->
<!-- android:layout_marginTop="25px"-->
<!-- android:background="@drawable/title_close_icon" />-->
<!-- </FrameLayout>-->
</android.support.constraint.ConstraintLayout>

View File

@ -88,6 +88,7 @@
android:layout_gravity="right"
android:gravity="center_vertical"
android:layout_marginRight="46px">
<ImageView
android:id="@+id/imageMethodRfid"
android:layout_width="68px"
@ -117,19 +118,29 @@
android:layout_height="15px"
android:layout_marginLeft="29px"
android:background="@drawable/list_success_icon" />
<TextView
android:id="@+id/logResult"
android:layout_width="95px"
android:layout_height="49px"
android:layout_marginLeft="24px"
android:textColor="#1DAE17"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"
android:alpha="1"/>
</LinearLayout>
<!--
<TextView
android:id="@+id/logResult"
android:layout_width="95px"
android:layout_height="49px"
android:layout_marginStart="1165px"
android:layout_marginTop="24px"
android:textColor="#1DAE17"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"
android:alpha="1"/>
-->
<!-- <TextView-->
<!-- android:id="@+id/logResult"-->
<!-- android:layout_width="95px"-->
<!-- android:layout_height="49px"-->
<!-- android:layout_marginStart="1165px"-->
<!-- android:layout_marginTop="24px"-->
<!-- android:textColor="#1DAE17"-->
<!-- android:textSize="42px"-->
<!-- android:fontFamily="@font/nanumbarungothic"-->
<!-- android:alpha="1"/>-->
</FrameLayout>
</kr.co.enicom.acs.CheckableLinearLayout>

View File

@ -319,6 +319,48 @@
android:background="#00000000" />
</FrameLayout>
<!-- 근태 이력 삭제 -->
<FrameLayout
android:id="@+id/dataattendance"
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<ImageView
android:id="@+id/dataattendanceimage"
android:layout_width="60px"
android:layout_height="60px"
android:layout_marginStart="40px"
android:layout_marginTop="17px"
app:srcCompat="@drawable/setting_list_icon_attendance" />
<TextView
android:layout_width="370px"
android:layout_height="425px"
android:layout_marginStart="140px"
android:layout_marginTop="25px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_data_attendance_text"
android:textColor="#333333"
android:textSize="42px" />
<ImageView
android:layout_width="19px"
android:layout_height="38px"
android:layout_marginStart="1217px"
android:layout_marginTop="26px"
app:srcCompat="@drawable/list_arrow_icon" />
<Button
android:id="@+id/dataattendancebutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

View File

@ -132,6 +132,47 @@
android:background="#00000000" />
</FrameLayout>
<FrameLayout
android:id="@+id/logattendance"
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<ImageView
android:id="@+id/logattendanceimage"
android:layout_width="60px"
android:layout_height="60px"
android:layout_marginStart="40px"
android:layout_marginTop="17px"
app:srcCompat="@drawable/setting_list_icon_attendance" />
<TextView
android:id="@+id/logattendancetext"
android:layout_width="159px"
android:layout_height="150px"
android:layout_marginStart="140px"
android:layout_marginTop="29px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_log_attendance_text"
android:textColor="#333333"
android:textSize="42px" />
<ImageView
android:layout_width="19px"
android:layout_height="38px"
android:layout_marginStart="1217px"
android:layout_marginTop="29px"
app:srcCompat="@drawable/list_arrow_icon" />
<Button
android:id="@+id/logattendancebutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
</LinearLayout>

View File

@ -220,6 +220,46 @@
android:background="#00000000" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<ImageView
android:id="@+id/datadoorcontroltimeimage"
android:layout_width="60px"
android:layout_height="60px"
android:layout_marginStart="40px"
android:layout_marginTop="17px"
app:srcCompat="@drawable/setting_list_icon_door_control" />
<TextView
android:layout_width="370px"
android:layout_height="425px"
android:layout_marginStart="140px"
android:layout_marginTop="25px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_door_control_time_text"
android:textColor="#333333"
android:textSize="42px" />
<ImageView
android:layout_width="19px"
android:layout_height="38px"
android:layout_marginStart="1217px"
android:layout_marginTop="27px"
app:srcCompat="@drawable/list_arrow_icon" />
<Button
android:id="@+id/datadoorcontroltimebutton"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
@ -267,8 +307,68 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000" />
<FrameLayout
android:id="@+id/updatelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/update_layout"
android:visibility="invisible"></FrameLayout>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:background="@drawable/layout_border">
<ImageView
android:id="@+id/attendanceimage"
android:layout_width="60px"
android:layout_height="60px"
android:layout_marginStart="40px"
android:layout_marginTop="17px"
app:srcCompat="@drawable/setting_list_icon_attendance" />
<TextView
android:layout_width="370px"
android:layout_height="425px"
android:layout_marginStart="140px"
android:layout_marginTop="25px"
android:fontFamily="@font/nanumbarungothic"
android:text="@string/mgt_system_attendance_text"
android:textColor="#333333"
android:textSize="42px" />
<TextView
android:id="@+id/attendancetext"
android:layout_width="286px"
android:layout_height="94px"
android:layout_marginStart="878px"
android:layout_marginTop="29px"
android:textAlignment="viewEnd"
android:fontFamily="@font/nanumbarungothic"
android:textColor="#666666"
android:textSize="42px" />
<ImageView
android:layout_width="19px"
android:layout_height="38px"
android:layout_marginStart="1217px"
android:layout_marginTop="27px"
app:srcCompat="@drawable/list_arrow_icon" />
<ImageView
android:id="@+id/systemattendanceimage"
android:layout_width="105px"
android:layout_height="56px"
android:layout_marginStart="1135px"
android:layout_marginTop="20px"
app:srcCompat="@drawable/toggle_pressed" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
@ -955,12 +1055,4 @@
</LinearLayout>
</ScrollView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/updatelayout"
android:background="@drawable/update_layout"
android:visibility="invisible">
</FrameLayout>
</android.support.constraint.ConstraintLayout>

View File

@ -56,6 +56,7 @@
</FrameLayout>
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
@ -261,6 +262,7 @@
</LinearLayout>
<LinearLayout
android:id="@+id/layoutRfid"
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal">
@ -293,9 +295,17 @@
android:textSize="36px"
android:paddingStart="38px"/>
<ImageButton
android:id="@+id/buttonAddRfid"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/add_btn" />
<Button
android:id="@+id/buttonSetRfid"
android:layout_width="197px"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
@ -307,6 +317,121 @@
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutRfid1"
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewRfid1"
android:layout_width="243px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/mgt_userinfo_text_rfid1"
android:textColor="#999999"
android:background="#00000000"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"/>
<FrameLayout
android:id="@+id/layouttextViewRfid1Value"
android:layout_width="match_parent"
android:layout_height="94px"
android:gravity="center_vertical"
android:background="@drawable/layout_user_border">
<TextView
android:id="@+id/textViewRfid1Value"
android:layout_width="665px"
android:layout_height="match_parent"
android:fontFamily="@font/nanumbarungothic"
android:gravity="center_vertical"
android:textColor="#333333"
android:textSize="36px"
android:paddingStart="38px"/>
<ImageButton
android:id="@+id/buttonDeleteRfid1"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/del_btn" />
<Button
android:id="@+id/buttonSetRfid1"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
android:textSize="42px"
android:text="@string/mgt_userinfo_text_setrfid"
android:fontFamily="@font/nanumbarungothic"
android:layout_gravity="center_vertical|right"/>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutRfid2"
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewRfid2"
android:layout_width="243px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/mgt_userinfo_text_rfid2"
android:textColor="#999999"
android:background="#00000000"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"/>
<FrameLayout
android:id="@+id/layouttextViewRfid2Value"
android:layout_width="match_parent"
android:layout_height="94px"
android:gravity="center_vertical"
android:background="@drawable/layout_user_border">
<TextView
android:id="@+id/textViewRfid2Value"
android:layout_width="665px"
android:layout_height="match_parent"
android:fontFamily="@font/nanumbarungothic"
android:gravity="center_vertical"
android:textColor="#333333"
android:textSize="36px"
android:paddingStart="38px"/>
<ImageButton
android:id="@+id/buttonDeleteRfid2"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/del_btn" />
<Button
android:id="@+id/buttonSetRfid2"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
android:textSize="42px"
android:text="@string/mgt_userinfo_text_setrfid"
android:fontFamily="@font/nanumbarungothic"
android:layout_gravity="center_vertical|right"/>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutVein"
android:layout_width="match_parent"
@ -343,9 +468,17 @@
android:fontFamily="@font/nanumbarungothic"
android:paddingStart="38px"/>
<ImageButton
android:id="@+id/buttonAddVein"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/add_btn" />
<Button
android:id="@+id/buttonSetVein"
android:layout_width="197px"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
@ -358,6 +491,124 @@
</LinearLayout>
<LinearLayout
android:id="@+id/layoutVein1"
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewVein1"
android:layout_width="243px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/mgt_userinfo_text_vein1"
android:textColor="#999999"
android:background="#00000000"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"/>
<FrameLayout
android:id="@+id/layouttextViewVein1Value"
android:layout_width="match_parent"
android:layout_height="94px"
android:gravity="center_vertical"
android:background="@drawable/layout_user_border">
<TextView
android:id="@+id/textViewVein1Value"
android:layout_width="665px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:ellipsize="end"
android:singleLine="true"
android:textColor="#333333"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"
android:paddingStart="38px"/>
<ImageButton
android:id="@+id/buttonDeleteVein1"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/del_btn" />
<Button
android:id="@+id/buttonSetVein1"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
android:textSize="42px"
android:text="@string/mgt_userinfo_text_setrfid"
android:fontFamily="@font/nanumbarungothic"
android:layout_gravity="center_vertical|right"/>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutVein2"
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewVein2"
android:layout_width="243px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/mgt_userinfo_text_vein2"
android:textColor="#999999"
android:background="#00000000"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"/>
<FrameLayout
android:id="@+id/layouttextViewVein2Value"
android:layout_width="match_parent"
android:layout_height="94px"
android:gravity="center_vertical"
android:background="@drawable/layout_user_border">
<TextView
android:id="@+id/textViewVein2Value"
android:layout_width="665px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:ellipsize="end"
android:singleLine="true"
android:textColor="#333333"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"
android:paddingStart="38px"/>
<ImageButton
android:id="@+id/buttonDeleteVein2"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/del_btn" />
<Button
android:id="@+id/buttonSetVein2"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
android:textSize="42px"
android:text="@string/mgt_userinfo_text_setrfid"
android:fontFamily="@font/nanumbarungothic"
android:layout_gravity="center_vertical|right"/>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutFinger"
android:layout_width="match_parent"
@ -394,9 +645,75 @@
android:paddingStart="38px"
android:fontFamily="@font/nanumbarungothic"/>
<ImageButton
android:id="@+id/buttonAddFinger"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/add_btn" />
<Button
android:id="@+id/buttonSetFinger"
android:layout_width="197px"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
android:textSize="42px"
android:text="@string/mgt_userinfo_text_setrfid"
android:fontFamily="@font/nanumbarungothic"
android:layout_gravity="center_vertical|right"/>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutFinger1"
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewFinger1"
android:layout_width="243px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/mgt_userinfo_text_finger1"
android:textColor="#999999"
android:background="#00000000"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"/>
<FrameLayout
android:id="@+id/layouttextViewFinger1Value"
android:layout_width="match_parent"
android:layout_height="94px"
android:gravity="center_vertical"
android:background="@drawable/layout_user_border">
<TextView
android:id="@+id/textViewFinger1Value"
android:layout_width="665px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:ellipsize="end"
android:singleLine="true"
android:textColor="#333333"
android:textSize="42px"
android:paddingStart="38px"
android:fontFamily="@font/nanumbarungothic"/>
<ImageButton
android:id="@+id/buttonDeleteFinger1"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/del_btn" />
<Button
android:id="@+id/buttonSetFinger1"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
@ -407,12 +724,69 @@
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutFinger2"
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewFinger2"
android:layout_width="243px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/mgt_userinfo_text_finger2"
android:textColor="#999999"
android:background="#00000000"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"/>
<FrameLayout
android:id="@+id/layouttextViewFinger2Value"
android:layout_width="match_parent"
android:layout_height="94px"
android:gravity="center_vertical"
android:background="@drawable/layout_user_border">
<TextView
android:id="@+id/textViewFinger2Value"
android:layout_width="665px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:ellipsize="end"
android:singleLine="true"
android:textColor="#333333"
android:textSize="42px"
android:paddingStart="38px"
android:fontFamily="@font/nanumbarungothic"/>
<ImageButton
android:id="@+id/buttonDeleteFinger2"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="710px"
android:layout_marginTop="10px"
android:background="@drawable/del_btn" />
<Button
android:id="@+id/buttonSetFinger2"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
android:textSize="42px"
android:text="@string/mgt_userinfo_text_setrfid"
android:fontFamily="@font/nanumbarungothic"
android:layout_gravity="center_vertical|right"/>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/layoutFace"
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal"
android:layout_marginBottom="20px">
android:orientation="horizontal">
<TextView
android:id="@+id/textViewface"
@ -446,7 +820,7 @@
<Button
android:id="@+id/buttonSetFace"
android:layout_width="197px"
android:layout_width="148px"
android:layout_height="70px"
android:background="#666666"
android:textColor="#ffffff"
@ -458,6 +832,103 @@
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewPermitDate"
android:layout_width="243px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/mgt_userinfo_text_permit_date"
android:textColor="#999999"
android:background="#00000000"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:gravity="center_vertical"
android:background="@drawable/layout_user_border">
<TextView
android:id="@+id/textViewPermitDateValue"
android:layout_width="665px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:ellipsize="end"
android:singleLine="true"
android:textColor="#333333"
android:textSize="42px"
android:paddingStart="38px"
android:fontFamily="@font/nanumbarungothic"/>
<Button
android:id="@+id/buttonSetPermitDate"
android:layout_width="148px"
android:layout_height="70px"
android:background="#298BEC"
android:textColor="#ffffff"
android:textSize="42px"
android:text="@string/mgt_userinfo_text_modify"
android:fontFamily="@font/nanumbarungothic"
android:layout_gravity="center_vertical|right"/>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:orientation="horizontal"
android:layout_marginBottom="20px">
<TextView
android:id="@+id/textViewPermitTime"
android:layout_width="243px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/mgt_userinfo_text_permit_time"
android:textColor="#999999"
android:background="#00000000"
android:textSize="42px"
android:fontFamily="@font/nanumbarungothic"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="94px"
android:gravity="center_vertical"
android:background="@drawable/layout_user_border">
<TextView
android:id="@+id/textViewPermitTimeValue"
android:layout_width="665px"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:ellipsize="end"
android:singleLine="true"
android:textColor="#333333"
android:textSize="42px"
android:paddingStart="38px"
android:fontFamily="@font/nanumbarungothic"/>
<Button
android:id="@+id/buttonSetPermitTime"
android:layout_width="148px"
android:layout_height="70px"
android:background="#298BEC"
android:textColor="#ffffff"
android:textSize="42px"
android:text="@string/mgt_userinfo_text_modify"
android:fontFamily="@font/nanumbarungothic"
android:layout_gravity="center_vertical|right"/>
</FrameLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>

View File

@ -38,7 +38,10 @@
<string name="main_network_success">네트워크 정상</string>
<string name="main_network_fail">네트워크 오류</string>
<string name="main_attendance_in">출근</string>
<string name="main_attendance_out">퇴근</string>
<string name="main_attendance_mode_in">출근모드\n입니다.</string>
<string name="main_attendance_mode_out">퇴근모드\n입니다.</string>
<string name="title_activity_login">Sign in</string>
<string name="prompt_email">Email</string>
@ -85,10 +88,19 @@
<string name="mgt_userinfo_text_user">" User"</string>
<string name="mgt_userinfo_text_password">"Password"</string>
<string name="mgt_userinfo_text_rfid">"RFID"</string>
<string name="mgt_userinfo_text_rfid1">"RFID1"</string>
<string name="mgt_userinfo_text_rfid2">"RFID2"</string>
<string name="mgt_userinfo_text_vein">"지정맥"</string>
<string name="mgt_userinfo_text_vein1">"지정맥1"</string>
<string name="mgt_userinfo_text_vein2">"지정맥2"</string>
<string name="mgt_userinfo_text_finger">"지문"</string>
<string name="mgt_userinfo_text_finger1">"지문1"</string>
<string name="mgt_userinfo_text_finger2">"지문2"</string>
<string name="mgt_userinfo_text_face">"얼굴"</string>
<string name="mgt_userinfo_text_permit_date">"출입기간"</string>
<string name="mgt_userinfo_text_permit_time">"출입시간"</string>
<string name="mgt_userinfo_text_setrfid">"인식"</string>
<string name="mgt_userinfo_text_modify">"수정"</string>
<string name="mgt_userinfo_search_text"> Search</string>
<string name="mgt_userinfo_id_text">ID :</string>
@ -149,6 +161,7 @@
<string name="mgt_data_user_text">"사용자 데이터 삭제"</string>
<string name="mgt_data_log_text">"로그 데이터 삭제"</string>
<string name="mgt_data_authentication_text">"모든 인증 데이터 삭제"</string>
<string name="mgt_data_attendance_text">"모든 근태 이력 삭제"</string>
<string name="mgt_data_vein_title">"지정맥 데이터"</string>
<string name="mgt_data_finger_title">"지문 데이터"</string>
@ -157,12 +170,14 @@
<string name="mgt_data_user_title">"사용자 데이터"</string>
<string name="mgt_data_log_title">"로그 데이터"</string>
<string name="mgt_data_authentication_title">"모든 인증 데이터"</string>
<string name="mgt_data_attendance_title">"모든 근태 이력"</string>
<!--log-->
<string name="mgt_log_logcenter_text">"로그 관리"</string>
<string name="mgt_log_authentication_text">"인증 이력"</string>
<string name="mgt_log_attendance_text">"근태 이력"</string>
<string name="mgt_log_delete_text">"로그 자동 삭제 사용"</string>
<string name="mgt_log_deletedate_text">"로그 자동 삭제 기간"</string>
@ -182,6 +197,7 @@
<string name="mgt_system_date_text">"날짜 및 시간 설정"</string>
<string name="mgt_system_volume_text">"볼륨 설정"</string>
<string name="mgt_system_device_text">"장치 설정"</string>
<string name="mgt_system_door_control_time_text">"개방시간 설정"</string>
<string name="mgt_system_biometric_text">"생체인증 모드"</string>
<string name="mgt_system_biometric_finger_text">"지정맥"</string>
<string name="mgt_system_biometric_vein_text">"지문"</string>
@ -189,6 +205,8 @@
<string name="mgt_system_biometric_vein_face_text">"지정맥,얼굴"</string>
<string name="mgt_system_biometric_finger_face_text">"지문,얼굴"</string>
<string name="mgt_system_attendance_text">"근태 관리"</string>
<string name="mgt_system_server_text">"미들웨어 서버 설정"</string>
<string name="mgt_system_updateserver_text">"업데이트 서버 설정"</string>
<string name="mgt_system_stbstatus_text">"단말기 상태 전달 주기"</string>
@ -231,15 +249,20 @@
<string name="mgt_system_device_id_text">"Device ID"</string>
<string name="mgt_system_device_name_text">"Device name"</string>
<string name="mgt_system_device_id_reset_text">"ID 초기화"</string>
<string name="mgt_system_device_popup_id_text">"Device ID를 입력해 주세요."</string>
<string name="mgt_system_device_popup_name_text">"Device Name를 입력해 주세요."</string>
<string name="mgt_system_door_control_time_use_text">"개방시간 사용"</string>
<string name="mgt_system_door_control_time_set_text">"설정시간"</string>
<string name="mgt_system_server1_ip_text">"Server1 IP"</string>
<string name="mgt_system_server1_port_text">"Server1 port"</string>
<string name="mgt_system_server1_check_text">"Server1 Check"</string>
<string name="mgt_system_server2_ip_text">"Server2 IP"</string>
<string name="mgt_system_server2_port_text">"Server2 port"</string>
<string name="mgt_system_server2_check_text">"Server2 Check"</string>
<string name="mgt_system_server_reset_text">"서버 초기화"</string>
<string name="mgt_system_server_ip_popup_text">"Server IP를 입력해 주세요."</string>
<string name="mgt_system_server_port_popup_text">"Server port를 입력해 주세요."</string>
@ -295,6 +318,7 @@
<string name="dialog_cancle">"취소"</string>
<string name="dialog_save">"저장"</string>
<string name="mgt_delete">"삭제 하시겠습니까?"</string>
<string name="mgt_reset">"초기화 하시겠습니까?"</string>
<string name="mgt_save">"저장 하시겠습니까?"</string>
<string name="mgt_alldelete">"전체삭제"</string>
<string name="mgt_perioddelete">"기간삭제"</string>