二维码名片是现在很常见的,这里只是一个简单生成二维码,如果对二维码名片的内容没有过多的要求,可以借鉴一下。生成二维码用的是谷歌的Zxing库,关于扫码,这里就不多说了。

zxing下载地址:http://download.csdn.net/detail/qq55214/9665820

public class MainActivity extends AppCompatActivity {    private static final int QR_WIDTH = 400;    private static final int QR_HEIGHT = 400;    private ArrayList card = new ArrayList<>();    private ImageView mIv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mIv = (ImageView) findViewById(R.id.main_iv);        card.clear();        card.add("张三");        card.add("18766561626");        card.add("公司_不知道");        card.add("职位_不知道");        card.add("职称_不知道");        card.add("邮箱_不知道");        card.add("地址_不知道");        TextView tv = (TextView) findViewById(R.id.main_tv);        tv.setText(card.toString());    }    /**     *     * @param view     */    public void qrcode(View view){        mIv.setImageBitmap(createQrcode(enQrCodeOneContact(card)));    }    /**     * 生成二维码     *     * @param qrcode     */    public Bitmap createQrcode(String qrcode) {        try {            QRCodeWriter writer = new QRCodeWriter();            if (qrcode == null || "".equals(qrcode) || qrcode.length() < 1) {                Toast.makeText(MainActivity.this,"数据为空",Toast.LENGTH_SHORT).show();                return null;            }            // TODO 编码格式            Hashtable hints = new Hashtable();            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");            // TODO 二维码宽高、颜色            BitMatrix bitMatrix = writer.encode(qrcode,                    BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);            int[] pixels = new int[QR_WIDTH * QR_HEIGHT];            for (int y = 0; y < QR_HEIGHT; y++) {                for (int x = 0; x < QR_WIDTH; x++) {                    if (bitMatrix.get(x, y)) {                        pixels[y * QR_WIDTH + x] = 0xff0000ff;                    } else {                        pixels[y * QR_WIDTH + x] = 0xffffffff;                    }                }            }            Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT,                    Bitmap.Config.ARGB_8888);            bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);            return  bitmap;        } catch (Exception e) {            Log.e("All_Exception", e.toString());            Toast.makeText(MainActivity.this,"数据太大,请重新选择",Toast.LENGTH_SHORT).show();        }        return null;    }    /**     * 组成NameCard名片格式     * @param nameCard     * @return     */    public String enQrCodeOneContact(ArrayList nameCard){        StringBuilder ss = new StringBuilder();        ss.append(String.format("BEGIN:VCARD\n" +                "VERSION:3.0\n" +                "N:%s",nameCard.get(0)))                .append(String.format("\nTEL;iPhone;VOICE:%s",nameCard.get(1)))                .append("\nORG:" + nameCard.get(2))                .append("\nTITLE:"+nameCard.get(3))                .append("\nROLE:"+nameCard.get(4))                .append("\nEMAIL:"+nameCard.get(5))                .append("\nADR:"+nameCard.get(6))                .append("\nEND:VCARD");        return ss.toString();    }}

名片是采用公用的VCARD格式,不清楚的童鞋请参考:

http://blog.csdn.net/johnsuna/article/details/8482454

就是把各个字段对应起来,代码里注释也很清楚了。

另外,这个生成二维码字符创长度是有限的,内容不易过多。。。。


更多相关文章

  1. Android视频采集+H264编码
  2. 在Eclipse中用javadoc给android工程库文件生成API说明文档
  3. Android扫描二维码及生成二维码Demo
  4. Android学习之反编译工具介绍
  5. 详细android gradle 只编译realse版本
  6. Android(安卓)Jni 学习实战之(一)
  7. Android(安卓)Studio Json解析生成对应实体类 插件GsonFormat
  8. TensorFlow for Android(安卓)PB模型的优化
  9. [Android] ramdisk.img的生成及解压

随机推荐

  1. android listview每个item定义动画呈现
  2. android 创建快捷桌面
  3. [置顶] Android(安卓)api level对照表
  4. Android横向滑动选项卡
  5. android设置gps自动开启
  6. android自定义按钮按下效果
  7. android 7.1.1 开始 Prevent apps to ove
  8. android > 获取图片 从 本地 /相机
  9. Android(安卓)FlexboxLayoutManager 使用
  10. Android(安卓)Bitmap用法总结