package com.ectrip.cyt.ui; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import com.basewin.aidl.OnBarcodeCallBack; import com.basewin.services.ScanBinder; import com.basewin.services.ServiceManager; import com.ectrip.cyt.bean.ConfigBean; import com.ectrip.cyt.config.BindService; 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; import com.ectrip.cyt.utils.DesUtil; import com.ectrip.trips.check.R; import android.content.Intent; import android.os.Bundle; import android.os.RemoteException; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class BasewinScanActivity extends BaseActivity { private View topBack; private TextView title; private String titleName; private ScanBinder scan; private ReadThread mReadThread; private String scanString = null; private final BarcodeCallBac broadcast = new BarcodeCallBac(); class BarcodeCallBac implements OnBarcodeCallBack { @Override public void onScanResult(String barcode) throws RemoteException { // TODO 扫码成功回调 // scan Success callback if (!TextUtils.isEmpty(barcode)) { scanString = barcode; mReadThread = new ReadThread(); mReadThread.start(); } } @Override public void onFinish() throws RemoteException { // TODO 扫码结束 // scan end } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_newhandle_scaner); initView(); init(); } private void init() { titleName = getIntent().getStringExtra("titleName"); title.setVisibility(View.VISIBLE); if (titleName != null) { title.setText(titleName); } else { title.setText(R.string.qr_code); } try { scan = ServiceManager.getInstence().getScan(); } catch (Exception e) { e.printStackTrace(); } } private void initView() { scan = BindService.getInstance().getScan(); title = (TextView) findViewById(R.id.title); topBack = findViewById(R.id.topBack); topBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); Button btn_scan = (Button) findViewById(R.id.scanerBtn); btn_scan.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //开始扫描 try { scan.startScanZbar(60, broadcast); } catch (RemoteException e) { e.printStackTrace(); } } }); } private class ReadThread extends Thread { @Override public void run() { super.run(); try { handleDecode(new String(scanString.getBytes("GBK"), "GBK")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } /** * 处理扫描结果 * * @param result */ public void handleDecode(String result) { if (result.equals("")) { MToast(BasewinScanActivity.this, getString(R.string.scan_fail), MToast.LENGTH_SHORT); } else { try { result = result.substring(result.indexOf("_") + 1, result.indexOf(",")); ArrayList 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); } catch (Exception e) { e.printStackTrace(); MToast(BasewinScanActivity.this, getString(R.string.order_id_incorrect), MToast.LENGTH_SHORT); } Intent intent = new Intent(BasewinScanActivity.this, QRCodeOrderListActivity.class); intent.putExtra("mode", 1); intent.putExtra("input_orid", result); if (result != null) { MToast(BasewinScanActivity.this, result, Toast.LENGTH_SHORT); } intent.putExtra("titleName", getString(R.string.show_result)); startActivity(intent); finish(); } finish(); } }