diff --git a/.gradle/5.4.1/executionHistory/executionHistory.bin b/.gradle/5.4.1/executionHistory/executionHistory.bin
index c2c4347..4e2c941 100644
--- a/.gradle/5.4.1/executionHistory/executionHistory.bin
+++ b/.gradle/5.4.1/executionHistory/executionHistory.bin
diff --git a/.gradle/5.4.1/executionHistory/executionHistory.lock b/.gradle/5.4.1/executionHistory/executionHistory.lock
index d532094..9a6ae26 100644
--- a/.gradle/5.4.1/executionHistory/executionHistory.lock
+++ b/.gradle/5.4.1/executionHistory/executionHistory.lock
diff --git a/.gradle/5.4.1/fileHashes/fileHashes.bin b/.gradle/5.4.1/fileHashes/fileHashes.bin
index 0c57fbd..c6c25d7 100644
--- a/.gradle/5.4.1/fileHashes/fileHashes.bin
+++ b/.gradle/5.4.1/fileHashes/fileHashes.bin
diff --git a/.gradle/5.4.1/fileHashes/fileHashes.lock b/.gradle/5.4.1/fileHashes/fileHashes.lock
index 317a5d6..0f7d999 100644
--- a/.gradle/5.4.1/fileHashes/fileHashes.lock
+++ b/.gradle/5.4.1/fileHashes/fileHashes.lock
diff --git a/.gradle/5.4.1/fileHashes/resourceHashesCache.bin b/.gradle/5.4.1/fileHashes/resourceHashesCache.bin
index 1010e70..c9a62f6 100644
--- a/.gradle/5.4.1/fileHashes/resourceHashesCache.bin
+++ b/.gradle/5.4.1/fileHashes/resourceHashesCache.bin
diff --git a/.gradle/5.4.1/javaCompile/classAnalysis.bin b/.gradle/5.4.1/javaCompile/classAnalysis.bin
index ebbb913..3f5f397 100644
--- a/.gradle/5.4.1/javaCompile/classAnalysis.bin
+++ b/.gradle/5.4.1/javaCompile/classAnalysis.bin
diff --git a/.gradle/5.4.1/javaCompile/jarAnalysis.bin b/.gradle/5.4.1/javaCompile/jarAnalysis.bin
index e35dc2b..86e5f56 100644
--- a/.gradle/5.4.1/javaCompile/jarAnalysis.bin
+++ b/.gradle/5.4.1/javaCompile/jarAnalysis.bin
diff --git a/.gradle/5.4.1/javaCompile/javaCompile.lock b/.gradle/5.4.1/javaCompile/javaCompile.lock
index 2e8b515..a9773e6 100644
--- a/.gradle/5.4.1/javaCompile/javaCompile.lock
+++ b/.gradle/5.4.1/javaCompile/javaCompile.lock
diff --git a/.gradle/5.4.1/javaCompile/taskHistory.bin b/.gradle/5.4.1/javaCompile/taskHistory.bin
index d52498b..026def0 100644
--- a/.gradle/5.4.1/javaCompile/taskHistory.bin
+++ b/.gradle/5.4.1/javaCompile/taskHistory.bin
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 7b4028e..9264fdc 100644
--- a/.gradle/buildOutputCleanup/buildOutputCleanup.lock
+++ b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
index 9aaa44c..36e6d6f 100644
--- a/.gradle/buildOutputCleanup/outputFiles.bin
+++ b/.gradle/buildOutputCleanup/outputFiles.bin
diff --git a/.idea/libraries/Gradle__D__desk_file_work_CYTAndroid4_0_libs_decoderapijni_jar.xml b/.idea/libraries/Gradle__D__desk_file_work_CYTAndroid4_0_libs_decoderapijni_jar.xml
new file mode 100644
index 0000000..c191abd
--- /dev/null
+++ b/.idea/libraries/Gradle__D__desk_file_work_CYTAndroid4_0_libs_decoderapijni_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__D__desk_file_work_CYTAndroid4_0_libs_iodev2_jar.xml b/.idea/libraries/Gradle__D__desk_file_work_CYTAndroid4_0_libs_iodev2_jar.xml
new file mode 100644
index 0000000..6936f1f
--- /dev/null
+++ b/.idea/libraries/Gradle__D__desk_file_work_CYTAndroid4_0_libs_iodev2_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index d3c7c1f..c419f48 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -26,7 +26,9 @@
+
+
@@ -37,6 +39,9 @@
+
+
+
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 50453f8..ee3cc2a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -358,6 +358,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/activity_scan_head.xml b/res/layout/activity_scan_head.xml
new file mode 100644
index 0000000..8871d3c
--- /dev/null
+++ b/res/layout/activity_scan_head.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 6d4fe5b..9fe15f9 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -53,4 +53,6 @@
20dp
68dp
18sp
+ 15dp
+ 0dp
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 09934ec..16a9b91 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -284,4 +284,63 @@
\u3000\u3000移动检票系统包含:检票、补打小票功能两大模块。
\u3000\u3000检票和补打细分小模块包含:手机号、二维码、身份证、订单号。
\u3000\u3000移动终端包含多款机型,包含:手持机、带身份证pos、小pos等。
+ 汉
+ 蒙古
+ 回
+ 藏
+ 维吾尔
+ 苗
+ 彝
+ 壮
+ 布依
+ 朝鲜
+ 满
+ 侗
+ 瑶
+ 白
+ 土家
+ 哈尼
+ 哈萨克
+ 傣
+ 黎
+ 傈傈
+ 佤
+ 畲
+ 高山
+ 拉祜
+ 水
+ 东乡
+ 纳西
+ 景颇
+ 柯尔克孜
+ 土
+ 达斡尔
+ 仫佬
+ 羌
+ 布朗族
+ 撒拉
+ 毛南
+ 仡佬
+ 锡伯
+ 阿昌
+ 普米
+ 塔吉克
+ 怒
+ 乌兹别克
+ 俄罗斯
+ 鄂温克
+ 德昂
+ 保安
+ 裕固
+ 京
+ 塔塔尔
+ 独龙
+ 鄂伦春
+ 赫哲
+ 门巴
+ 珞巴
+ 基诺
+ 解析出错
+ 男
+ 女
\ No newline at end of file
diff --git a/src/aidl/com/ectrip/scanbarcode_jp/IScan.aidl b/src/aidl/com/ectrip/scanbarcode_jp/IScan.aidl
new file mode 100644
index 0000000..97eb764
--- /dev/null
+++ b/src/aidl/com/ectrip/scanbarcode_jp/IScan.aidl
@@ -0,0 +1,10 @@
+package com.ectrip.scanbarcode_jp;
+
+interface IScan{
+ //初始化扫描头
+ void initEngine();
+ //扫描
+ String scan();
+ //关闭扫描
+ void close();
+}
\ No newline at end of file
diff --git a/src/android_serialport_api/print_tool/SerialNewPortTool.java b/src/android_serialport_api/print_tool/SerialNewPortTool.java
index ff45add..a0a37de 100644
--- a/src/android_serialport_api/print_tool/SerialNewPortTool.java
+++ b/src/android_serialport_api/print_tool/SerialNewPortTool.java
@@ -74,7 +74,7 @@ public class SerialNewPortTool {
if (handler == null) {
handler = new MyHandler();
}
- popUpDialog();
+
try {
HdxUtil.SwitchSerialFunction(HdxUtil.SERIAL_FUNCTION_PRINTER);
} catch (Throwable e) {
@@ -82,6 +82,7 @@ public class SerialNewPortTool {
Toast.makeText(context, "不支持", Toast.LENGTH_LONG).show();
return;
}
+ popUpDialog();
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
lock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, TAG);
diff --git a/src/cn/pda/serialport/IDSerialPort.java b/src/cn/pda/serialport/IDSerialPort.java
new file mode 100644
index 0000000..cf9bb25
--- /dev/null
+++ b/src/cn/pda/serialport/IDSerialPort.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2009 Cedric Priscal
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package cn.pda.serialport;
+
+
+import com.ectrip.cyt.utils.LogUtil;
+
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/*
+ * SerialPort ����JNI�࣬���������Ӳ����ͨ��
+ */
+public class IDSerialPort {
+
+ private static final String TAG = "SerialPort";
+
+
+ public static int TNCOM_EVENPARITY = 0;//żУ��
+ public static int TNCOM_ODDPARITY = 1 ;//����
+
+ /*
+ * Do not remove or rename the field mFd: it is used by native method close();
+ */
+ private FileDescriptor mFd;
+ private FileInputStream mFileInputStream;
+ private FileOutputStream mFileOutputStream;
+ private boolean trig_on=false;
+ byte[] test;
+ //���ڵ���GPIO
+ public IDSerialPort(){}
+
+ public IDSerialPort(int port, int baudrate, int flags) throws SecurityException, IOException {
+// System.load("/data/data/com.example.uartdemo/lib/libdevapi.so");
+// System.load("/data/data/com.example.uartdemo/lib/libSerialPort.so");
+ mFd = open(port, baudrate);
+
+ if (mFd == null) {
+ LogUtil.e(TAG, "native open returns null");
+ throw new IOException();
+ }
+
+
+ mFileInputStream = new FileInputStream(mFd);
+ mFileOutputStream = new FileOutputStream(mFd);
+
+
+
+ }
+ // Getters and setters
+ public InputStream getInputStream() {
+ return mFileInputStream;
+ }
+
+ public OutputStream getOutputStream() {
+ return mFileOutputStream;
+ }
+ public void power_5Von() {
+ zigbeepoweron();
+ }
+ public void power_5Voff(){
+ zigbeepoweroff();
+ }
+ public void power_3v3on(){
+ power3v3on();
+ }
+ public void power_3v3off(){
+ power3v3off();
+ }
+ public void rfid_poweron(){
+ rfidPoweron();
+ }
+ public void rfid_poweroff(){
+ rfidPoweroff();
+ }
+ public void psam_poweron() {
+ psampoweron();
+ }
+ public void psam_poweroff() {
+ psampoweroff();
+ //scaner_trigoff();
+ }
+ public void scaner_poweron() {
+ scanerpoweron();
+ scaner_trigoff();
+ }
+ public void scaner_poweroff() {
+ scanerpoweroff();
+ //scaner_trigoff();
+ }
+ public void scaner_trigon() {
+ scanertrigeron();
+ trig_on=true;
+ }
+ public void scaner_trigoff() {
+ scanertrigeroff();
+ trig_on=false;
+ }
+ public boolean scaner_trig_stat(){
+ return trig_on;
+ }
+ // JNI
+
+ private native static FileDescriptor open(int port, int baudrate);
+ private native static FileDescriptor open(int port, int baudrate, int portparity);
+ public native void close(int port);
+ public native void zigbeepoweron();
+ public native void zigbeepoweroff();
+
+ public native void scanerpoweron();
+ public native void scanerpoweroff();
+ public native void psampoweron();
+ public native void psampoweroff();
+ public native void scanertrigeron();
+ public native void scanertrigeroff();
+ public native void power3v3on();
+ public native void power3v3off();
+
+ public native void rfidPoweron();
+ public native void rfidPoweroff();
+
+ public native void usbOTGpowerOn();
+ public native void usbOTGpowerOff();
+
+ public native void irdapoweron();
+ public native void irdapoweroff();
+
+ public native void setGPIOhigh(int gpio);
+ public native void setGPIOlow(int gpio);
+
+
+// public native void setPortParity(int mode); //����У��λ
+
+ public native void test(byte[] bytes);
+
+ static {
+ System.loadLibrary("devapi");
+ System.loadLibrary("irdaSerialPort");
+ }
+
+}
diff --git a/src/cn/pda/serialport/Tools.java b/src/cn/pda/serialport/Tools.java
new file mode 100644
index 0000000..6a1f834
--- /dev/null
+++ b/src/cn/pda/serialport/Tools.java
@@ -0,0 +1,72 @@
+package cn.pda.serialport;
+
+import java.text.SimpleDateFormat;
+
+
+public class Tools {
+
+ //byte 转十六进制
+ public static String Bytes2HexString(byte[] b, int size) {
+ String ret = "";
+ for (int i = 0; i < size; i++) {
+ String hex = Integer.toHexString(b[i] & 0xFF);
+ if (hex.length() == 1) {
+ hex = "0" + hex;
+ }
+ ret += hex.toUpperCase();
+ }
+ return ret;
+ }
+
+ public static byte uniteBytes(byte src0, byte src1) {
+ byte _b0 = Byte.decode("0x" + new String(new byte[]{src0})).byteValue();
+ _b0 = (byte)(_b0 << 4);
+ byte _b1 = Byte.decode("0x" + new String(new byte[]{src1})).byteValue();
+ byte ret = (byte)(_b0 ^ _b1);
+ return ret;
+ }
+
+ //十六进制转byte
+ public static byte[] HexString2Bytes(String src) {
+ int len = src.length() / 2;
+ byte[] ret = new byte[len];
+ byte[] tmp = src.getBytes();
+
+ for (int i = 0; i < len; i++) {
+ ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
+ }
+ return ret;
+ }
+
+ /* byte[]转Int */
+ public static int bytesToInt(byte[] bytes)
+ {
+ int addr = bytes[0] & 0xFF;
+ addr |= ((bytes[1] << 8) & 0xFF00);
+ addr |= ((bytes[2] << 16) & 0xFF0000);
+ addr |= ((bytes[3] << 25) & 0xFF000000);
+ return addr;
+
+ }
+
+ /* Int转byte[] */
+ public static byte[] intToByte(int i)
+ {
+ byte[] abyte0 = new byte[4];
+ abyte0[0] = (byte) (0xff & i);
+ abyte0[1] = (byte) ((0xff00 & i) >> 8);
+ abyte0[2] = (byte) ((0xff0000 & i) >> 16);
+ abyte0[3] = (byte) ((0xff000000 & i) >> 24);
+ return abyte0;
+ }
+
+ public static String getmyTime() {
+ SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+ String date = sDateFormat.format(new java.util.Date());
+ return date;
+ }
+
+
+
+
+}
diff --git a/src/com/IDCard/IDCardManager.java b/src/com/IDCard/IDCardManager.java
new file mode 100644
index 0000000..bfc221d
--- /dev/null
+++ b/src/com/IDCard/IDCardManager.java
@@ -0,0 +1,561 @@
+package com.IDCard;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.RemoteException;
+
+import com.ectrip.cyt.utils.LogUtil;
+import com.ectrip.trips.check.R;
+import com.synjones.bluetooth.DecodeWlt;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+
+import cn.pda.serialport.IDSerialPort;
+import cn.pda.serialport.Tools;
+
+
+//import com.synjones.bluetooth.DecodeWlt;
+
+public class IDCardManager {
+ private static final String TAG = null;
+ private String cmd_1 = "AAAAAA96690003200122";//
+ private byte[] cmd_find = Tools.HexString2Bytes(cmd_1);
+ private String cmd_2 = "AAAAAA96690003200221";//
+ private byte[] cmd_selet = Tools.HexString2Bytes(cmd_2);
+ private String cmd_3 = "AAAAAA96690003300132";//
+ private byte[] cmd_read = Tools.HexString2Bytes(cmd_3);
+
+ private int seriaPort = 13;
+ private int baudrate = 115200;
+ private IDSerialPort mSerialPort;
+ private InputStream mInputStream;
+ private OutputStream mOutputStream;
+
+ private Context mContext;
+ public IDCardManager(Context context){
+ mContext = context;
+ mSerialPort = new IDSerialPort();
+ mSerialPort.rfid_poweron();
+// mSerialPort.psam_poweron();
+// mSerialPort.power_5Von();
+ try {
+ mSerialPort = new IDSerialPort(seriaPort, baudrate, 0);
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ mOutputStream = mSerialPort.getOutputStream();
+ mInputStream = mSerialPort.getInputStream();
+ }
+ public void Close() {
+ if (mSerialPort != null) {
+
+ mSerialPort.close(seriaPort);
+ mSerialPort.rfid_poweroff();
+ mSerialPort.setGPIOlow(92);
+// mSerialPort.power_5Voff();
+// mSerialPort.psam_poweroff();
+ }
+ }
+ public boolean FindCard(long timeout) {
+ if (mSerialPort == null) return false;
+ byte[] findbs = sendCmd(cmd_find, timeout/2, 15);
+ if (findbs!=null) {
+ byte[] selectbs = sendCmd(cmd_selet, timeout, 19);
+ if (selectbs!=null) {
+ return true;
+ }else {
+// LogUtil.e(TAG, "Select Card Fail!");
+ }
+ }else {
+// LogUtil.e(TAG, "Find Card Fail!");
+ }
+ return false;
+ }
+ public IDCardModel GetData(long timeout) {
+ if (mSerialPort == null) return null;
+ byte[] readbs = sendCmd(cmd_read, timeout, 1295);
+ if (readbs!=null) {
+// LogUtil.e("read", Tools.Bytes2HexString(readbs, readbs.length));
+ return ResolveData(readbs);
+ }else {
+// LogUtil.e(TAG, "Read Card Fail!");
+ }
+ return null;
+ }
+
+ private byte[] sendCmd(byte[] cmd,long timeout,int length) {
+// LogUtil.e("��ָ�", Tools.Bytes2HexString(cmd, cmd.length));
+ try {
+ mInputStream.read(new byte[4906]);
+ mOutputStream.write(cmd);
+ long time = System.currentTimeMillis();
+ while (System.currentTimeMillis() - time<=timeout) {
+ if (mInputStream.available()>=length) {
+ byte[] bs = new byte[length];
+ mInputStream.read(bs);
+// LogUtil.e("���գ�", Tools.Bytes2HexString(bs,bs.length));
+ return bs;
+ }
+ }
+ {
+ length = mInputStream.available();
+ byte[] bs = new byte[length];
+ mInputStream.read(bs);
+// LogUtil.e("���գ�����", Tools.Bytes2HexString(bs,bs.length));
+ return null;
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ LogUtil.e("Send Cmd", e.toString());
+ return null;
+ }
+
+ }
+ private IDCardModel ResolveData(byte[] bytes) {
+ IDCardModel model = new IDCardModel();
+ if (!checkout(bytes)) return null;
+ byte[] photo_bs = new byte[1024];
+ System.arraycopy(bytes, 270, photo_bs, 0, 1024);
+// photo_bs = getPhotoBytes(photo_bs);
+ byte[] name_bs = new byte[30];
+ byte[] sex_bs = new byte[2];
+ byte[] nation_bs = new byte[4];
+ byte[] time_bs = new byte[16];
+ byte[] address_bs = new byte[70];
+ byte[] id_bs = new byte[36];
+ byte[] office_bs = new byte[30];
+ byte[] start_bs = new byte[16];
+ byte[] stop_bs = new byte[16];
+ byte[] newaddress_bs = new byte[36];
+
+ System.arraycopy(bytes, 14, name_bs, 0, 30);
+ System.arraycopy(bytes, 44, sex_bs, 0, 2);
+ System.arraycopy(bytes, 46, nation_bs, 0, 4);
+ System.arraycopy(bytes, 50, time_bs, 0, 16);
+ System.arraycopy(bytes, 66, address_bs, 0, 70);
+ System.arraycopy(bytes, 136, id_bs, 0, 36);
+ System.arraycopy(bytes, 172, office_bs, 0, 30);
+ System.arraycopy(bytes, 202, start_bs, 0, 16);
+ System.arraycopy(bytes, 218, stop_bs, 0, 16);
+ System.arraycopy(bytes, 234, newaddress_bs, 0, 36);
+
+ //LogUtil.e("name", Tools.Bytes2HexString(name_bs, name_bs.length));
+ //LogUtil.e("sex",
+// Tools.Bytes2HexString(sex_bs, 2)
+// + "::"
+// + Tools.Bytes2HexString("1".getBytes(),
+// "1".getBytes().length));
+ //LogUtil.e("nation", Tools.Bytes2HexString(nation_bs, 4));
+ name_bs = getDataBytes(name_bs);
+ sex_bs = getDataBytes(sex_bs);
+ nation_bs = getDataBytes(nation_bs);
+ time_bs = getDataBytes(time_bs);
+ address_bs = getDataBytes(address_bs);
+ id_bs = getDataBytes(id_bs);
+ office_bs = getDataBytes(office_bs);
+ start_bs = getDataBytes(start_bs);
+ stop_bs = getDataBytes(stop_bs);
+ newaddress_bs = getDataBytes(newaddress_bs);
+
+ //LogUtil.e("name", Tools.Bytes2HexString(name_bs, name_bs.length));
+ //LogUtil.e("sex",
+// Tools.Bytes2HexString(sex_bs, 2)
+// + "::"
+// + Tools.Bytes2HexString("1".getBytes(),
+// "1".getBytes().length));
+ //LogUtil.e("nation", Tools.Bytes2HexString(nation_bs, 4));
+ try {
+ String name = new String(name_bs, "UCS-2");
+ String sex = new String(sex_bs, "UCS-2");
+ sex = getSex(sex);
+ String nation = new String(nation_bs, "UCS-2");
+ nation = getNation(nation);
+ String time = new String(time_bs, "UCS-2");
+ String address = new String(address_bs, "UCS-2");
+ String id = new String(id_bs, "UCS-2");
+ String office = new String(office_bs, "UCS-2");
+ String start = new String(start_bs, "UCS-2");
+ String stop = new String(stop_bs, "UCS-2");
+ String newaddress = new String(newaddress_bs, "UCS-2");
+
+ model.setAddress(address);
+ model.setBeginTime(start);
+ model.setYear(time.substring(0, 4));
+ model.setMonth(time.substring(4, 6));
+ model.setDay(time.substring(6, 8));
+ model.setEndTime(stop);
+ model.setIDCardNumber(id);
+ model.setName(name);
+ model.setNation(nation);
+// byte[] testbs = Tools.HexString2Bytes("574C66007E00320000FF85195151513E710DD564F335902D039CA49073F9363BDF508BB430C833907D512589D9DE771CD3C0F0CE86B7F5417A25C175165B633A96B7006B347DE5B5C02FE5F7589CB6904F0EBEF56F11AEDA5251515A3E849C7C7FCCEC794DEEE56A76EAD1711ACAAABE430B1A90EEF131F5233EC64E25A2EA17AFC694FAFC0447662C31D765182E172FE199E688AF30BEB53208A18466603C86B51A0A35D6AB0067A74F7B8E9E3F44D74869F81867188DE7A1171E28BA94FC0232C5AB751643A9EB89725A36EF0DB660F3DD3D73DA350E57D9394C5AF8A8FA7FE91E3615318758391A6C233B8996D12B9A2E14BFAA3438ABBF51832ADE38CB6FBF293A0068C2CBF883691A35BBDEFF35862EF18FF7A1152C3EADA60EECB83EAC43FD3D92059FBA6CF7396A3AF385DF78E2775331CB81FD4405287293D8E89B58CEA161777327F5D0CB376798C351D4F18BB406AA4321AD4819F34157BD6224829398EFAC0890C1E6450F498814C99B94981081DF7AAF00E540634E5D8455B9B8BDCB6F8F61CC8E275D030D6EB8EDD74BAE515658324D6FB898C50D674F74B7ED3488A1910A97A971CF922FC4D2929686500616FB96953C4E2DD469A3C02CF365DF051945ECE2ADCC7CBA8B8774E0A9120353CB6ED094DFD7FDA950A8D308E778BF6A1F623AB3FAAA12CCE6DE8287875F7119253A42013F44EE638A86F8DA1AAD55E8C44E6C6B18706A6E02EE9FCA20D3EFF016414D703665E63CF1BB96309D11C225FE616E7ACEC1250363E99419FCB08AA97CFBB3441EDD09A56AEDAAF1A18B8DCFC6D848BA6119005FE166BB179DFE0E5E22819099964C2A856922B861C45C0EB0FD3068B4A6D923C5BDB050D6D3193F3834A24FD40716FA017929FFCD5FFC5CC4207CEE63E80F2E3005CE8100A7091E6C8FB7873A84C89B49CB9A1A542C156019354741242B75CBD7531A93F0836A505C7F319861DB91BC989151F57A2A60A88B2C33FDC7E9BA23FC32C7693C64B7CF017892CA9C39BCB445F8499EF5FB55260CA1B86E482BA4999E47F5CF99909DA464E642B4104D6C86BACAE6D0EFA6A5BC9D1E57441F82FC528FDFA10AFA3CED711D3C4D27AD936617DCB69D3EBC373AE16B16034C6BD22CAF0A7632D8CE0956603C998D1C610C387D9D673A1196369595AF3439F20182ECADA61F1639AF8C634748D585D96DD4666281A087A117A03C64D0E6F55A3ECF594666FD66B696386636F10CE81C5AB4FF8A974543ADF4997A887B6F1BA21FA8DF6E7EE294AC28B86D6B1A3EED4461378B613C04BC9751FDADA66944D0A958ECEE83216F6A83E917E11D51034A933F5A3EA45C30AB2F0222CC6839D8725A5ABC7FF4A96912AF6B190F6A9E5BEB8FF845996BC5F24E9146DAD4A1ADE63C849FF428F1E8BAFBA04F0B46F0A77F390CFEF81389B5B9B1E9BBB473");
+//// byte[] testbs = Tools.HexString2Bytes("574C66007E00320000FF85185151513E710DD564F325F89A7237A3870966105EC2BDF5FB4BAC2E581930D3E68C0D13347396840704E862BD0CF011EC65C40A20CE9F06AC14E123A9625DB365181F2122B7BE41FD2635D1AEDB5251515A3EAE5123523FFE632275E449E7C15EAD11FED664E0A6793711A0C892B5574E99854DA89D646C043AEBAF968567C4B29D6D9058917BA308A1A208945AD4741371B4B1BC51F74F77B27365CFD33069510610D204D9589BDDFDA349E85772E68C595917826F7E058EAF2ABCBE8885A7E09C43F9B90CDE3F00D32C5829E1F206A8E65841D667A3958455EC2E8825D67960D14E0402E1B28085319A7F66A1C283727E62740219F307686B8D1AF285191A02E78DD428C9670D3738DA75E76AC00E41CCB2D017DF4B7E714A23B11156BBDA994E60C037D667862A8B14B2EA1C0211064245C36046F587629BCBFFA7BFD36716107912D130E24D54E8B5AC9588583BB50D8B907535BDF5002EE9CE6CD086F6598DE43C9B6380EA48B289662FE38FAE518FB23187A963B9C8D7630E79DE49E0B784DF3A24C2968186793A32962C54368404C58E925C9B41131E07B890D4ADA1E8B31311EF4F49D65F2E6522EF129500C48A1D8E24142197D38474467263117D81C8A75C07319AAA47A2C8987FEBC08A00D8B216637C4597D16A0D331AE78C87D9FEDCABA46958E08D5CF670BB52220F02F708B9592A6BEE47A17D5ED32B7BE6463E42D8FF797104FCAAA6AC148DCE329ADD7E7F98900281E2118AF42EC4C61A09CA0D4C6B86DC5027D879E4C78B943C009C476AB42717128C89FD8F97130B388C835FAD36AD2A619F7CAD79EC19908096CF3076E720723859F5B9D2410855423A2062028EDBBCB663622044508F89B813FE5572B7BFEBB7FC9B2F43A57000A695DB5730DFB4FCD920F81279CCEE6234FBD9EE222E4D0FB2AC12346C41E8F87D9F7FEBB7CA4A81AA257562B0B355EB2CBBDDE880EC297E3CB5B0E503F05326819FA8AF6607CBD6BCE68B18EFD3A819CCF50F72CF5B7A82E1A1BB42BB548522D0EE8B349752AAF05EB92236A97190391B8D95D85F6D3305524A12EDB09EC2A386AFB1AB00AC7A256A7A56E4F28EAF3776882579A750DB259031B1B497E8294886D6B20E00A8DC6C81B48837133C1844FB268C42503B274D2DA797BC2F18D4599C237AEB1B4C1BF1579A94887CE02358CC9BDC81705664A26F805A3E9BA6E23B800407EEBBE6C0319A1B00D5923639DC49C722A575CC815375124A04EC8650252830A07CBBDC4F3751D5CEB8208CDF076990B96C2EA70D22BF9F64EF0FDA75931B80F86821D0BF7F9E3A47FE5A3E04151953F7127BEBC13910A3B34DD5D6B8F12DD6F26F91AC476EFAB44075B89E85595DBBC27605ECBA883F9CE587FADB86FB871F3D3CAF298DAB8ABF42742E3CE0ED448FBF3B1041");
+//// 574C66007E00320000FF85195151513E710DD564F335902D039CA49073F9363BDF508BB430C833907D512589D9DE771CD3C0F0CE86B7F5417A25C175165B633A96B7006B347DE5B5C02FE5F7589CB6904F0EBEF56F11AEDA5251515A3E849C7C7FCCEC794DEEE56A76EAD1711ACAAABE430B1A90EEF131F5233EC64E25A2EA17AFC694FAFC0447662C31D765182E172FE199E688AF30BEB53208A18466603C86B51A0A35D6AB0067A74F7B8E9E3F44D74869F81867188DE7A1171E28BA94FC0232C5AB751643A9EB89725A36EF0DB660F3DD3D73DA350E57D9394C5AF8A8FA7FE91E3615318758391A6C233B8996D12B9A2E14BFAA3438ABBF51832ADE38CB6FBF293A0068C2CBF883691A35BBDEFF35862EF18FF7A1152C3EADA60EECB83EAC43FD3D92059FBA6CF7396A3AF385DF78E2775331CB81FD4405287293D8E89B58CEA161777327F5D0CB376798C351D4F18BB406AA4321AD4819F34157BD6224829398EFAC0890C1E6450F498814C99B94981081DF7AAF00E540634E5D8455B9B8BDCB6F8F61CC8E275D030D6EB8EDD74BAE515658324D6FB898C50D674F74B7ED3488A1910A97A971CF922FC4D2929686500616FB96953C4E2DD469A3C02CF365DF051945ECE2ADCC7CBA8B8774E0A9120353CB6ED094DFD7FDA950A8D308E778BF6A1F623AB3FAAA12CCE6DE8287875F7119253A42013F44EE638A86F8DA1AAD55E8C44E6C6B18706A6E02EE9FCA20D3EFF016414D703665E63CF1BB96309D11C225FE616E7ACEC1250363E99419FCB08AA97CFBB3441EDD09A56AEDAAF1A18B8DCFC6D848BA6119005FE166BB179DFE0E5E22819099964C2A856922B861C45C0EB0FD3068B4A6D923C5BDB050D6D3193F3834A24FD40716FA017929FFCD5FFC5CC4207CEE63E80F2E3005CE8100A7091E6C8FB7873A84C89B49CB9A1A542C156019354741242B75CBD7531A93F0836A505C7F319861DB91BC989151F57A2A60A88B2C33FDC7E9BA23FC32C7693C64B7CF017892CA9C39BCB445F8499EF5FB55260CA1B86E482BA4999E47F5CF99909DA464E642B4104D6C86BACAE6D0EFA6A5BC9D1E57441F82FC528FDFA10AFA3CED711D3C4D27AD936617DCB69D3EBC373AE16B16034C6BD22CAF0A7632D8CE0956603C998D1C610C387D9D673A1196369595AF3439F20182ECADA61F1639AF8C634748D585D96DD4666281A087A117A03C64D0E6F55A3ECF594666FD66B696386636F10CE81C5AB4FF8A974543ADF4997A887B6F1BA21FA8DF6E7EE294AC28B86D6B1A3EED4461378B613C04BC9751FDADA66944D0A958ECEE83216F6A83E917E11D51034A933F5A3EA45C30AB2F0222CC6839D8725A5ABC7FF4A96912AF6B190F6A9E5BEB8FF845996BC5F24E9146DAD4A1ADE63C849FF428F1E8BAFBA04F0B46F0A77F390CFEF81389B5B9B1E9BBB473
+// LogUtil.e("photo_bs", Tools.Bytes2HexString(photo_bs, photo_bs.length));
+// LogUtil.e("error"+testbs.length, "574C66007E00320000FF85195151513E710DD564F335902D039CA49073F9363BDF508BB430C833907D512589D9DE771CD3C0F0CE86B7F5417A25C175165B633A96B7006B347DE5B5C02FE5F7589CB6904F0EBEF56F11AEDA5251515A3E849C7C7FCCEC794DEEE56A76EAD1711ACAAABE430B1A90EEF131F5233EC64E25A2EA17AFC694FAFC0447662C31D765182E172FE199E688AF30BEB53208A18466603C86B51A0A35D6AB0067A74F7B8E9E3F44D74869F81867188DE7A1171E28BA94FC0232C5AB751643A9EB89725A36EF0DB660F3DD3D73DA350E57D9394C5AF8A8FA7FE91E3615318758391A6C233B8996D12B9A2E14BFAA3438ABBF51832ADE38CB6FBF293A0068C2CBF883691A35BBDEFF35862EF18FF7A1152C3EADA60EECB83EAC43FD3D92059FBA6CF7396A3AF385DF78E2775331CB81FD4405287293D8E89B58CEA161777327F5D0CB376798C351D4F18BB406AA4321AD4819F34157BD6224829398EFAC0890C1E6450F498814C99B94981081DF7AAF00E540634E5D8455B9B8BDCB6F8F61CC8E275D030D6EB8EDD74BAE515658324D6FB898C50D674F74B7ED3488A1910A97A971CF922FC4D2929686500616FB96953C4E2DD469A3C02CF365DF051945ECE2ADCC7CBA8B8774E0A9120353CB6ED094DFD7FDA950A8D308E778BF6A1F623AB3FAAA12CCE6DE8287875F7119253A42013F44EE638A86F8DA1AAD55E8C44E6C6B18706A6E02EE9FCA20D3EFF016414D703665E63CF1BB96309D11C225FE616E7ACEC1250363E99419FCB08AA97CFBB3441EDD09A56AEDAAF1A18B8DCFC6D848BA6119005FE166BB179DFE0E5E22819099964C2A856922B861C45C0EB0FD3068B4A6D923C5BDB050D6D3193F3834A24FD40716FA017929FFCD5FFC5CC4207CEE63E80F2E3005CE8100A7091E6C8FB7873A84C89B49CB9A1A542C156019354741242B75CBD7531A93F0836A505C7F319861DB91BC989151F57A2A60A88B2C33FDC7E9BA23FC32C7693C64B7CF017892CA9C39BCB445F8499EF5FB55260CA1B86E482BA4999E47F5CF99909DA464E642B4104D6C86BACAE6D0EFA6A5BC9D1E57441F82FC528FDFA10AFA3CED711D3C4D27AD936617DCB69D3EBC373AE16B16034C6BD22CAF0A7632D8CE0956603C998D1C610C387D9D673A1196369595AF3439F20182ECADA61F1639AF8C634748D585D96DD4666281A087A117A03C64D0E6F55A3ECF594666FD66B696386636F10CE81C5AB4FF8A974543ADF4997A887B6F1BA21FA8DF6E7EE294AC28B86D6B1A3EED4461378B613C04BC9751FDADA66944D0A958ECEE83216F6A83E917E11D51034A933F5A3EA45C30AB2F0222CC6839D8725A5ABC7FF4A96912AF6B190F6A9E5BEB8FF845996BC5F24E9146DAD4A1ADE63C849FF428F1E8BAFBA04F0B46F0A77F390CFEF81389B5B9B1E9BBB4734E670F5C1C5A200020002000200020002000200020002000200020002000");
+// LogUtil.e("error", "574C66007E00320000FF85185151513E710DD564F325F89A7237A3870966105EC2BDF5FB4BAC2E581930D3E68C0D13347396840704E862BD0CF011EC65C40A20CE9F06AC14E123A9625DB365181F2122B7BE41FD2635D1AEDB5251515A3EAE5123523FFE632275E449E7C15EAD11FED664E0A6793711A0C892B5574E99854DA89D646C043AEBAF968567C4B29D6D9058917BA308A1A208945AD4741371B4B1BC51F74F77B27365CFD33069510610D204D9589BDDFDA349E85772E68C595917826F7E058EAF2ABCBE8885A7E09C43F9B90CDE3F00D32C5829E1F206A8E65841D667A3958455EC2E8825D67960D14E0402E1B28085319A7F66A1C283727E62740219F307686B8D1AF285191A02E78DD428C9670D3738DA75E76AC00E41CCB2D017DF4B7E714A23B11156BBDA994E60C037D667862A8B14B2EA1C0211064245C36046F587629BCBFFA7BFD36716107912D130E24D54E8B5AC9588583BB50D8B907535BDF5002EE9CE6CD086F6598DE43C9B6380EA48B289662FE38FAE518FB23187A963B9C8D7630E79DE49E0B784DF3A24C2968186793A32962C54368404C58E925C9B41131E07B890D4ADA1E8B31311EF4F49D65F2E6522EF129500C48A1D8E24142197D38474467263117D81C8A75C07319AAA47A2C8987FEBC08A00D8B216637C4597D16A0D331AE78C87D9FEDCABA46958E08D5CF670BB52220F02F708B9592A6BEE47A17D5ED32B7BE6463E42D8FF797104FCAAA6AC148DCE329ADD7E7F98900281E2118AF42EC4C61A09CA0D4C6B86DC5027D879E4C78B943C009C476AB42717128C89FD8F97130B388C835FAD36AD2A619F7CAD79EC19908096CF3076E720723859F5B9D2410855423A2062028EDBBCB663622044508F89B813FE5572B7BFEBB7FC9B2F43A57000A695DB5730DFB4FCD920F81279CCEE6234FBD9EE222E4D0FB2AC12346C41E8F87D9F7FEBB7CA4A81AA257562B0B355EB2CBBDDE880EC297E3CB5B0E503F05326819FA8AF6607CBD6BCE68B18EFD3A819CCF50F72CF5B7A82E1A1BB42BB548522D0EE8B349752AAF05EB92236A97190391B8D95D85F6D3305524A12EDB09EC2A386AFB1AB00AC7A256A7A56E4F28EAF3776882579A750DB259031B1B497E8294886D6B20E00A8DC6C81B48837133C1844FB268C42503B274D2DA797BC2F18D4599C237AEB1B4C1BF1579A94887CE02358CC9BDC81705664A26F805A3E9BA6E23B800407EEBBE6C0319A1B00D5923639DC49C722A575CC815375124A04EC8650252830A07CBBDC4F3751D5CEB8208CDF076990B96C2EA70D22BF9F64EF0FDA75931B80F86821D0BF7F9E3A47FE5A3E04151953F7127BEBC13910A3B34DD5D6B8F12DD6F26F91AC476EFAB44075B89E85595DBBC27605ECBA883F9CE587FADB86FB871F3D3CAF298DAB8ABF42742E3CE0ED448FBF3B1041");
+// LogUtil.e("error", "574C66007E00320000FF851A5151513E710DD564F3444880918E6BA99D040EC79299EA6E1954CD556A73C31BDFD5E4BDA6D098410C2EA131B555304DF529AB19F59B78268D8A86B0C0600FDEF52D7578961548994BE9D09D51AED95251515A3E80F32DF2CB962EC8D390ECF1E3C00689052EEC51207675275967B7853F371D0DC808CBB2A4C14E9CDFB6BC5B5396C6A46D5AA4DCB5A242CC19247AF0AFFA5F6AE84D8030075753AF7B929BF5D4D9940FA9F1F9EA975229EDD5F076FE72CEABCCB743D3705946F9B787B4445CF34FA33837BA363EC42548915583F1D41C78E6A8296A1B0C648B5C2F4BC385A13C1818F5555B2DC9B1B0C22A7F9E16D651F23C8B94C3AC897C41E376420B7B6A18C5D28E272D3CAF33C6B72C9177E24AEBFA4B48C9BF92BFD289CABA7970B3224BCE034EC0426340E02284FBEF0C8280CA7AFC8C4D8D11A2411AD53BA6F0FAE7181ADB17B2A832FBE9B1CA0B5819A93F85BE4A759CB9131936694A46832B739D84C4ABCCFC050E49BEDFD9C9B489A3178E6411812E3ABB930329FD863EA462885F33C1638E42F3DE41701CE293A74A367334A1BDEA92FC4BFA459DF1E0295988C3D0AB394B0420A021CC1A5700310F6FB71F467A8586B86F1AFF572CFCE3CAEDB1470D7586F7BF07C26D93AE51909502ABA4F609C89202821DDC12895CFAAA6036DA2B70A1A06C8920013D3993468C0237EBA43E59655BD86E4D6667F8786108B6A24AB61062D561FC3A09A91806A3AF59C4789A9F628A606C060A8AB79473031D1DA5733BF9A5799E3006EF889AF561EEB219057F50BD923D370CEF90F47B88D4C8FE02819F5BF47677DCE12055F6387CC403BA3CCC052A8A2AA19B71BDA5E774268304EB1B4B98AD9C0CE51C5C1F8877798F6431515392C064B073358952DC00B5019CD37B063A19D360AF0185CAA667808FBFBF3F5B2A5927A7641B3F4AB11F1BE1E5BCA9985666B36C5FFEE5668F62006CCFE614C9CBF8A4FEF134E8D5CA733DF2C20D5A4CAA132EC6502B70BDE1D20464F3D7D63A768DACA3E1747D00C80F637E1FABB909C3554426878C25C357AF2368C6CE0F25C7F0B6ED1395384B08B2E6047AAAA584400E4A8BF3E0C373D76B484964F4D0648972E4ACE383E330A6FF19F22E4FF3B2E33B692F90739DB26E3DB38B79157058F74F86CE0F56B821035B371A46CA3079920844B3C0454F3165DB2A547B0D11A4CF6A5A3EA74F5DC555849A67EEB40721026A033CF8DC8DEAEAD2AA4AE2330FD65F434151A0AB333047B7800B8C0AF5764AB9EEC56320D612E4014BA04CC62A6DC9E5388746089C04A595F672CE1E3BBB14BA59375A3EA712DF849DCBCF752487A3DBA75E70AE5167158CDED1BBF66454E8F2D57DE052EDDCF46155911FEC02F713C9CA74435525258BE362A3CA2D659D64FFD7CCC5114E3FDAB03AF85D");
+// model.setPhotoBitmap(getBitmap2(photo_bs));
+// model.setPhotoBitmap(getBitmap(photo_bs));
+ model.setOffice(office);
+ model.setOtherData(newaddress);
+ model.setSex(sex);
+ return model;
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ return null;
+ }
+
+ }
+
+ private Bitmap getBitmap(byte[] photo_bs) {
+ try {
+ photo_bs = decode(photo_bs);
+ } catch (RemoteException e1) {
+ e1.printStackTrace();
+ LogUtil.e("IDCard",e1.toString());
+ }
+ File file = new File(mContext.getFileStreamPath("photo.bmp")
+ .getAbsolutePath());
+ try {
+ FileInputStream fileInputStream = new FileInputStream(file);
+ BitmapFactory.Options opts = new BitmapFactory.Options();
+ opts.inPreferredConfig = Bitmap.Config.RGB_565;
+ opts.inPurgeable = true;
+ opts.inInputShareable = true;
+ Bitmap bitmap = BitmapFactory.decodeFileDescriptor(
+ fileInputStream.getFD(), null, opts);
+ fileInputStream.close();
+ return bitmap;
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ LogUtil.e("IDCard",e.toString());
+ return null;
+ } catch (IOException e) {
+ e.printStackTrace();
+ LogUtil.e("IDCard",e.toString());
+ return null;
+ }
+ }
+
+ /**
+ * ��
+ *
+ * @param bytes
+ * @return
+ */
+ private boolean checkout(byte[] bytes) {
+ byte[] bs = new byte[bytes.length - 6];
+ System.arraycopy(bytes, 5, bs, 0, bs.length);
+ byte b = 0x00;
+ for (int i = 0; i < bs.length; i++) {
+ if (i == 0) {
+ b = bs[0];
+ } else {
+ b = (byte) (b ^ bs[i]);
+ }
+ }
+ if (b == bytes[bytes.length - 1]) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * �������壺
+ *
+ * @param nation
+ * @return
+ */
+ private String getNation(String nation) {
+ String NATION = "";
+ switch (Integer.valueOf(nation)) {
+ case 1:
+ NATION = mContext.getString(R.string.case1);
+ break;
+ case 2:
+ NATION = mContext.getString(R.string.case2);
+ break;
+ case 3:
+ NATION = mContext.getString(R.string.case3);
+ break;
+ case 4:
+ NATION = mContext.getString(R.string.case4);
+ break;
+ case 5:
+ NATION = mContext.getString(R.string.case5);
+ break;
+ case 6:
+ NATION = mContext.getString(R.string.case6);
+ break;
+ case 7:
+ NATION = mContext.getString(R.string.case7);
+ break;
+ case 8:
+ NATION = mContext.getString(R.string.case8);
+ break;
+ case 9:
+ NATION = mContext.getString(R.string.case9);
+ break;
+ case 10:
+ NATION = mContext.getString(R.string.case10);
+ break;
+ case 11:
+ NATION = mContext.getString(R.string.case11);
+ break;
+ case 12:
+ NATION = mContext.getString(R.string.case12);
+ break;
+ case 13:
+ NATION = mContext.getString(R.string.case13);
+ break;
+ case 14:
+ NATION = mContext.getString(R.string.case14);
+ break;
+ case 15:
+ NATION = mContext.getString(R.string.case15);
+ break;
+ case 16:
+ NATION = mContext.getString(R.string.case16);
+ break;
+ case 17:
+ NATION = mContext.getString(R.string.case17);
+ break;
+ case 18:
+ NATION = mContext.getString(R.string.case18);
+ break;
+ case 19:
+ NATION = mContext.getString(R.string.case19);
+ break;
+ case 20:
+ NATION = mContext.getString(R.string.case20);
+ break;
+ case 21:
+ NATION = mContext.getString(R.string.case21);
+ break;
+ case 22:
+ NATION = mContext.getString(R.string.case22);
+ break;
+ case 23:
+ NATION = mContext.getString(R.string.case23);
+ break;
+ case 24:
+ NATION = mContext.getString(R.string.case24);
+ break;
+ case 25:
+ NATION = mContext.getString(R.string.case25);
+ break;
+ case 26:
+ NATION = mContext.getString(R.string.case26);
+ break;
+ case 27:
+ NATION = mContext.getString(R.string.case27);
+ break;
+ case 28:
+ NATION = mContext.getString(R.string.case28);
+ break;
+ case 29:
+ NATION = mContext.getString(R.string.case29);
+ break;
+ case 30:
+ NATION = mContext.getString(R.string.case30);
+ break;
+ case 31:
+ NATION = mContext.getString(R.string.case31);
+ break;
+ case 32:
+ NATION = mContext.getString(R.string.case32);
+ break;
+ case 33:
+ NATION = mContext.getString(R.string.case33);
+ break;
+ case 34:
+ NATION = mContext.getString(R.string.case34);
+ break;
+ case 35:
+ NATION = mContext.getString(R.string.case35);
+ break;
+ case 36:
+ NATION = mContext.getString(R.string.case36);
+ break;
+ case 37:
+ NATION = mContext.getString(R.string.case37);
+ break;
+ case 38:
+ NATION = mContext.getString(R.string.case38);
+ break;
+ case 39:
+ NATION = mContext.getString(R.string.case39);
+ break;
+ case 40:
+ NATION = mContext.getString(R.string.case40);
+ break;
+ case 41:
+ NATION = mContext.getString(R.string.case41);
+ break;
+ case 42:
+ NATION = mContext.getString(R.string.case42);
+ break;
+ case 43:
+ NATION = mContext.getString(R.string.case43);
+ break;
+ case 44:
+ NATION = mContext.getString(R.string.case44);
+ break;
+ case 45:
+ NATION = mContext.getString(R.string.case45);
+ break;
+ case 46:
+ NATION = mContext.getString(R.string.case47);
+ break;
+ case 47:
+ NATION = mContext.getString(R.string.case47);
+ break;
+ case 48:
+ NATION = mContext.getString(R.string.case48);
+ break;
+ case 49:
+ NATION = mContext.getString(R.string.case49);
+ break;
+ case 50:
+ NATION = mContext.getString(R.string.case50);
+ break;
+ case 51:
+ NATION = mContext.getString(R.string.case51);
+ break;
+ case 52:
+ NATION = mContext.getString(R.string.case52);
+ break;
+ case 53:
+ NATION = mContext.getString(R.string.case53);
+ break;
+ case 54:
+ NATION = mContext.getString(R.string.case54);
+ break;
+ case 55:
+ NATION = mContext.getString(R.string.case55);
+ break;
+ case 56:
+ NATION = mContext.getString(R.string.case56);
+ break;
+ default:
+ NATION = mContext.getString(R.string.defaultminzu);
+ break;
+ }
+ return NATION;
+ }
+
+ /**
+ * �����Ա�
+ *
+ * @param sex
+ * @return
+ */
+ private String getSex(String sex) {
+ String SEX = "";
+ if (Integer.valueOf(sex)==1){
+ SEX = mContext.getString(R.string.nan);
+ }else {
+ SEX = mContext.getString(R.string.nv);;
+ }
+ return SEX;
+// switch (Integer.valueOf(sex)) {
+// case 0:
+// return "δ֪";
+//
+// case 1:
+//
+// return "��";
+// case 2:
+//
+// return "Ů";
+// case 9:
+//
+// return "δ˵��";
+// default:
+// break;
+// }
+//
+// return "";
+ }
+
+ /**
+ * ��ȡ������ȷ���룬�ߵ�����ż���ֽ�ֵ
+ *
+ * @param data
+ * @return
+ */
+ private byte[] getDataBytes(byte[] data) {
+ byte b = 0;
+ for (int i = 0; i < data.length; i++) {
+
+ if (i % 2 == 0) {
+ b = data[i];
+ data[i] = data[i + 1];
+ } else {
+ data[i] = b;
+ }
+ }
+ return data;
+ }
+
+
+
+
+
+
+ /**
+ * ͼƬ����
+ *
+ * @param wlt
+ * @return
+ * @throws RemoteException
+ */
+ private byte[] decode(byte[] wlt) throws RemoteException {
+ String bmpPath = /*
+ * Environment.getExternalStorageDirectory()+"/IDCard/"+"66"
+ * +".bmp";
+ */mContext.getFileStreamPath("photo.bmp")
+ .getAbsolutePath();
+ String wltPath = /*
+ * Environment.getExternalStorageDirectory()+"/IDCard/"+"66"
+ * +".wlt";
+ */mContext.getFileStreamPath("photo.wlt")
+ .getAbsolutePath();
+ File wltFile = new File(wltPath);
+ try {
+ FileOutputStream fos = new FileOutputStream(wltFile);
+ fos.write(wlt);
+ fos.close();
+ } catch (IOException e) {
+ LogUtil.e("FileIO:", e.toString());
+ e.printStackTrace();
+ }
+ DecodeWlt dw = new DecodeWlt();
+ int result = dw.Wlt2Bmp(wltPath, bmpPath);
+ byte[] buffer = (byte[]) null;
+
+ try {
+ File bmpFile = new File(bmpPath);
+ FileInputStream fin = new FileInputStream(bmpFile);
+ int length = fin.available();
+ buffer = new byte[length];
+ fin.read(buffer);
+ fin.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ LogUtil.e("IDCard",e.toString());
+ }
+ return buffer;
+ }
+}
diff --git a/src/com/IDCard/IDCardModel.java b/src/com/IDCard/IDCardModel.java
new file mode 100644
index 0000000..5c76571
--- /dev/null
+++ b/src/com/IDCard/IDCardModel.java
@@ -0,0 +1,141 @@
+package com.IDCard;
+
+import android.graphics.Bitmap;
+
+public class IDCardModel {
+ private Bitmap bitmap; //头像位图
+ private String Name; //名字
+ private String Sex; //性别
+ private String Nation; //民族
+ private String Year; //出生 年
+ private String Month; //月
+ private String Day; //日
+ private String Address; //住址
+ private String Office; //签发机关
+ private String IDCardNumber; //身份证号
+ private String BeginTime; //有效期开始时间
+ private String EndTime; //有效期结束时间
+ private String OtherData; //额外信息
+ public IDCardModel()
+ {
+ super();
+ };
+ public IDCardModel(Bitmap bitmap, String Name, String Nation, String Sex, String Year, String Month, String Day, String Address
+ , String Office, String IDCardNumber, String OtherData, String BeginTime, String EndTime, int IsOut)
+ {
+ super();
+ this.bitmap = bitmap;
+ this.Name = Name;
+ this.Nation = Nation;
+ this.Sex = Sex;
+ this.Year = Year;
+ this.Month = Month;
+ this.Day = Day;
+ this.Address = Address;
+ this.Office = Office;
+ this.IDCardNumber = IDCardNumber;
+ this.OtherData = OtherData;
+ this.BeginTime = BeginTime;
+ this.EndTime = EndTime;
+ }
+ public void setPhotoBitmap(Bitmap bitmap)
+ {
+ this.bitmap = bitmap;
+ }
+ public Bitmap getPhotoBitmap()
+ {
+ return bitmap;
+ }
+ public void setName(String Name_string)
+ {
+ this.Name = Name_string;
+
+ }
+ public String getName()
+ {
+ return Name;
+ }
+ public void setNation(String Nation)
+ {
+ this.Nation = Nation;
+
+ }
+ public String getNation()
+ {
+ return Nation;
+ }
+ public void setSex(String Sex)
+ {
+ this.Sex = Sex;
+
+ }
+ public String getSex()
+ {
+ return Sex;
+ }
+ public void setYear(String Year)
+ {
+ this.Year = Year;
+
+ }
+ public String getYear()
+ {
+ return Year;
+ }
+ public void setMonth(String Month)
+ {
+ this.Month = Month;
+
+ }
+ public String getMonth()
+ {
+ return Month;
+ }
+ public void setDay(String Day)
+ {
+ this.Day = Day;
+
+ }
+ public String getDay()
+ {
+ return Day;
+ }public void setAddress(String Address)
+ {
+ this.Address = Address;
+
+ }
+ public String getAddress()
+ {
+ return Address;
+ }
+ public void setIDCardNumber(String IDCardNumber) {
+ this.IDCardNumber = IDCardNumber;
+ }
+ public String getIDCardNumber() {
+ return IDCardNumber;
+ }
+ public void setOffice(String Office) {
+ this.Office = Office;
+ }
+ public String getOffice() {
+ return Office;
+ }
+ public void setOtherData(String OtherData) {
+ this.OtherData = OtherData;
+ }
+ public String getOtherData() {
+ return OtherData;
+ }
+ public void setBeginTime(String BeginTime) {
+ this.BeginTime = BeginTime;
+ }
+ public String getBeginTime() {
+ return BeginTime;
+ }
+ public void setEndTime(String EndTime) {
+ this.EndTime = EndTime;
+ }
+ public String getEndTime() {
+ return EndTime;
+ }
+}
diff --git a/src/com/IDCard/KeyReceiver.java b/src/com/IDCard/KeyReceiver.java
new file mode 100644
index 0000000..5c2748f
--- /dev/null
+++ b/src/com/IDCard/KeyReceiver.java
@@ -0,0 +1,18 @@
+package com.IDCard;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+public class KeyReceiver extends BroadcastReceiver {
+
+ private String TAG = "KeyReceiver" ;
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ int keyCode = intent.getIntExtra("keyCode", 0) ;
+ boolean keyDown = intent.getBooleanExtra("keydown", false) ;
+// LogUtil.e(TAG, "KEYcODE = " + keyCode + ", Down = " + keyDown);
+
+ }
+
+}
diff --git a/src/com/IDCard/ScanService.java b/src/com/IDCard/ScanService.java
new file mode 100644
index 0000000..0873786
--- /dev/null
+++ b/src/com/IDCard/ScanService.java
@@ -0,0 +1,173 @@
+package com.IDCard;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+//import aidl.com.ectrip.scanbarcode_jp.IScan
+import com.ectrip.scanbarcode_jp.IScan;
+import com.hsm.barcode.DecodeResult;
+import com.hsm.barcode.Decoder;
+import com.hsm.barcode.DecoderConfigValues.SymbologyID;
+import com.hsm.barcode.DecoderException;
+import com.hsm.barcode.SymbologyConfig;
+
+public class ScanService extends Service {
+
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+
+ return mAidlScan;
+ }
+
+
+
+ private AidlScan mAidlScan = new AidlScan();
+
+ /**
+ * 实现具体的代码
+ * @author Administrator
+ *
+ */
+ class AidlScan extends IScan.Stub {
+
+ private Decoder mDecoder ;
+ private DecodeResult mDecodeResult;
+
+ private String barcode = null;
+ private boolean scanning = false ;
+ @Override
+ public void initEngine() throws RemoteException {
+ mDecoder = new Decoder();
+ try {
+ mDecoder.connectDecoderLibrary();
+ initPara();
+ } catch (DecoderException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ private void initPara(){
+ try {
+ mDecoder.enableSymbology(SymbologyID.SYM_QR);
+ mDecoder.enableSymbology(SymbologyID.SYM_PDF417);
+ mDecoder.enableSymbology(SymbologyID.SYM_EAN13);
+
+// mDecoder.enableSymbology(SymbologyID.SYM_DATAMATRIX);
+// mDecoder.enableSymbology(SymbologyID.SYM_UPCA);
+// mDecoder.enableSymbology(SymbologyID.SYM_CHINAPOST);
+
+// mDecoder.enableSymbology(SymbologyID.SYM_CODE39);
+// mDecoder.enableSymbology(SymbologyID.SYM_CODE128);
+// mDecoder.enableSymbology(SymbologyID.SYM_EAN8);
+// mDecoder.enableSymbology(SymbologyID.SYM_CODE32);
+ //打开EAN13码校验
+ SymbologyConfig config = new SymbologyConfig(SymbologyID.SYM_EAN13);
+ config.Flags = 5 ;
+ config.Mask = 1 ;
+ mDecoder.setSymbologyConfig(config);
+ try {
+ mDecoder.startScanning();
+ Thread.sleep(50);
+ mDecoder.stopScanning();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ } catch (DecoderException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private Thread scanThread = null ;
+ @Override
+ public String scan() throws RemoteException {
+ barcode = null;
+ if(!scanning){
+ if(scanThread != null ){
+ //线程不为null强制中断
+ scanThread.interrupt() ;
+ scanThread = null ;
+ }
+ //创建单线程
+ scanThread = new Thread(scanRun);
+ scanThread.start() ;
+ }
+ return getBarcode();
+ }
+
+ private Runnable scanRun = new Runnable() {
+
+ @Override
+ public synchronized void run() {
+ if(mDecoder != null){
+ scanning = true ;
+ try {//ɨ��
+ boolean is = mDecoder.callbackKeepGoing();
+ Thread.sleep(50) ;
+ //扫描,超时为5秒
+ mDecoder.waitForDecodeTwo(5000, mDecodeResult);
+
+ if(mDecoder.getBarcodeData() != null && mDecoder.getBarcodeLength() > 0){
+ barcode = mDecoder.getBarcodeData() ;
+ byte[] barByte = barcode.getBytes() ;
+ }
+ //减慢速度
+ Thread.sleep(50) ;
+ scanning = false ;
+ } catch (DecoderException e) {
+ try {
+ Thread.sleep(100) ;
+ } catch (InterruptedException e1) {
+ e1.printStackTrace();
+ }
+ e.printStackTrace();
+
+ scanning = false ;
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+ };
+
+ private String getBarcode(){
+ int count = 50;
+ while(count > 0){
+ count--;
+ if(barcode != null){
+ break;
+ }
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ return barcode;
+ }
+
+ @Override
+ public void close() throws RemoteException {
+ if(mDecoder != null){
+ try {
+ mDecoder.disconnectDecoderLibrary();
+ } catch (DecoderException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ }
+
+}
diff --git a/src/com/ectrip/cyt/bean/IdBean.java b/src/com/ectrip/cyt/bean/IdBean.java
new file mode 100644
index 0000000..1d1f134
--- /dev/null
+++ b/src/com/ectrip/cyt/bean/IdBean.java
@@ -0,0 +1,52 @@
+package com.ectrip.cyt.bean;
+
+import java.io.Serializable;
+
+public class IdBean implements Serializable {
+
+ private String id;
+ private String name;
+ private String sex;
+ private String addr;
+ private String photo;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAddr() {
+ return addr;
+ }
+
+ public void setAddr(String addr) {
+ this.addr = addr;
+ }
+
+ public String getPhoto() {
+ return photo;
+ }
+
+ public void setPhoto(String photo) {
+ this.photo = photo;
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+}
diff --git a/src/com/ectrip/cyt/ui/IDHandleActivity.java b/src/com/ectrip/cyt/ui/IDHandleActivity.java
new file mode 100644
index 0000000..7043044
--- /dev/null
+++ b/src/com/ectrip/cyt/ui/IDHandleActivity.java
@@ -0,0 +1,566 @@
+package com.ectrip.cyt.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+//import com.IDCard.IDCardManager;
+//import com.IDCard.IDCardModel;
+//import com.ectrip.scanbarcode_jp.NETutils.WebserviceHelper;
+//import com.ectrip.scanbarcode_jp.R;
+//import com.ectrip.scanbarcode_jp.callBack.CheckCallBack;
+//import com.ectrip.scanbarcode_jp.callBack.CheckCallBack_ZJ;
+//import com.ectrip.scanbarcode_jp.config.AppContext;
+//import com.ectrip.scanbarcode_jp.constens.ParamContants;
+//import com.ectrip.scanbarcode_jp.constens.ParameterContens;
+//import com.ectrip.scanbarcode_jp.utils.LogUtil;
+//import com.ectrip.scanbarcode_jp.utils.PreferenceUtils;
+//import com.ectrip.scanbarcode_jp.utils.SoundUtil;
+//import com.ectrip.scanbarcode_jp.zxing.MyMap;
+import com.IDCard.IDCardManager;
+import com.IDCard.IDCardModel;
+import com.ectrip.cyt.utils.CountDownTimer;
+import com.ectrip.cyt.utils.LogUtil;
+import com.ectrip.trips.check.R;
+import com.zkteco.android.biometric.core.device.ParameterHelper;
+import com.zkteco.android.biometric.core.device.TransportType;
+import com.zkteco.android.biometric.core.utils.LogHelper;
+import com.zkteco.android.biometric.module.idcard.IDCardReader;
+import com.zkteco.android.biometric.module.idcard.IDCardReaderFactory;
+import com.zkteco.android.biometric.module.idcard.exception.IDCardReaderException;
+import com.zkteco.android.biometric.module.idcard.meta.IDCardInfo;
+
+import java.io.File;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+
+public class IDHandleActivity extends BaseActivity {
+
+ private Bitmap photoBitmap = null;
+ private IDCardManager manager;
+ private ReadThread thread;
+ private Toast toast;
+ private TextView topBack;
+ private TextView tv_ship_name;
+ private TextView tv_ship_check;
+ private LinearLayout ll_ship;
+ private int type;
+ private String gardenID;
+ private static final String TAG = "IDHandleActivity";
+ private TextView noId;
+ private TextView title;
+ private TextView count_textView;
+ private int count;
+ private Context mContext;
+
+ private void showToast(String info) {
+ if (toast == null) {
+ toast = Toast.makeText(mContext, info, Toast.LENGTH_SHORT);
+ } else {
+ toast.setText(info);
+ }
+ toast.show();
+ }
+
+ @SuppressLint("HandlerLeak")
+ private Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 0:
+// showToast("读身份证成功!");
+ Bundle bundle = msg.getData();
+ //获取身份证信息:姓名、性别、出生年、月、日、住址、身份证号、签发机关、有效期开始、结束、(额外信息新地址(一般情况为空))
+// String name = bundle.getString("name");
+// String sex = bundle.getString("sex");
+// String nation = bundle.getString("nation");
+// String year = bundle.getString("year");
+// String month = bundle.getString("month");
+// String day = bundle.getString("day");
+// String address = bundle.getString("address");
+// String office = bundle.getString("office");
+// String start = bundle.getString("begin");
+// String stop = bundle.getString("end");
+// String newaddress = bundle.getString("newaddress");
+ String id = bundle.getString("id");
+ checkByID(id);
+ break;
+ case 1:
+ showToast("发现身份证!");
+ break;
+ case 2:
+ showToast("");
+ break;
+ case 3:
+
+ break;
+ default:
+ break;
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_id_handle_new);
+ type = getIntent().getIntExtra("type", -1);
+// gardenID = PreferenceUtils.getString(mContext, ParamContants.GET_ACCID, "");
+ initView();
+ initData();
+ ininlistener();
+
+ String devType = Build.MODEL;
+ if (devType.startsWith("ax6737")) {
+ initAX6737();
+ return;
+ }
+
+
+ String path = Environment.getExternalStorageDirectory() + "/IDCard";
+ File file_paper = new File(path);
+ if (!file_paper.exists()) {
+ file_paper.mkdirs();
+ }
+
+ openDev();
+
+ }
+
+ private void initAX6737() {
+ startIDCardReader();
+ try {
+ mIdCardReader.open(0);
+ } catch (IDCardReaderException e) {
+ e.printStackTrace();
+ }
+ mIDCardReadThread = new IDCardReadThread();
+ mRunFlag = true;
+ mIDCardReadThread.start();
+ }
+// /**
+// * 身份证模块打开状态
+// */
+// private boolean mIDCardReaderEnable = false;
+ /**
+ * 身份证线程运行控制标记
+ */
+ private boolean mRunFlag = false;
+
+ /**
+ * 初始化身份证阅读器
+ */
+ private void startIDCardReader() {
+ try {
+ LogHelper.setLevel(Log.ASSERT);
+ // Start fingerprint sensor
+ Map idReaderParams = new HashMap<>(2);
+ idReaderParams.put(ParameterHelper.PARAM_SERIAL_SERIALNAME, "/dev/ttyMT1");
+ idReaderParams.put(ParameterHelper.PARAM_SERIAL_BAUDRATE, 115200);
+ mIdCardReader = IDCardReaderFactory.createIDCardReader(this, TransportType.SERIALPORT, idReaderParams);
+ } catch (Exception e) {
+ e.printStackTrace();
+ showToast("身份证模块初始化错误" + e.getMessage());
+ }
+ }
+
+ /**
+ * 身份证读取线程
+ */
+ private IDCardReader mIdCardReader;
+ private IDCardReadThread mIDCardReadThread;
+
+ private class IDCardReadThread extends Thread {
+ @Override
+ public void run() {
+ while (mRunFlag) {
+ if (mIdCardReader != null) {
+ try {
+ Thread.sleep(1000);
+ boolean cardAvailable = mIdCardReader.findCard(0);
+ LogUtil.i(TAG, "cardAvailable === " + cardAvailable);
+ if (cardAvailable) {
+ boolean selected = mIdCardReader.selectCard(0);
+ LogUtil.i(TAG, "selected === " + selected);
+ if (selected) {
+ handler.sendEmptyMessage(1);
+ int readCardEx = mIdCardReader.readCardEx(0, 0);
+ if (readCardEx == 1 || readCardEx == 2 || readCardEx == 3) {
+ //居民身份证
+ IDCardInfo lastIDCardInfo = mIdCardReader.getLastIDCardInfo();
+
+ Message message = new Message();
+ Bundle bundle = new Bundle();
+ bundle.putString("id", lastIDCardInfo.getId());
+ message.setData(bundle);
+ handler.sendMessage(message);
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ LogUtil.i(TAG, "Read card error = " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+ super.run();
+ }
+ }
+
+
+ private void openDev() {
+ if (manager == null) {
+ manager = new IDCardManager(mContext);
+ }
+ startFlag = true;
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ startFlag = true;
+ runFlag = true;
+ thread = new ReadThread();
+ thread.start();
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ startFlag = false;
+ runFlag = false;
+// if (manager!=null) {
+// manager.Close();
+// manager = null;
+// }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+// showShipType();
+// count = PreferenceUtils.getInt(mContext, "count", 0);
+// count_textView.setText(count + "");
+ }
+
+ private String showShipType;
+ private Handler mHandle = new Handler();
+
+// private void showShipType() {
+// showShipType = PreferenceUtils.getString(this, "showShipType", "no");
+// if (showShipType.equals("yes")) {
+// ll_ship.setVisibility(View.VISIBLE);
+// mHandle.postDelayed(shipRunable, 100);
+// } else {
+// ll_ship.setVisibility(View.GONE);
+// }
+// }
+
+// private Runnable shipRunable = new Runnable() {
+// @Override
+// public void run() {
+// getShowShipType();
+// mHandle.postDelayed(this, 20 * 1000);
+// }
+// };
+
+// private void getShowShipType() {
+//
+// String count = PreferenceUtils.getString(mContext, ParamContants.GET_PASS_TOTAL, "0/0");
+// String name = PreferenceUtils.getString(mContext, ParamContants.GET_SHIP_NAME, "");
+// tv_ship_check.setText(count);
+// tv_ship_name.setText(name);
+// }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+// if (mHandle != null && shipRunable != null) {
+// mHandle.removeCallbacks(shipRunable);
+// }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ startFlag = false;
+ if (manager != null) {
+ manager.Close();
+ manager = null;
+ }
+ if (mRunFlag) {
+ mRunFlag = false;
+ mIDCardReadThread.interrupt();
+ try {
+ mIdCardReader.close(0);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private void initView() {
+// tv_ship_name = (TextView) findViewById(R.id.tv_ship_name);
+// tv_ship_check = (TextView) findViewById(R.id.tv_ship_check);
+// ll_ship = (LinearLayout) findViewById(R.id.ll_ship);
+ topBack = (TextView) findViewById(R.id.topBack);
+ noId = (TextView) findViewById(R.id.tv_no_id);
+ title = (TextView) findViewById(R.id.title);
+// count_textView = (TextView) findViewById(R.id.top_count);
+ //提示读取身份证区
+// String keepType = PreferenceUtils.getString(this, "keepScreenOn", "yes");
+// if (keepType.equals("yes")) {
+// topBack.setKeepScreenOn(true);
+// } else {
+// topBack.setKeepScreenOn(false);
+// }
+// if (type == 1) {
+ title.setText("检票—身份证");
+// } else if (type == 2) {
+// title.setText("监票—身份证");
+// }
+ }
+
+
+ private void initData() {
+ mContext = this;
+// String Ip = PreferenceUtils.getString(AppContext.getInstance(), ParameterContens.SET_ip);
+// String url = "http://" + Ip + "/android/gardenCount.jsp";
+// Map parme = new HashMap<>();
+// parme.put(ParamContants.GET_ACCID, gardenID);
+// try {
+// new BaseGetProtocol().loadMoreData(this,url,parme, new BaseGetProtocol.onNetCallback() {
+// @Override
+// public void onFailure(String erro) {
+// topBtns.setText("入园人数未获取");
+// }
+//
+// @Override
+// public void onSuccessed(String jsonGetFromService) {
+// topBtns.setText(jsonGetFromService.trim());
+// }
+// });
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+ }
+
+ private void ininlistener() {
+ //点击头部返回键,关闭当前activity
+ topBack.setOnClickListener(new View.OnClickListener() {
+
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ noId.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent phone = new Intent(mContext, InputIdCardActivity.class);
+ phone.putExtra("type", type);
+ startActivity(phone);
+ }
+ });
+ }
+
+ /**
+ * 处理扫描结果
+ *
+ * @param barcode
+ */
+
+ private void checkByID(final String barcode) {
+ String data = "";
+// tring barcode = idBean.getId();
+ LogUtil.d(TAG,"获取的身份证号:" +barcode);
+
+ Intent intent = new Intent(IDHandleActivity.this,
+ IDOrderListActivity.class);
+ CountDownTimer.firstTime = new Date().getTime();// 不必要的可以删除
+ intent.putExtra("mode", 0);
+ intent.putExtra("idcardNumber", barcode);
+ intent.putExtra("titleName", getString(R.string.order_list));
+ startActivity(intent);
+// ShowResultActivity.barcode = barcode;
+// startFlag = false;
+// runFlag = false;
+// //检票
+// if (type == 1) {
+// data = gardenID + "," + barcode + ",JP";
+// final String finalData1 = data;
+// String reqZJ = PreferenceUtils.getString(mContext, "reqZJ", "no");
+// if (reqZJ.equals("yes")) {
+// WebserviceHelper.getInstance().checkTickt(gardenID + "," + barcode, "CheckTicket", new CheckCallBack_ZJ(IDHandleActivity.this) {
+// @Override
+// public void getMap(Map map) {
+// MyMap myMap = new MyMap();
+// myMap.setMap(map);
+// if (map == null || map.get("message1") == null) {
+// Toast.makeText(context, "获取票信息失败,请重试", Toast.LENGTH_SHORT).show();
+// return;
+// }
+// String ticketFlag = map.get("message1").toString();
+// if (ticketFlag != null && !"".equals(ticketFlag)) {
+// int flag = Integer.valueOf(ticketFlag);
+// LogUtil.i(TAG, "票状态--------> " + flag);
+// if (flag == 1) {//登记指纹
+// SoundUtil.getInstents(IDHandleActivity.this).playSound(R.raw.dengjizhiwen, -1);
+// } else if (flag == 2) {//验证指纹
+// SoundUtil.getInstents(IDHandleActivity.this).playSound(R.raw.yanzhengzhiwen, -1);
+// } else {//直接信息显示
+// //传递Map到ShowResult.java 显示
+// Intent intent = new Intent(mContext, ShowResultActivity
+// .class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// bundle.putString("activityName", TAG);
+// intent.putExtras(bundle);
+// intent.putExtra("type", type);
+// startActivity(intent);
+// // finish();
+// }
+// }
+// }
+//
+// @Override
+// public void failureToDo() {
+// Toast.makeText(context, "检票失败,请重试", Toast.LENGTH_SHORT).show();
+// }
+// }, 7);
+// } else {
+// WebserviceHelper.getInstance().test(data, "CheckscTicketmebile", new CheckCallBack
+// (IDHandleActivity.this) {
+//
+// @Override
+// public void failureToDo() {
+// Toast.makeText(context, "检票失败,请重试", Toast.LENGTH_SHORT).show();
+// }
+//
+// @Override
+// public void getMap(Map map) {
+// MyMap myMap = new MyMap();
+// myMap.setMap(map);
+// if (map == null || map.get("message1") == null) {
+// Toast.makeText(context, "获取票信息失败,请重试", Toast.LENGTH_SHORT).show();
+// return;
+// }
+// String ticketFlag = map.get("message1").toString();
+// if (ticketFlag != null && !"".equals(ticketFlag)) {
+// int flag = Integer.valueOf(ticketFlag);
+// LogUtil.i(TAG, "票状态--------> " + flag);
+// if (flag == 1) {//登记指纹
+// SoundUtil.getInstents(IDHandleActivity.this).playSound(R.raw.dengjizhiwen, -1);
+// } else if (flag == 2) {//验证指纹
+// SoundUtil.getInstents(IDHandleActivity.this).playSound(R.raw.yanzhengzhiwen, -1);
+// } else {//直接信息显示
+// //传递Map到ShowResult.java 显示
+// Intent intent = new Intent(mContext, ShowResultActivity
+// .class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// bundle.putString("activityName", TAG);
+// intent.putExtras(bundle);
+// intent.putExtra("type", type);
+// startActivity(intent);
+// // finish();
+// }
+// }
+//
+// }
+// }, 2);
+// }
+//
+// } else if (type == 2) {
+// data = gardenID + "," + barcode + ",CX";
+// final String finalData = data;
+// WebserviceHelper.getInstance().test(data, "CheckscTicketmebile", new CheckCallBack(IDHandleActivity.this) {
+//
+// @Override
+// public void failureToDo() {
+// Toast.makeText(context, "获取票信息失败,请重试", Toast.LENGTH_SHORT).show();
+//
+// }
+//
+// @Override
+// public void getMap(Map map) {
+// MyMap myMap = new MyMap();
+// myMap.setMap(map);
+// Intent intent = new Intent(mContext, ShowResultActivity.class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// bundle.putString("activityName", TAG);
+// intent.putExtras(bundle);
+// startActivity(intent);
+// // finish();
+// }
+// }, 2);
+// }
+ }
+
+ private boolean runFlag = true;
+ private boolean startFlag = false;
+
+ private class ReadThread extends Thread {
+ @Override
+ public void run() {
+ while (runFlag) {
+ if (startFlag && manager != null) {
+ if (manager.FindCard(200)) {
+ handler.sendEmptyMessage(1);
+ IDCardModel model = manager.GetData(1000);
+ if (model != null) {
+ sendMessage(model.getName(), model.getSex(), model.getNation(),
+ model.getYear(), model.getMonth(), model.getDay(),
+ model.getAddress(), model.getIDCardNumber(), model.getOffice(),
+ model.getBeginTime(), model.getEndTime(), model.getOtherData());
+ }
+ }
+ }
+ try {
+ sleep(100);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ super.run();
+ }
+
+ private void sendMessage(String name, String sex, String nation,
+ String year, String month, String day, String address, String id,
+ String office, String start, String stop, String newaddress
+ ) {
+ Message message = new Message();
+ Bundle bundle = new Bundle();
+// bundle.putString("name", name);
+// bundle.putString("sex", sex);
+// bundle.putString("nation", nation);
+// bundle.putString("year", year);
+// bundle.putString("month", month);
+// bundle.putString("day", day);
+// bundle.putString("address", address);
+// bundle.putString("office", office);
+// bundle.putString("begin", start);
+// bundle.putString("end", stop);
+// bundle.putString("newaddress", newaddress);
+ bundle.putString("id", id);
+// photoBitmap = bitmap;
+ message.setData(bundle);
+ handler.sendMessage(message);
+ }
+ }
+
+}
diff --git a/src/com/ectrip/cyt/ui/IDHandleRSKActivity.java b/src/com/ectrip/cyt/ui/IDHandleRSKActivity.java
index ca6985b..eb34572 100644
--- a/src/com/ectrip/cyt/ui/IDHandleRSKActivity.java
+++ b/src/com/ectrip/cyt/ui/IDHandleRSKActivity.java
@@ -52,7 +52,7 @@ public class IDHandleRSKActivity extends BaseActivity {
private boolean isShowShip;
private TextView noId;
// private TextView tvCount;
-
+ private String titleName;
private final int MSG_CHECK = 1;
private final int MSG_INIT_DEV = 2;
private final int MSG_CHECK1 = 3;
@@ -198,7 +198,7 @@ public class IDHandleRSKActivity extends BaseActivity {
// tvCount = (TextView) findViewById(R.id.top_count);
TextView title = (TextView) findViewById(R.id.title);
title.setVisibility(View.VISIBLE);
- title.setText("检票—身份证");
+// title.setText("检票—身份证");
// if (isShowShip) {
// llShip.setVisibility(View.VISIBLE);
@@ -208,10 +208,16 @@ public class IDHandleRSKActivity extends BaseActivity {
}
private void initData() {
- type = getIntent().getIntExtra("type", -1);
+// type = getIntent().getIntExtra("type", -1);
// gardenID = PreferenceUtils.getString(mContext, ParamContants.GET_ACCID, "");
// String showShipType = PreferenceUtils.getString(mContext, "showShipType", "no");
// isShowShip = TextUtils.equals(showShipType, "yes");
+ titleName=getIntent().getStringExtra("titleName");
+ if(titleName!=null){
+ ((TextView)findViewById(R.id.title)).setText(titleName);
+ }else{
+ ((TextView)findViewById(R.id.title)).setText(R.string.scan_id);
+ }
mContext = this;
}
@@ -227,7 +233,7 @@ public class IDHandleRSKActivity extends BaseActivity {
@Override
public void onClick(View v) {
Intent phone = new Intent(mContext, InputIdCardActivity.class);
- phone.putExtra("type", type);
+// phone.putExtra("type", type);
startActivity(phone);
}
});
diff --git a/src/com/ectrip/cyt/ui/ScanHeadActivity.java b/src/com/ectrip/cyt/ui/ScanHeadActivity.java
index 048914b..4dfa9f8 100644
--- a/src/com/ectrip/cyt/ui/ScanHeadActivity.java
+++ b/src/com/ectrip/cyt/ui/ScanHeadActivity.java
@@ -1,6 +1,7 @@
package com.ectrip.cyt.ui;
import android.annotation.SuppressLint;
+import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
@@ -13,19 +14,24 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
-import com.ectrip.scanbarcode_jp.NETutils.WebserviceHelper;
-import com.ectrip.scanbarcode_jp.R;
-import com.ectrip.scanbarcode_jp.bean.IdBean;
-import com.ectrip.scanbarcode_jp.callBack.CheckCallBack;
-import com.ectrip.scanbarcode_jp.callBack.CheckCallBack_ZJ;
-import com.ectrip.scanbarcode_jp.callBack.CountCallBack;
-import com.ectrip.scanbarcode_jp.constens.ParamContants;
-import com.ectrip.scanbarcode_jp.constens.ParameterContens;
-import com.ectrip.scanbarcode_jp.utils.LogUtil;
-import com.ectrip.scanbarcode_jp.utils.PreferenceUtils;
-import com.ectrip.scanbarcode_jp.utils.SoundUtil;
-import com.ectrip.scanbarcode_jp.utils.TimesUtils;
-import com.ectrip.scanbarcode_jp.zxing.MyMap;
+//import com.ectrip.scanbarcode_jp.NETutils.WebserviceHelper;
+//import com.ectrip.scanbarcode_jp.R;
+//import com.ectrip.scanbarcode_jp.bean.IdBean;
+//import com.ectrip.scanbarcode_jp.callBack.CheckCallBack;
+//import com.ectrip.scanbarcode_jp.callBack.CheckCallBack_ZJ;
+//import com.ectrip.scanbarcode_jp.callBack.CountCallBack;
+//import com.ectrip.scanbarcode_jp.constens.ParamContants;
+//import com.ectrip.scanbarcode_jp.constens.ParameterContens;
+//import com.ectrip.scanbarcode_jp.utils.LogUtil;
+//import com.ectrip.scanbarcode_jp.utils.PreferenceUtils;
+//import com.ectrip.scanbarcode_jp.utils.SoundUtil;
+//import com.ectrip.scanbarcode_jp.utils.TimesUtils;
+//import com.ectrip.scanbarcode_jp.zxing.MyMap;
+import com.ectrip.cyt.bean.IdBean;
+import com.ectrip.cyt.utils.CountDownTimer;
+import com.ectrip.cyt.utils.LogUtil;
+import com.ectrip.cyt.utils.SoundUtil;
+import com.ectrip.trips.check.R;
import com.google.gson.Gson;
import com.zkteco.android.biometric.core.device.ParameterHelper;
import com.zkteco.android.biometric.core.device.TransportType;
@@ -36,6 +42,7 @@ import com.zkteco.android.biometric.module.idcard.exception.IDCardReaderExceptio
import com.zkteco.android.biometric.module.idcard.meta.IDCardInfo;
import com.znht.iodev2.PowerCtl;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -51,14 +58,14 @@ public class ScanHeadActivity extends BaseActivity {
private TextView noId;
private TextView title;
- private TextView count_textView;
- private Button topBack;
+// private TextView count_textView;
+ private TextView topBack;
private TextView tv_ship_name;
private TextView tv_ship_check;
private LinearLayout ll_ship,ll_bottom;
private TextView tv_total_number;
private TextView tv_number;
-
+ private String titleName;
private int type;
private String gardenID;
private String isIDinFree;
@@ -69,6 +76,7 @@ public class ScanHeadActivity extends BaseActivity {
private Toast toast;
private ReadThread mThread;
+ private Context mContext;
private void showToast(String info) {
if (toast == null) {
@@ -95,7 +103,7 @@ public class ScanHeadActivity extends BaseActivity {
break;
case MSG_GET_ID:
showToast("读身份证成功!");
- SoundUtil.getInstents(mContext).playWavSound(R.raw.beep);
+ SoundUtil.getInstents(ScanHeadActivity.this).playWavSound(R.raw.beep);
IDCardInfo idCardInfo = (IDCardInfo) msg.obj;
IdBean idBean = new IdBean();
@@ -114,7 +122,7 @@ public class ScanHeadActivity extends BaseActivity {
showToast(content);
break;
case MSG_SHOW_SHIP:
- getShowShipType();
+// getShowShipType();
mHandle.sendEmptyMessageDelayed(MSG_SHOW_SHIP, 10000);
break;
default:
@@ -138,9 +146,9 @@ public class ScanHeadActivity extends BaseActivity {
@Override
protected void onResume() {
super.onResume();
- showCountType();
- int count = PreferenceUtils.getInt(mContext, "count", 0);
- count_textView.setText(String.valueOf(count));
+// showCountType();
+// int count = PreferenceUtils.getInt(mContext, "count", 0);
+// count_textView.setText(String.valueOf(count));
running = true;
mThread = new ReadThread();
mThread.start();
@@ -148,13 +156,13 @@ public class ScanHeadActivity extends BaseActivity {
mHandle.sendEmptyMessageDelayed(MSG_SHOW_SHIP, 100);
}
- private void getShowShipType() {
-
- String count = PreferenceUtils.getString(mContext, ParamContants.GET_PASS_TOTAL, "0/0");
- String name = PreferenceUtils.getString(mContext, ParamContants.GET_SHIP_NAME, "");
- tv_ship_check.setText(count);
- tv_ship_name.setText(name);
- }
+// private void getShowShipType() {
+//
+// String count = PreferenceUtils.getString(mContext, ParamContants.GET_PASS_TOTAL, "0/0");
+// String name = PreferenceUtils.getString(mContext, ParamContants.GET_SHIP_NAME, "");
+// tv_ship_check.setText(count);
+// tv_ship_name.setText(name);
+// }
/**
* 初始化身份证模块
@@ -185,8 +193,8 @@ public class ScanHeadActivity extends BaseActivity {
}
} catch (IDCardReaderException e) {
//打开模块失败给出提示
- Toast.makeText(this, R.string.open_fail, Toast.LENGTH_SHORT).show();
- LogHelper.d(getString(R.string.err_message) + ": " + e.getMessage() + "\n" + getString(R.string.err_code) + e.getInternalErrorCode());
+ Toast.makeText(this, "模块打开失败", Toast.LENGTH_SHORT).show();
+ LogHelper.d("错误信息" + ": " + e.getMessage() + "\n" + "错误码" + e.getInternalErrorCode());
}
}
@@ -209,45 +217,45 @@ public class ScanHeadActivity extends BaseActivity {
}
private void initView() {
- tv_ship_name = (TextView) findViewById(R.id.tv_ship_name);
- tv_ship_check = (TextView) findViewById(R.id.tv_ship_check);
- ll_ship = (LinearLayout) findViewById(R.id.ll_ship);
- ll_bottom = (LinearLayout) findViewById(R.id.ll_bottom);
- topBack = (Button) findViewById(R.id.top_back);
+// tv_ship_name = (TextView) findViewById(R.id.tv_ship_name);
+// tv_ship_check = (TextView) findViewById(R.id.tv_ship_check);
+// ll_ship = (LinearLayout) findViewById(R.id.ll_ship);
+// ll_bottom = (LinearLayout) findViewById(R.id.ll_bottom);
+ topBack = (TextView) findViewById(R.id.topBack);
noId = (TextView) findViewById(R.id.tv_no_id);
- title = (TextView) findViewById(R.id.top_title);
- count_textView = (TextView) findViewById(R.id.top_count);
- tv_total_number = (TextView) findViewById(R.id.tv_total_number);
- tv_number = (TextView) findViewById(R.id.tv_szticketname);
+ title = (TextView) findViewById(R.id.title);
+// count_textView = (TextView) findViewById(R.id.top_count);
+// tv_total_number = (TextView) findViewById(R.id.tv_total_number);
+// tv_number = (TextView) findViewById(R.id.tv_szticketname);
//提示读取身份证区
- String keepType = PreferenceUtils.getString(mContext, "keepScreenOn", "yes");
- if (keepType.equals("yes")) {
- topBack.setKeepScreenOn(true);
- } else {
- topBack.setKeepScreenOn(false);
- }
+// String keepType = PreferenceUtils.getString(mContext, "keepScreenOn", "yes");
+// if (keepType.equals("yes")) {
+// topBack.setKeepScreenOn(true);
+// } else {
+// topBack.setKeepScreenOn(false);
+// }
type = getIntent().getIntExtra("type", -1);
- if (type == 1) {
- title.setText("检票");
- } else if (type == 2) {
- title.setText("监票");
- }
-
- String showShipType = PreferenceUtils.getString(mContext, "showShipType", "no");
- checktype = PreferenceUtils.getInt(mContext, "CHECKTYPE", 0);
- LogUtil.e(TAG, "showShipType = " + showShipType);
- if (TextUtils.equals("yes", showShipType)) {
- ll_ship.setVisibility(View.VISIBLE);
- } else {
- ll_ship.setVisibility(View.GONE);
- }
- showCountType = PreferenceUtils.getString(mContext, "showCountType", "no");
- if (TextUtils.equals("yes", showCountType) ) {
- ll_bottom.setVisibility(View.VISIBLE);
- } else {
- ll_bottom.setVisibility(View.GONE);
- }
+// if (type == 1) {
+// title.setText("检票—身份证");
+// } else if (type == 2) {
+// title.setText("监票");
+// }
+
+// String showShipType = PreferenceUtils.getString(mContext, "showShipType", "no");
+// checktype = PreferenceUtils.getInt(mContext, "CHECKTYPE", 0);
+// LogUtil.e(TAG, "showShipType = " + showShipType);
+// if (TextUtils.equals("yes", showShipType)) {
+// ll_ship.setVisibility(View.VISIBLE);
+// } else {
+// ll_ship.setVisibility(View.GONE);
+// }
+// showCountType = PreferenceUtils.getString(mContext, "showCountType", "no");
+// if (TextUtils.equals("yes", showCountType) ) {
+// ll_bottom.setVisibility(View.VISIBLE);
+// } else {
+// ll_bottom.setVisibility(View.GONE);
+// }
}
private void initListener() {
@@ -269,258 +277,273 @@ public class ScanHeadActivity extends BaseActivity {
}
private void initData() {
-
- gardenID = PreferenceUtils.getString(mContext, ParamContants.GET_ACCID, "");
- isIDinFree = PreferenceUtils.getString(mContext, ParameterContens.SET_isIDinFree, "no");
-
- String localStr = PreferenceUtils.getString(mContext, ParameterContens.SET_isIDinFreeContent, "");
- LogUtil.i(TAG, "本地免票数据 2 == " + localStr);
- if (!TextUtils.isEmpty(localStr)) {
- String[] locals = localStr.split(";");
- local_age = locals[0];
- local_addr = locals[1];
- local_sex = locals[2];
- local_id = locals[3];
+ mContext = this;
+ titleName=getIntent().getStringExtra("titleName");
+ if(titleName!=null){
+ ((TextView)findViewById(R.id.title)).setText(titleName);
+ }else{
+ ((TextView)findViewById(R.id.title)).setText(R.string.scan_id);
}
+// gardenID = PreferenceUtils.getString(mContext, ParamContants.GET_ACCID, "");
+// isIDinFree = PreferenceUtils.getString(mContext, ParameterContens.SET_isIDinFree, "no");
+
+// String localStr = PreferenceUtils.getString(mContext, ParameterContens.SET_isIDinFreeContent, "");
+// LogUtil.i(TAG, "本地免票数据 2 == " + localStr);
+// if (!TextUtils.isEmpty(localStr)) {
+// String[] locals = localStr.split(";");
+// local_age = locals[0];
+// local_addr = locals[1];
+// local_sex = locals[2];
+// local_id = locals[3];
+// }
}
private void checkByID(final IdBean idBean) {
String data = "";
String barcode = idBean.getId();
- ShowResultActivity.barcode = barcode;
- if (type == 1) {//检票
-
- boolean isLocalPeople = checkLocalId(idBean);
- if (isLocalPeople) {
-
- Map map = new HashMap();
- map.put("message1", "1005");
- map.put("message9", barcode);
- map.put("message5", "免票人员");
- map.put("message22", "1人");
- map.put("message23", barcode);
- map.put("message24", idBean.getName());
-
- MyMap myMap = new MyMap();
- myMap.setMap(map);
-
- Intent intent = new Intent(mContext, ShowResultActivity.class);
- Bundle bundle = new Bundle();
- bundle.putSerializable("resultMap", myMap);
- bundle.putSerializable("IdBean", idBean);
- bundle.putString("activityName", TAG);
- intent.putExtras(bundle);
- intent.putExtra("type", type);
- startActivity(intent);
- return;
- }
-
- data = gardenID + "," + barcode + ",JP";
- String reqZJ = PreferenceUtils.getString(mContext, "reqZJ", "no");
- if (reqZJ.equals("yes")) {
- WebserviceHelper.getInstance().checkTickt(gardenID + "," + barcode, "CheckTicket", new CheckCallBack_ZJ(ScanHeadActivity.this) {
- @Override
- public void getMap(Map map) {
- MyMap myMap = new MyMap();
-
- myMap.setMap(map);
- String ticketFlag = map.get("message1").toString();
- if (ticketFlag != null && !"".equals(ticketFlag)) {
- int flag = Integer.parseInt(ticketFlag);
- LogUtil.i(TAG, "票状态--------> " + flag);
- String checkFaceType = PreferenceUtils.getString(mContext, "checkFaceType", "no");
- if (TextUtils.equals(checkFaceType, "yes")) {
- //传递Map到ShowResult.java 显示
- myMap.getMap().put("finger", "RL");
- Intent intent = new Intent(context, ShowResultActivity.class);
- Bundle bundle = new Bundle();
- bundle.putSerializable("resultMap", myMap);
- bundle.putString("activityName", TAG);
- intent.putExtras(bundle);
- intent.putExtra("type", type);
- startActivity(intent);
-// finish();
- } else {
- if (flag == 1) {//登记指纹
- SoundUtil.getInstents(ScanHeadActivity.this).playSound(R.raw.dengjizhiwen, -1);
- Toast.makeText(context, "请登记指纹!", Toast.LENGTH_SHORT).show();
- } else if (flag == 2) {//验证指纹
- SoundUtil.getInstents(ScanHeadActivity.this).playSound(R.raw.yanzhengzhiwen, -1);
- Toast.makeText(context, "请验证指纹!", Toast.LENGTH_SHORT).show();
- } else {//直接信息显示
- //传递Map到ShowResult.java 显示
- Intent intent = new Intent(context, ShowResultActivity
- .class);
- Bundle bundle = new Bundle();
- bundle.putSerializable("resultMap", myMap);
- bundle.putString("activityName", TAG);
- intent.putExtras(bundle);
- intent.putExtra("type", type);
- startActivity(intent);
-// finish();
- }
- }
-
- }
- }
-
- @Override
- public void failureToDo() {
- Toast.makeText(context, "检票失败,请重试", Toast.LENGTH_SHORT).show();
- }
- }, 7);
- } else {
-
- WebserviceHelper.getInstance().test(data, "CheckscTicketmebile", new CheckCallBack
- (ScanHeadActivity.this) {
-
- @Override
- public void failureToDo() {
- }
-
- @Override
- public void getMap(Map map) {
- MyMap myMap = new MyMap();
- myMap.setMap(map);
- String ticketFlag = map.get("message1").toString();
- if (ticketFlag != null && !"".equals(ticketFlag)) {
- int flag = Integer.parseInt(ticketFlag);
- LogUtil.i(TAG, "票状态--------> " + flag);
- String checkFaceType = PreferenceUtils.getString(mContext, "checkFaceType", "no");
- if (TextUtils.equals(checkFaceType, "yes")) {
- //传递Map到ShowResult.java 显示
- myMap.getMap().put("finger", "RL");
- Intent intent = new Intent(context, ShowResultActivity.class);
- Bundle bundle = new Bundle();
- bundle.putSerializable("resultMap", myMap);
- bundle.putString("activityName", TAG);
- intent.putExtras(bundle);
- intent.putExtra("type", type);
- startActivity(intent);
-// finish();
- } else {
- if (flag == 1) {//登记指纹
- SoundUtil.getInstents(ScanHeadActivity.this).playSound(R.raw.dengjizhiwen, -1);
- Toast.makeText(context, "请登记指纹!", Toast.LENGTH_SHORT).show();
- } else if (flag == 2) {//验证指纹
- SoundUtil.getInstents(ScanHeadActivity.this).playSound(R.raw.yanzhengzhiwen, -1);
- Toast.makeText(context, "请验证指纹!", Toast.LENGTH_SHORT).show();
- } else {//直接信息显示
- //传递Map到ShowResult.java 显示
- Intent intent = new Intent(context, ShowResultActivity.class);
- Bundle bundle = new Bundle();
- bundle.putSerializable("resultMap", myMap);
- bundle.putString("activityName", TAG);
- intent.putExtras(bundle);
- intent.putExtra("type", type);
- startActivity(intent);
-// finish();
- }
- }
-
- }
-
- }
- }, 2);
- }
- } else if (type == 2) {
- data = gardenID + "," + barcode + ",CX";
- WebserviceHelper.getInstance().test(data, "CheckscTicketmebile", new CheckCallBack(ScanHeadActivity.this) {
-
- @Override
- public void failureToDo() {
- }
-
- @Override
- public void getMap(Map map) {
- MyMap myMap = new MyMap();
- myMap.setMap(map);
- Intent intent = new Intent(context, ShowResultActivity.class);
- Bundle bundle = new Bundle();
- bundle.putSerializable("resultMap", myMap);
- intent.putExtras(bundle);
- startActivity(intent);
-// finish();
- }
- }, 2);
- }
+ LogUtil.d(TAG,"获取的身份证号:" +barcode);
+
+ Intent intent = new Intent(ScanHeadActivity.this,
+ IDOrderListActivity.class);
+ CountDownTimer.firstTime = new Date().getTime();// 不必要的可以删除
+ intent.putExtra("mode", 0);
+ intent.putExtra("idcardNumber", barcode);
+ intent.putExtra("titleName", getString(R.string.order_list));
+ startActivity(intent);
+// ShowResultActivity.barcode = barcode;
+// if (type == 1) {//检票
+//
+// boolean isLocalPeople = checkLocalId(idBean);
+// if (isLocalPeople) {
+//
+// Map map = new HashMap();
+// map.put("message1", "1005");
+// map.put("message9", barcode);
+// map.put("message5", "免票人员");
+// map.put("message22", "1人");
+// map.put("message23", barcode);
+// map.put("message24", idBean.getName());
+//
+// MyMap myMap = new MyMap();
+// myMap.setMap(map);
+//
+// Intent intent = new Intent(mContext, ShowResultActivity.class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// bundle.putSerializable("IdBean", idBean);
+// bundle.putString("activityName", TAG);
+// intent.putExtras(bundle);
+// intent.putExtra("type", type);
+// startActivity(intent);
+// return;
+// }
+//
+// data = gardenID + "," + barcode + ",JP";
+// String reqZJ = PreferenceUtils.getString(mContext, "reqZJ", "no");
+// if (reqZJ.equals("yes")) {
+// WebserviceHelper.getInstance().checkTickt(gardenID + "," + barcode, "CheckTicket", new CheckCallBack_ZJ(ScanHeadActivity.this) {
+// @Override
+// public void getMap(Map map) {
+// MyMap myMap = new MyMap();
+//
+// myMap.setMap(map);
+// String ticketFlag = map.get("message1").toString();
+// if (ticketFlag != null && !"".equals(ticketFlag)) {
+// int flag = Integer.parseInt(ticketFlag);
+// LogUtil.i(TAG, "票状态--------> " + flag);
+// String checkFaceType = PreferenceUtils.getString(mContext, "checkFaceType", "no");
+// if (TextUtils.equals(checkFaceType, "yes")) {
+// //传递Map到ShowResult.java 显示
+// myMap.getMap().put("finger", "RL");
+// Intent intent = new Intent(context, ShowResultActivity.class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// bundle.putString("activityName", TAG);
+// intent.putExtras(bundle);
+// intent.putExtra("type", type);
+// startActivity(intent);
+//// finish();
+// } else {
+// if (flag == 1) {//登记指纹
+// SoundUtil.getInstents(ScanHeadActivity.this).playSound(R.raw.dengjizhiwen, -1);
+// Toast.makeText(context, "请登记指纹!", Toast.LENGTH_SHORT).show();
+// } else if (flag == 2) {//验证指纹
+// SoundUtil.getInstents(ScanHeadActivity.this).playSound(R.raw.yanzhengzhiwen, -1);
+// Toast.makeText(context, "请验证指纹!", Toast.LENGTH_SHORT).show();
+// } else {//直接信息显示
+// //传递Map到ShowResult.java 显示
+// Intent intent = new Intent(context, ShowResultActivity
+// .class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// bundle.putString("activityName", TAG);
+// intent.putExtras(bundle);
+// intent.putExtra("type", type);
+// startActivity(intent);
+//// finish();
+// }
+// }
+//
+// }
+// }
+//
+// @Override
+// public void failureToDo() {
+// Toast.makeText(context, "检票失败,请重试", Toast.LENGTH_SHORT).show();
+// }
+// }, 7);
+// } else {
+//
+// WebserviceHelper.getInstance().test(data, "CheckscTicketmebile", new CheckCallBack
+// (ScanHeadActivity.this) {
+//
+// @Override
+// public void failureToDo() {
+// }
+//
+// @Override
+// public void getMap(Map map) {
+// MyMap myMap = new MyMap();
+// myMap.setMap(map);
+// String ticketFlag = map.get("message1").toString();
+// if (ticketFlag != null && !"".equals(ticketFlag)) {
+// int flag = Integer.parseInt(ticketFlag);
+// LogUtil.i(TAG, "票状态--------> " + flag);
+// String checkFaceType = PreferenceUtils.getString(mContext, "checkFaceType", "no");
+// if (TextUtils.equals(checkFaceType, "yes")) {
+// //传递Map到ShowResult.java 显示
+// myMap.getMap().put("finger", "RL");
+// Intent intent = new Intent(context, ShowResultActivity.class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// bundle.putString("activityName", TAG);
+// intent.putExtras(bundle);
+// intent.putExtra("type", type);
+// startActivity(intent);
+//// finish();
+// } else {
+// if (flag == 1) {//登记指纹
+// SoundUtil.getInstents(ScanHeadActivity.this).playSound(R.raw.dengjizhiwen, -1);
+// Toast.makeText(context, "请登记指纹!", Toast.LENGTH_SHORT).show();
+// } else if (flag == 2) {//验证指纹
+// SoundUtil.getInstents(ScanHeadActivity.this).playSound(R.raw.yanzhengzhiwen, -1);
+// Toast.makeText(context, "请验证指纹!", Toast.LENGTH_SHORT).show();
+// } else {//直接信息显示
+// //传递Map到ShowResult.java 显示
+// Intent intent = new Intent(context, ShowResultActivity.class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// bundle.putString("activityName", TAG);
+// intent.putExtras(bundle);
+// intent.putExtra("type", type);
+// startActivity(intent);
+//// finish();
+// }
+// }
+//
+// }
+//
+// }
+// }, 2);
+// }
+// } else if (type == 2) {
+// data = gardenID + "," + barcode + ",CX";
+// WebserviceHelper.getInstance().test(data, "CheckscTicketmebile", new CheckCallBack(ScanHeadActivity.this) {
+//
+// @Override
+// public void failureToDo() {
+// }
+//
+// @Override
+// public void getMap(Map map) {
+// MyMap myMap = new MyMap();
+// myMap.setMap(map);
+// Intent intent = new Intent(context, ShowResultActivity.class);
+// Bundle bundle = new Bundle();
+// bundle.putSerializable("resultMap", myMap);
+// intent.putExtras(bundle);
+// startActivity(intent);
+//// finish();
+// }
+// }, 2);
+// }
}
private void showCountType() {
- if (TextUtils.equals(showCountType, "yes")) {
- String gardenID = PreferenceUtils.getString(mContext, ParamContants.GET_ACCID, "");
- Long accid = Long.parseLong(gardenID);
- WebserviceHelper.getInstance().request(accid, "getCheckcount", new CountCallBack(ScanHeadActivity.this) {
- @Override
- public void sucessToDo(Object json) {
- List list = new Gson().fromJson(json.toString(), List.class);
- double yun = list.get(1);
- double yun1 = list.get(2);
- int piao = (int) yun;
- int ren = (int) yun1;
- tv_total_number.setText(ren + "/" + piao);
- }
-
- @Override
- public void failureToDo() {
-
- }
- }, 4);
-
- int count = PreferenceUtils.getInt(mContext, "count", 0);
- tv_number.setText(String.valueOf(count));
- }
- }
- private boolean checkLocalId(IdBean idBean) {
- boolean isLocal = false;
-
- if (!TextUtils.equals(isIDinFree, "yes")) {
- return false;
- }
-
- if (!TextUtils.equals(local_age, "0")) {
- LogUtil.i(TAG, "Age == " + local_age);
- isLocal = checkAga(local_age, idBean.getId());
- }
- if (!isLocal && !TextUtils.equals(local_addr, "0")) {
- LogUtil.i(TAG, "Addr == " + local_addr);
- isLocal = checkAddr(local_addr, idBean.getAddr());
- }
-
- if (!isLocal && !TextUtils.equals(local_sex, "0")) {
- LogUtil.i(TAG, "Sex == " + local_sex);
- isLocal = checkSex(local_sex, idBean.getId());
- }
-
- if (!isLocal && !TextUtils.equals(local_id, "0")) {
- LogUtil.i(TAG, "Id == " + local_id);
- isLocal = checkId(local_id, idBean.getId());
- }
- return isLocal;
- }
-
- private boolean checkAga(String ageStr, String scanTicketId) {
-
- String[] localAge;
- if (ageStr.contains("#") && ageStr.contains("-")) {
- localAge = ageStr.split("#");
- } else if (ageStr.contains("-")) {
- localAge = new String[]{ageStr};
- } else {
- return false;
- }
- int tourAge = TimesUtils.getAge(scanTicketId);
- LogUtil.i(TAG, "【身份证年龄:】" + tourAge);
- for (String local : localAge) {
- String[] age = local.split("-");
- int startAge = Integer.parseInt(age[0]);
- int endAge = Integer.parseInt(age[1]);
- if (tourAge >= startAge && tourAge < endAge) {
- return true;
- }
- }
- return false;
-
+// if (TextUtils.equals(showCountType, "yes")) {
+// String gardenID = PreferenceUtils.getString(mContext, ParamContants.GET_ACCID, "");
+// Long accid = Long.parseLong(gardenID);
+// WebserviceHelper.getInstance().request(accid, "getCheckcount", new CountCallBack(ScanHeadActivity.this) {
+// @Override
+// public void sucessToDo(Object json) {
+// List list = new Gson().fromJson(json.toString(), List.class);
+// double yun = list.get(1);
+// double yun1 = list.get(2);
+// int piao = (int) yun;
+// int ren = (int) yun1;
+// tv_total_number.setText(ren + "/" + piao);
+// }
+//
+// @Override
+// public void failureToDo() {
+//
+// }
+// }, 4);
+//
+// int count = PreferenceUtils.getInt(mContext, "count", 0);
+// tv_number.setText(String.valueOf(count));
+// }
}
+// private boolean checkLocalId(IdBean idBean) {
+// boolean isLocal = false;
+//
+// if (!TextUtils.equals(isIDinFree, "yes")) {
+// return false;
+// }
+//
+// if (!TextUtils.equals(local_age, "0")) {
+// LogUtil.i(TAG, "Age == " + local_age);
+// isLocal = checkAga(local_age, idBean.getId());
+// }
+// if (!isLocal && !TextUtils.equals(local_addr, "0")) {
+// LogUtil.i(TAG, "Addr == " + local_addr);
+// isLocal = checkAddr(local_addr, idBean.getAddr());
+// }
+//
+// if (!isLocal && !TextUtils.equals(local_sex, "0")) {
+// LogUtil.i(TAG, "Sex == " + local_sex);
+// isLocal = checkSex(local_sex, idBean.getId());
+// }
+//
+// if (!isLocal && !TextUtils.equals(local_id, "0")) {
+// LogUtil.i(TAG, "Id == " + local_id);
+// isLocal = checkId(local_id, idBean.getId());
+// }
+// return isLocal;
+// }
+
+// private boolean checkAga(String ageStr, String scanTicketId) {
+//
+// String[] localAge;
+// if (ageStr.contains("#") && ageStr.contains("-")) {
+// localAge = ageStr.split("#");
+// } else if (ageStr.contains("-")) {
+// localAge = new String[]{ageStr};
+// } else {
+// return false;
+// }
+// int tourAge = TimesUtils.getAge(scanTicketId);
+// LogUtil.i(TAG, "【身份证年龄:】" + tourAge);
+// for (String local : localAge) {
+// String[] age = local.split("-");
+// int startAge = Integer.parseInt(age[0]);
+// int endAge = Integer.parseInt(age[1]);
+// if (tourAge >= startAge && tourAge < endAge) {
+// return true;
+// }
+// }
+// return false;
+//
+// }
private boolean checkAddr(String local_addr, String addr) {
diff --git a/src/com/ectrip/cyt/ui/SelectActionActivity.java b/src/com/ectrip/cyt/ui/SelectActionActivity.java
index 248abd8..431ed7a 100644
--- a/src/com/ectrip/cyt/ui/SelectActionActivity.java
+++ b/src/com/ectrip/cyt/ui/SelectActionActivity.java
@@ -234,8 +234,7 @@ public class SelectActionActivity extends BaseActivity implements
case IDCARD:// 身份证
// 判断是不是039b移动POS机
LogUtil.d(TAG, "型号 :" + type);
- if (type == DeviceType.ID_POS.getValue()
- || type == DeviceType.New_IDPOS.getValue()) {
+ if (type == DeviceType.ID_POS.getValue()) {
intent = new Intent(SelectActionActivity.this,
SerialIdCardPortActivity.class);
if (Select != null) {
@@ -255,12 +254,23 @@ public class SelectActionActivity extends BaseActivity implements
startActivity(intent);
} else if (type == DeviceType.New_POS.getValue()) {//10号手持机
intent = new Intent(SelectActionActivity.this,IDHandleRSKActivity.class);
- intent.putExtra("type", type);
+ if (Select != null) {
+ if (Select == SelectAction.Check.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.check_idcard));
+ } else if (Select == SelectAction.Reprint.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.reprint_idcard));
+ } else if (Select == SelectAction.Query.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.query_idcard));
+ }
+ } else {
+ intent.putExtra("titleName", getString(R.string.idcard));
+ }
startActivity(intent);
- } else if (idcread.isIdcard("/dev/ttySAC1")) {
- // xxx = "打开手持机串口成功!";
- intent = new Intent(SelectActionActivity.this,
- ScanerIdCardActivity.class);
+ } else if(type == DeviceType.HANDSET.getValue()) {//8号手持机
+ intent = new Intent(SelectActionActivity.this,ScanHeadActivity.class);
if (Select != null) {
if (Select == SelectAction.Check.getValue()) {
intent.putExtra("titleName",
@@ -276,10 +286,8 @@ public class SelectActionActivity extends BaseActivity implements
intent.putExtra("titleName", getString(R.string.idcard));
}
startActivity(intent);
- } else {
- // xxx = "打开手持机串口失败!";
- intent = new Intent(SelectActionActivity.this,
- InputIdCardActivity.class);
+ }else if (type == DeviceType.New_IDPOS.getValue()) {//11 其他手持机
+ intent = new Intent(SelectActionActivity.this,InputIdCardActivity.class);
if (Select != null) {
if (Select == SelectAction.Check.getValue()) {
intent.putExtra("titleName",
@@ -295,7 +303,45 @@ public class SelectActionActivity extends BaseActivity implements
intent.putExtra("titleName", getString(R.string.idcard));
}
startActivity(intent);
- }
+ } else if (idcread.isIdcard("/dev/ttySAC1")) {
+ // xxx = "打开手持机串口成功!";
+ intent = new Intent(SelectActionActivity.this,
+ ScanerIdCardActivity.class);
+ if (Select != null) {
+ if (Select == SelectAction.Check.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.check_idcard));
+ } else if (Select == SelectAction.Reprint.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.reprint_idcard));
+ } else if (Select == SelectAction.Query.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.query_idcard));
+ }
+ } else {
+ intent.putExtra("titleName", getString(R.string.idcard));
+ }
+ startActivity(intent);
+ } else {
+ // xxx = "打开手持机串口失败!";
+ intent = new Intent(SelectActionActivity.this,
+ InputIdCardActivity.class);
+ if (Select != null) {
+ if (Select == SelectAction.Check.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.check_idcard));
+ } else if (Select == SelectAction.Reprint.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.reprint_idcard));
+ } else if (Select == SelectAction.Query.getValue()) {
+ intent.putExtra("titleName",
+ getString(R.string.query_idcard));
+ }
+ } else {
+ intent.putExtra("titleName", getString(R.string.idcard));
+ }
+ startActivity(intent);
+ }
break;
case PHONE:// 手机号
intent = new Intent(SelectActionActivity.this,
diff --git a/src/com/ectrip/cyt/ui/SettingsActivity.java b/src/com/ectrip/cyt/ui/SettingsActivity.java
index b49deb9..25615d4 100644
--- a/src/com/ectrip/cyt/ui/SettingsActivity.java
+++ b/src/com/ectrip/cyt/ui/SettingsActivity.java
@@ -388,6 +388,7 @@ public class SettingsActivity extends BaseActivity implements OnClickListener,
devlist.add("8、鼎游身份证手持机");
devlist.add("9、鼎游NFC手持机");
devlist.add("10、鼎游新身份证手持机");
+ devlist.add("11、其他");
adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, devlist);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
select_dev.setAdapter(adapter);
diff --git a/src/com/synjones/bluetooth/DecodeWlt.java b/src/com/synjones/bluetooth/DecodeWlt.java
new file mode 100644
index 0000000..db4b94e
--- /dev/null
+++ b/src/com/synjones/bluetooth/DecodeWlt.java
@@ -0,0 +1,15 @@
+package com.synjones.bluetooth;
+public class DecodeWlt
+{
+ static
+ {
+ try
+ {
+ System.loadLibrary("DecodeWlt");
+ } catch (UnsatisfiedLinkError e) {
+ e.printStackTrace();
+ }
+ }
+
+ public native int Wlt2Bmp(String paramString1, String paramString2);
+}
\ No newline at end of file