/** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scanner); //ViewUtil.addTopView(getApplicationContext(), this, R.string.scan_card); CameraManager.init(getApplication()); viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_content); back = (ImageView) findViewById(R.id.scanner_toolbar_back); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); // cancelScanButton = (Button) this.findViewById(R.id.btn_cancel_scan); hasSurface = false; inactivityTimer = new InactivityTimer(this); //添加toolbar // addToolbar(); }
@Override protected void onResume() { super.onResume(); SurfaceView surfaceView = (SurfaceView) findViewById(R.id.scanner_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); if (hasSurface) { initCamera(surfaceHolder); } else { surfaceHolder.addCallback(this); AudioManager audioService = (AudioManager) getSystemService(AUDIO_SERVICE); if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) { playBeep = false; initBeepSound(); vibrate = true;
private void addToolbar() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // ImageView more = (ImageView) findViewById(R.id.scanner_toolbar_more); // assert more != null; // more.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // // } // }); setSupportActionBar(toolbar); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.capture); hasSurface = false; inactivityTimer = new InactivityTimer(this); beepManager = new BeepManager(this); ambientLightManager = new AmbientLightManager(this); // 监听图片识别按钮 findViewById(R.id.capture_scan_photo).setOnClickListener(this); findViewById(R.id.capture_flashlight).setOnClickListener(this); }
activity.handleDecode((Result) message.obj, barcode);//���ؽ�� case R.id.return_scan_result: Log.d(TAG, "Got return scan result message"); activity.setResult(Activity.RESULT_OK, (Intent) message.obj); activity.finish(); break; case R.id.launch_product_query: Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); activity.startActivity(intent); break;
cameraManager = new CameraManager(getApplication()); viewfinderView = (ViewfinderView) findViewById(R.id.capture_viewfinder_view); viewfinderView.setCameraManager(cameraManager); SurfaceView surfaceView = (SurfaceView) findViewById(R.id.capture_preview_view); // 预览 SurfaceHolder surfaceHolder = surfaceView.getHolder(); if (hasSurface) { initCamera(surfaceHolder);
/** * Handler scan result * * @param result * @param barcode */ public void handleDecode(Result result, Bitmap barcode) { inactivityTimer.onActivity(); playBeepSoundAndVibrate(); String resultString = result.getText(); //FIXME if (TextUtils.isEmpty(resultString)) { Toast.makeText(CaptureActivity.this, "Scan failed!", Toast.LENGTH_SHORT).show(); } else { Intent resultIntent = new Intent(); Bundle bundle = new Bundle(); bundle.putString(INTENT_EXTRA_KEY_QR_SCAN, resultString); System.out.println("sssssssssssssssss scan 0 = " + resultString); // 不能使用Intent传递大于40kb的bitmap,可以使用一个单例对象存储这个bitmap // bundle.putParcelable("bitmap", barcode); // Logger.d("saomiao",resultString); resultIntent.putExtras(bundle); this.setResult(RESULT_CODE_QR_SCAN, resultIntent); } CaptureActivity.this.finish(); }
height = tmp; PlanarYUVLuminanceSource source = activity.getCameraManager() .buildLuminanceSource(rotatedData, width, height); if (source != null) { Handler handler = activity.getHandler(); if (rawResult != null) {
@Override public void surfaceCreated(SurfaceHolder holder) { if (!hasSurface) { hasSurface = true; initCamera(holder); } }
public CaptureActivityHandler(CaptureActivity activity, Vector<BarcodeFormat> decodeFormats, String characterSet) { this.activity = activity; decodeThread = new DecodeThread(activity, decodeFormats, characterSet, new ViewfinderResultPointCallback(activity.getViewfinderView())); decodeThread.start(); state = State.SUCCESS; // Start ourselves capturing previews and decoding. CameraManager.get().startPreview(); restartPreviewAndDecode(); }
/** * 完成一次扫描后,只需要再调用此方法即可 */ private void restartPreviewAndDecode() { if (state == State.SUCCESS) { state = State.PREVIEW; // 向decodeThread绑定的handler(DecodeHandler)发送解码消息 cameraManager.requestPreviewFrame(decodeThread.getHandler(), R.id.decode); activity.drawViewfinder(); } }
case REQUEST_CODE_SCAN_GALLERY: Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null); if (cursor.moveToFirst()) { photo_path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
@Override public void onClick(View v) { finish(); } });
long end = System.currentTimeMillis(); Log.d(TAG, "Found barcode (" + (end - start) + " ms):\n" + rawResult.toString()); Message message = Message.obtain(activity.getHandler(), R.id.decode_succeeded, rawResult); Bundle bundle = new Bundle(); bundle.putParcelable(DecodeThread.BARCODE_BITMAP, source.renderCroppedGreyscaleBitmap()); Message message = Message.obtain(activity.getHandler(), R.id.decode_failed); message.sendToTarget();
@Override protected void onPause() { if (handler != null) { handler.quitSynchronously(); handler = null; } inactivityTimer.onPause(); ambientLightManager.stop(); beepManager.close(); // 关闭摄像头 cameraManager.closeDriver(); if (!hasSurface) { SurfaceView surfaceView = (SurfaceView) findViewById(R.id.capture_preview_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); surfaceHolder.removeCallback(this); } super.onPause(); }
.getFloat(DecodeThread.BARCODE_SCALED_FACTOR); activity.handleDecode((Result) message.obj, barcode, scaleFactor); } else if (message.what == R.id.decode_failed) { } else if (message.what == R.id.return_scan_result) { Log.d(TAG, "Got return scan result message"); activity.setResult(Activity.RESULT_OK, (Intent) message.obj); activity.finish(); } else if (message.what == R.id.launch_product_query) { Log.d(TAG, "Got product query message"); ResolveInfo resolveInfo = activity.getPackageManager() .resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); activity.startActivity(intent); } catch (ActivityNotFoundException ignored) { Log.w(TAG, "Can't find anything to handle VIEW of URI "
@Override public void surfaceCreated(SurfaceHolder holder) { if (holder == null) { Log.e(TAG, "*** WARNING *** surfaceCreated() gave us a null surface!"); } if (!hasSurface) { hasSurface = true; initCamera(holder); } }
public CaptureActivityHandler(CaptureActivity activity, Collection<BarcodeFormat> decodeFormats, Map<DecodeHintType, ?> baseHints, String characterSet, CameraManager cameraManager) { this.activity = activity; // 启动扫描线程 decodeThread = new DecodeThread(activity, decodeFormats, baseHints, characterSet, new ViewfinderResultPointCallback( activity.getViewfinderView())); decodeThread.start(); state = State.SUCCESS; // Start ourselves capturing previews and decoding. this.cameraManager = cameraManager; // 开启相机预览界面 cameraManager.startPreview(); restartPreviewAndDecode(); }
private void restartPreviewAndDecode() { if (state == State.SUCCESS) { state = State.PREVIEW; CameraManager.get().requestPreviewFrame(decodeThread.getHandler(), R.id.decode); CameraManager.get().requestAutoFocus(this, R.id.auto_focus); activity.drawViewfinder(); } }