public void handleDecode(Result result, Bitmap barcode, float scaleFactor) { inactivityTimer.onActivity(); playBeepSoundAndVibrate(); String url = result.getText(); // 只识别http或者https开头的url if ((url.startsWith("http://") == false) && (url.startsWith("https://") == false)) { Toast.makeText(this, "未发现二维码", Toast.LENGTH_SHORT).show(); } else { Intent intent = new Intent("android.intent.action.VIEW"); intent.setData(Uri.parse("jdhttpmonitor://webview?param=" + Uri.encode("{\"url\":\"" + url + "\"" + ", \"from\":\"app\"" + "}"))); startActivity(intent); } // 不管成功还是失败,都关闭二维码扫描窗口 finish(); }
private void vibrate(long duration) { Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); long[] pattern = { 0, duration }; vibrator.vibrate(pattern, -1); }
cameraManager = new CameraManager(getApplication()); viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view); viewfinderView.setCameraManager(cameraManager); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); if (hasSurface) { initCamera(surfaceHolder); } else { AudioManager audioService = (AudioManager) getSystemService(AUDIO_SERVICE); if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) { playBeep = false; initBeepSound(); vibrate = true;
activity.handleDecode((Result) message.obj, barcode, scaleFactor); } else if (message.what == R.id.decode_failed) { cameraManager.requestPreviewFrame(decodeThread.getHandler(), R.id.decode); } else if (message.what == R.id.return_scan_result) { activity.setResult(Activity.RESULT_OK, (Intent) message.obj); activity.finish(); } else if (message.what == R.id.launch_product_query) { String url = (String) message.obj; activity.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); String browserPackageName = null; if (resolveInfo != null && resolveInfo.activityInfo != null) { activity.startActivity(intent); } catch (ActivityNotFoundException ignored) { Log.w(TAG, "Can't find anything to handle VIEW of URI " + url);
Uri uri = data.getData(); Bitmap bitmap = MediaStore.Images.Media.getBitmap( this.getContentResolver(), uri); decodeHintTypeStringHashMap); String url = result.getText(); playBeepSoundAndVibrate(); startActivity(intent); finish();
private void initBeepSound() { if (playBeep && mediaPlayer == null) { // The volume on STREAM_SYSTEM is not adjustable, and users found it // too loud, // so we now play on the music stream. setVolumeControlStream(AudioManager.STREAM_MUSIC); mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setOnCompletionListener(beepListener); AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.qrcode_completed); try { mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength()); file.close(); mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME); mediaPlayer.prepare(); } catch (IOException e) { mediaPlayer = null; } } }
height = tmp; PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(rotatedData, width, height); Handler handler = activity.getHandler(); if (rawResult != null) {
private void restartPreviewAndDecode() { if (state == State.SUCCESS) { state = State.PREVIEW; cameraManager.requestPreviewFrame(decodeThread.getHandler(), R.id.decode); activity.drawViewfinder(); } }
@Override protected void onPause() { if (handler != null) { handler.quitSynchronously(); handler = null; } inactivityTimer.onPause(); cameraManager.closeDriver(); if (!hasSurface) { SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); surfaceHolder.removeCallback(this); } super.onPause(); }
private void playBeepSoundAndVibrate() { if (playBeep && mediaPlayer != null) { mediaPlayer.start(); } if (vibrate) { Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); vibrator.vibrate(VIBRATE_DURATION); } }