private void share() { QRCodeEncoder encoder = qrCodeEncoder; if (encoder == null) { // Odd Log.w(TAG, "No existing barcode to send?"); return; } String contents = encoder.getContents(); if (contents == null) { Log.w(TAG, "No existing barcode to send?"); return; } Bitmap bitmap; try { bitmap = encoder.encodeAsBitmap(); } catch (WriterException we) { Log.w(TAG, we); return; } if (bitmap == null) { return; } File bsRoot = new File(Environment.getExternalStorageDirectory(), "BarcodeScanner"); File barcodesRoot = new File(bsRoot, "Barcodes"); if (!barcodesRoot.exists() && !barcodesRoot.mkdirs()) { Log.w(TAG, "Couldn't make dir " + barcodesRoot); showErrorMessage(R.string.msg_unmount_usb); return; } File barcodeFile = new File(barcodesRoot, makeBarcodeFileName(contents) + ".png"); barcodeFile.delete(); FileOutputStream fos = null; try { fos = new FileOutputStream(barcodeFile); bitmap.compress(Bitmap.CompressFormat.PNG, 0, fos); } catch (FileNotFoundException fnfe) { Log.w(TAG, "Couldn't access file " + barcodeFile + " due to " + fnfe); showErrorMessage(R.string.msg_unmount_usb); return; } finally { if (fos != null) { try { fos.close(); } catch (IOException ioe) { // do nothing } } } Intent intent = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); intent.putExtra( Intent.EXTRA_SUBJECT, getString(R.string.app_name) + " - " + encoder.getTitle()); intent.putExtra(Intent.EXTRA_TEXT, contents); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + barcodeFile.getAbsolutePath())); intent.setType("image/png"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); startActivity(Intent.createChooser(intent, null)); }
@Override protected void onResume() { super.onResume(); // This assumes the view is full screen, which is a good assumption WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); int smallerDimension = width < height ? width : height; smallerDimension = smallerDimension * 7 / 8; Intent intent = getIntent(); try { qrCodeEncoder = new QRCodeEncoder(this, intent, smallerDimension); setTitle(getString(R.string.app_name) + " - " + qrCodeEncoder.getTitle()); Bitmap bitmap = qrCodeEncoder.encodeAsBitmap(); ImageView view = (ImageView) findViewById(R.id.image_view); view.setImageBitmap(bitmap); TextView contents = (TextView) findViewById(R.id.contents_text_view); contents.setText(qrCodeEncoder.getDisplayContents()); } catch (WriterException e) { Log.e(TAG, "Could not encode barcode", e); showErrorMessage(R.string.msg_encode_contents_failed); qrCodeEncoder = null; } catch (IllegalArgumentException e) { Log.e(TAG, "Could not encode barcode", e); showErrorMessage(R.string.msg_encode_contents_failed); qrCodeEncoder = null; } }
@Override protected void onResume() { super.onResume(); // This assumes the view is full screen, which is a good assumption WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); Point displaySize = new Point(); display.getSize(displaySize); int width = displaySize.x; int height = displaySize.y; int smallerDimension = width < height ? width : height; smallerDimension = smallerDimension * 7 / 8; Intent intent = getIntent(); if (intent == null) { return; } try { boolean useVCard = intent.getBooleanExtra(USE_VCARD_KEY, false); qrCodeEncoder = new QRCodeEncoder(this, intent, smallerDimension, useVCard); Bitmap bitmap = qrCodeEncoder.encodeAsBitmap(); if (bitmap == null) { Log.w(TAG, "Could not encode barcode"); showErrorMessage(R.string.msg_encode_contents_failed); qrCodeEncoder = null; return; } ImageView view = (ImageView) findViewById(R.id.image_view); view.setImageBitmap(bitmap); TextView contents = (TextView) findViewById(R.id.contents_text_view); if (intent.getBooleanExtra(Intents.Encode.SHOW_CONTENTS, true)) { contents.setText(qrCodeEncoder.getDisplayContents()); setTitle(qrCodeEncoder.getTitle()); } else { contents.setText(""); setTitle(""); } } catch (WriterException e) { Log.w(TAG, "Could not encode barcode", e); showErrorMessage(R.string.msg_encode_contents_failed); qrCodeEncoder = null; } }