package info.blockchain.wallet.ui; import java.util.Arrays; import java.util.Map; import piuk.blockchain.android.MyRemoteWallet; import piuk.blockchain.android.WalletApplication; import piuk.blockchain.android.R; import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.google.zxing.client.android.Contents; import com.google.zxing.client.android.encode.QRCodeEncoder; import android.app.Activity; import android.content.res.Resources; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.ImageView; //import android.util.Log; public class QRActivity extends Activity { private ImageView ivQR = null; private TextView tvBTCAddress = null; private TextView tvBTCLabel = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_qr_dialog); String btcAddress = null; Bundle extras = getIntent().getExtras(); if(extras != null) { btcAddress = extras.getString("BTC_ADDRESS"); } Bitmap bm = generateQRCode(btcAddress); ivQR = (ImageView)findViewById(R.id.qr); ivQR.setImageBitmap(bm); tvBTCAddress = (TextView)findViewById(R.id.btc_address); tvBTCAddress.setText(btcAddress); tvBTCLabel = (TextView)findViewById(R.id.btc_label); MyRemoteWallet wallet = WalletUtil.getInstance(this).getRemoteWallet(); Map<String,String> labels = wallet.getLabelMap(); String label = labels.get(btcAddress); if (label != null) { tvBTCLabel.setText(label); } else { tvBTCLabel.setVisibility(View.GONE); } } private Bitmap generateQRCode(String uri) { final float REG_RES = 2.0f; Resources resources = getResources(); float scale = resources.getDisplayMetrics().density; Bitmap bitmap = null; int qrCodeDimension = (scale <= REG_RES) ? 440 : 880; QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(uri, null, Contents.Type.TEXT, BarcodeFormat.QR_CODE.toString(), qrCodeDimension); try { bitmap = qrCodeEncoder.encodeAsBitmap(); } catch (WriterException e) { e.printStackTrace(); } return bitmap; } }