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