SerialIdCardPortActivity.java 3.86 KB
package com.ectrip.cyt.ui;

import hdx.HdxUtil;

import java.io.IOException;
import java.security.InvalidParameterException;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android_serialport_pos_id_api.SerialIdCardPort;

import com.ectrip.cyt.config.DevicTool;
import com.ectrip.cyt.config.MyApp;
import com.ectrip.cyt.utils.SharedPreferences2Obj;
import com.ectrip.trips.check.R;
import com.synjones.sdt.IDCard;

/**
 * @author jigo
 * 带身份证pos机
 */
public class SerialIdCardPortActivity extends BaseActivity{

	private TextView topBack;
	private Button topBtns;
	private LinearLayout llayout;
	private boolean stop=false;
	private SerialIdCardPort mSerialIdCardPort;
	private IDCard idcard = null;
	private String titleName;

	@SuppressLint("HandlerLeak")
	Handler handler=new Handler(){
		public void handleMessage(Message msg) {
			switch(msg.what){
				case 0:
					//接收身份证号
					String str=msg.obj.toString();

					Intent intent=new Intent(SerialIdCardPortActivity.this,IDOrderListActivity.class);
					intent.putExtra("mode", 0);
					//将身份证号传到OrderListActivity中
					intent.putExtra("idcardNumber", str.trim());
					intent.putExtra("titleName",getString(R.string.order_list));
					stop=true;
					startActivity(intent);
					finish();
					break;
			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.serialidcardport);

		initPos();
		initView();
		new ReadThread().start();
	}

	private void initPos(){
		try {
			//pos机身份证读取模块加电
			HdxUtil.SetIDCARDPower(1);
			//切换到身份证读取功能
			HdxUtil.SwitchSerialFunction(HdxUtil.SERIAL_FUNCTION_IDCARD);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void initView() {
		SharedPreferences2Obj.getInstance(SerialIdCardPortActivity.this).
				setName("SelectAction").setObject("isStatistic","0");   //非统计
		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);
		}
		((TextView)findViewById(R.id.title)).setVisibility(View.VISIBLE);
		topBack=(TextView)findViewById(R.id.topBack);
		topBtns=(Button)findViewById(R.id.topBtns);
		//提示读取身份证区
		llayout=(LinearLayout) findViewById(R.id.llayout);

		//点击头部返回键,关闭当前activity
		topBack.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				stop=true;
				//pos机身份证读取模块断电
				HdxUtil.SetIDCARDPower(0);
				finish();
			}
		});

		topBtns.setVisibility(View.GONE);
		llayout.setVisibility(View.VISIBLE);

		try {
			//获取039bPOS机串口
			mSerialIdCardPort=DevicTool.getInstance().getSerialIdCardPort();

		} catch (InvalidParameterException e) {

			e.printStackTrace();
		} catch (SecurityException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		}
	}

	//读取身份证线程
	class ReadThread extends Thread{

		public void run() {
			while(stop==false){
				idcard=mSerialIdCardPort.getIDCard();
				if(idcard!=null){
					Message msg=new Message();
					msg.what=0;
					msg.obj=idcard.getIDCardNo();
					//将身份证号发出去
					handler.sendMessage(msg);
				}
			}
		}
	}

	@Override
	protected void onDestroy() {
		stop=true;
		HdxUtil.SetIDCARDPower(0);
		super.onDestroy();
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			stop=true;
			HdxUtil.SetIDCARDPower(0);
			finish();
		}
		return false;
	}
}