Blame view

src/com/ectrip/cyt/ui/NewHandleScanerActivity.java 11.8 KB
3c2353cd   杜方   1、畅游通核销app源码提交;
1
2
3
4
5
6
7
8
9
10
  package com.ectrip.cyt.ui;
  
  import java.io.File;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.OutputStream;
  import java.io.UnsupportedEncodingException;
  import java.security.InvalidParameterException;
  import java.util.ArrayList;
939d0202   杜方   畅游通标准4.0:新增动态二维码解析
11
  import java.util.Date;
3c2353cd   杜方   1、畅游通核销app源码提交;
12
13
14
15
16
17
18
19
20
21
22
23
  import java.util.concurrent.atomic.AtomicBoolean;
  
  import android.app.AlertDialog;
  import android.content.DialogInterface;
  import android.content.DialogInterface.OnClickListener;
  import android.content.Intent;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.widget.Button;
  import android.widget.TextView;
  import android.widget.Toast;
2707d233   杜方   1、畅游通核销app;修改扫二维码...
24
  
3c2353cd   杜方   1、畅游通核销app源码提交;
25
26
  import android_serialport_api.SerialPortNewHandset;
  
939d0202   杜方   畅游通标准4.0:新增动态二维码解析
27
28
29
  import com.ectrip.common.dynamic.code.core.DynamicVerifyCodeTool;
  import com.ectrip.common.dynamic.code.exception.DynamicVerifyCodeException;
  import com.ectrip.common.dynamic.code.model.DynamicVerifyCodeDecodeResult;
3c2353cd   杜方   1、畅游通核销app源码提交;
30
31
32
33
34
35
36
  import com.ectrip.cyt.bean.ConfigBean;
  import com.ectrip.cyt.config.DevicTool;
  import com.ectrip.cyt.config.MyApp;
  import com.ectrip.cyt.constant.constant;
  import com.ectrip.cyt.db.DbManager;
  import com.ectrip.cyt.shield_home.LockLayer.MToast;
  import com.ectrip.cyt.utils.AESEncryptor;
2707d233   杜方   1、畅游通核销app;修改扫二维码...
37
  import com.ectrip.cyt.utils.Base64;
3c2353cd   杜方   1、畅游通核销app源码提交;
38
  import com.ectrip.cyt.utils.DesUtil;
7d3f774c   杜方   畅游通核销app: 1.修复CYT...
39
  import com.ectrip.cyt.utils.LogUtil;
3c2353cd   杜方   1、畅游通核销app源码提交;
40
41
42
43
44
45
  import com.ectrip.trips.check.R;
  
  /**
   * @author jigo 新的手持机二维码扫描
   */
  public class NewHandleScanerActivity extends BaseActivity {
2707d233   杜方   1、畅游通核销app;修改扫二维码...
46
47
48
49
50
51
52
      private final String TAG = "qrcode";
      protected MyApp mApplication;
      protected SerialPortNewHandset mSerialPort;
      protected OutputStream mOutputStream;
      private InputStream mInputStream;
      private ReadThread mReadThread;
      private String titleName;
3c2353cd   杜方   1、畅游通核销app源码提交;
53
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
54
55
56
      private Button scanerBtn;
      private View topBack;
      private TextView title;
df682192   杜方   畅游通核销app: 1.优化扫CY...
57
      private int typeScan;
2707d233   杜方   1、畅游通核销app;修改扫二维码...
58
      private AtomicBoolean isStop = new AtomicBoolean(false);
3c2353cd   杜方   1、畅游通核销app源码提交;
59
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
60
61
62
63
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_newhandle_scaner);
3c2353cd   杜方   1、畅游通核销app源码提交;
64
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
65
66
          initView();
          init();
3c2353cd   杜方   1、畅游通核销app源码提交;
67
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
68
69
70
71
72
73
          setpower("/sys/class/gpio/gpio28/value", false); // 给二代证下电
          try {
              Thread.sleep(1000);
          } catch (InterruptedException e) {
          }
          setpower("/sys/class/gpio/gpio114/value", true);
3c2353cd   杜方   1、畅游通核销app源码提交;
74
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
          // setTitle("Loopback test");
          scanerBtn = (Button) findViewById(R.id.scanerBtn);
          scanerBtn.setOnClickListener(new View.OnClickListener() {
              public void onClick(View paramAnonymousView) {
                  byte[] arrayOfByte = {0x1b, 0x31};
                  try {
                      NewHandleScanerActivity.this.mOutputStream
                              .write(arrayOfByte);
                      return;
                  } catch (IOException localIOException) {
                      localIOException.printStackTrace();
                  }
              }
          });
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
90
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
91
92
93
94
95
96
97
98
99
100
101
      private void initView() {
          title = (TextView) findViewById(R.id.title);
          topBack = findViewById(R.id.topBack);
          topBack.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  close();
                  finish();
              }
          });
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
102
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
103
104
105
106
107
108
109
110
111
      private void init() {
          mApplication = (MyApp) getApplication();
          titleName = getIntent().getStringExtra("titleName");
          title.setVisibility(View.VISIBLE);
          if (titleName != null) {
              title.setText(titleName);
          } else {
              title.setText(R.string.qr_code);
          }
3c2353cd   杜方   1、畅游通核销app源码提交;
112
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
113
114
115
116
          try {
              mSerialPort = DevicTool.getInstance().getSerialPortNewHandset();
              mOutputStream = mSerialPort.getOutputStream();
              mInputStream = mSerialPort.getInputStream();
3c2353cd   杜方   1、畅游通核销app源码提交;
117
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
118
119
120
121
122
123
124
125
126
127
128
              /* Create a receiving thread */
              mReadThread = new ReadThread();
              mReadThread.start();
          } catch (SecurityException e) {
              DisplayError(R.string.error_security);
          } catch (IOException e) {
              DisplayError(R.string.error_unknown);
          } catch (InvalidParameterException e) {
              DisplayError(R.string.error_configuration);
          }
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
129
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
130
131
132
133
134
      public void delay(int i) {
          for (int j = 0; j < 1000; j++)
              for (; i < 0; i--)
                  ;
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
135
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
136
137
138
      protected void onDataReceived(final byte[] buffer, final int size) {
          runOnUiThread(new Runnable() {
              public void run() {
3c2353cd   杜方   1、畅游通核销app源码提交;
139
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
140
141
                  try {
                      String tempstr = new String(buffer, 0, size);
9e9f1eb7   杜方   1、畅游通核销app:新增主界面关...
142
                      handleDecode(new String(tempstr.getBytes("GBK"), "GBK").trim());
2707d233   杜方   1、畅游通核销app;修改扫二维码...
143
144
145
146
147
148
149
150
151
                  } catch (UnsupportedEncodingException e) {
                      e.printStackTrace();
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
                  // mReception.append(new String(buffer, 0, size));
              }
          });
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
152
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
153
154
155
156
157
158
159
160
161
162
163
164
165
      /**
       * 处理扫描结果
       *
       * @param result
       * @param
       */
      public void handleDecode(String result) {
          if (result.equals("")) {
              MToast(NewHandleScanerActivity.this, getString(R.string.scan_fail),
                      MToast.LENGTH_SHORT);
          } else {
              try {
                  if (result.startsWith("CYT_")) {
939d0202   杜方   畅游通标准4.0:新增动态二维码解析
166
                      LogUtil.i(TAG, "result = " + result);
df682192   杜方   畅游通核销app: 1.优化扫CY...
167
168
169
170
171
172
173
174
                      typeScan = 0;
                      if (result.contains(",")) {
                          result = result.substring(result.indexOf("_") + 1, result.indexOf(","));
                          LogUtil.i(TAG, "resultString = " + result);
                      } else {
                          result = result.substring(result.indexOf("_") + 1, result.length());
                          LogUtil.i(TAG, "resultString1 = " + result);
                      }
2707d233   杜方   1、畅游通核销app;修改扫二维码...
175
176
177
178
179
180
                      ArrayList<ConfigBean> beans = DbManager.GetConfigs();
                      // 畅游通生成的订单ID:
                      String ec_name = beans.get(0).getEc_signkey();
                      ec_name = AESEncryptor.decrypt(constant.decrypt, ec_name);
                      result = DesUtil.decrypt(result, ec_name);
                  } else if (result.startsWith("TDOS_")) {
df682192   杜方   畅游通核销app: 1.优化扫CY...
181
                      typeScan = 0;
9b537f44   杜方   畅游通核销app: 1.优化扫TD...
182
183
184
185
186
187
188
                      if (result.contains(",")) {
                          result = result.substring(result.indexOf("_") + 1, result.indexOf(","));
                          LogUtil.i(TAG, "resultString = " + result);
                      } else {
                          result = result.substring(result.indexOf("_") + 1, result.length());
                          LogUtil.i(TAG, "resultString1 = " + result);
                      }
2707d233   杜方   1、畅游通核销app;修改扫二维码...
189
190
                      result = new String(Base64.decode(result), "utf-8");
                  } else if ((result.startsWith("TY_") || (result.startsWith("PMS_")))) {
df682192   杜方   畅游通核销app: 1.优化扫CY...
191
                      typeScan = 1;
2707d233   杜方   1、畅游通核销app;修改扫二维码...
192
                      result = result;
939d0202   杜方   畅游通标准4.0:新增动态二维码解析
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
                  } else if (result.startsWith("OCP_")) {
                      typeScan = 0;
                      result = result;
                  } else if (result.startsWith("DYV_")) {
                      try {
                          DynamicVerifyCodeDecodeResult decodeResult = DynamicVerifyCodeTool.decodeDynamicCode(result);
                          boolean expired = decodeResult.getExpired();
                          String staticCode = decodeResult.getStaticCode();
                          Date expireTime = decodeResult.getExpireTime();
                          LogUtil.d(TAG, "expired = " + expired);
                          LogUtil.d(TAG, "staticCode = " + staticCode);
                          LogUtil.d(TAG, "expireTime = " + expireTime);
                          if (!expired) {
                              typeScan = 1;
                              result = staticCode;
                          } else {
                              typeScan = 2;
                              result = "动态二维码已过有效期";
                          }
                      } catch (DynamicVerifyCodeException e) {
                          typeScan = 2;
                          LogUtil.d(TAG, "动态核销码异常:" + e.getMessage());
                          result = e.getMessage();
                          e.printStackTrace();
                      }
2707d233   杜方   1、畅游通核销app;修改扫二维码...
218
                  } else {
df682192   杜方   畅游通核销app: 1.优化扫CY...
219
                      typeScan = 1;
2707d233   杜方   1、畅游通核销app;修改扫二维码...
220
221
222
223
224
225
226
227
                      result = result;
                  }
              } catch (Exception e) {
                  e.printStackTrace();
                  MToast(NewHandleScanerActivity.this,
                          getString(R.string.order_id_incorrect),
                          MToast.LENGTH_SHORT);
              }
3c2353cd   杜方   1、畅游通核销app源码提交;
228
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
229
230
231
232
233
234
235
236
              Intent intent = new Intent(NewHandleScanerActivity.this,
                      QRCodeOrderListActivity.class);
              intent.putExtra("mode", 1);
              intent.putExtra("input_orid", result);
              if (result != null) {
                  MToast(NewHandleScanerActivity.this, result, Toast.LENGTH_SHORT);
              }
              intent.putExtra("titleName", getString(R.string.show_result));
df682192   杜方   畅游通核销app: 1.优化扫CY...
237
              intent.putExtra("typeScan", typeScan);
2707d233   杜方   1、畅游通核销app;修改扫二维码...
238
239
240
241
242
              startActivity(intent);
              finish();
          }
          finish();
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
243
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
      private void setpower(String path, boolean on) {
          File file;
          FileWriter fr;
          try {
              file = new File(path);
              fr = new FileWriter(file);
              if (on)
                  fr.write("1");
              else
                  fr.write("0");
              fr.close();
          } catch (IOException e) {
              Log.e(TAG, e.toString());
          }
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
259
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
260
261
262
263
264
265
      @Override
      public void onBackPressed() {
          super.onBackPressed();
          close();
          this.finish();
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
266
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
267
268
269
270
271
      @Override
      protected void onResume() {
          super.onResume();
          setpower("/sys/class/gpio/gpio114/value", true);
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
272
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
273
      private class ReadThread extends Thread {
3c2353cd   杜方   1、畅游通核销app源码提交;
274
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
          @Override
          public void run() {
              super.run();
              while (!isInterrupted() && !isStop.get()) {
                  int size;
                  try {
                      byte[] buffer = new byte[64];
                      if (mInputStream == null)
                          return;
                      size = mInputStream.read(buffer);
                      if (size > 0) {
                          onDataReceived(buffer, size);
                      }
                  } catch (IOException e) {
                      e.printStackTrace();
                      return;
                  }
              }
          }
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
295
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
296
297
298
299
300
301
302
303
304
305
      @Override
      public void onPause() {
          // bContinue = false;
          try {
              Thread.sleep(600);
          } catch (InterruptedException e) {
          }
          // closeDrive();
          super.onPause();
          setpower("/sys/class/gpio/gpio114/value", false);
3c2353cd   杜方   1、畅游通核销app源码提交;
306
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
307
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
308
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
      private void close() {
          isStop.set(true);
          if (mOutputStream != null) {
              try {
                  mOutputStream.close();
              } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
          }
          if (mOutputStream != null) {
              try {
                  mOutputStream.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          if (mSerialPort != null) {
              mSerialPort.close();
          }
          if (mReadThread != null)
              mReadThread.interrupt();
          DevicTool.getInstance().closeSerialPortNewHandset();
          mSerialPort = null;
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
334
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
335
336
337
338
339
      @Override
      protected void onDestroy() {
          close();
          super.onDestroy();
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
340
  
2707d233   杜方   1、畅游通核销app;修改扫二维码...
341
342
343
344
345
346
347
348
349
350
351
      private void DisplayError(int resourceId) {
          AlertDialog.Builder b = new AlertDialog.Builder(this);
          b.setTitle("Error");
          b.setMessage(resourceId);
          b.setPositiveButton("OK", new OnClickListener() {
              public void onClick(DialogInterface dialog, int which) {
                  finish();
              }
          });
          b.show();
      }
3c2353cd   杜方   1、畅游通核销app源码提交;
352
  }