使用vCard規(guī)范用java生成名片二維碼掃一掃自動(dòng)保存聯(lián)系人到手機(jī)

vCard介紹

vCard是電子名片的文件格式標(biāo)準(zhǔn)。它一般附加在電子郵件之后,但也可以用于其它場(chǎng)合(如在互聯(lián)網(wǎng)上相互交換)熙兔。vCard可包含的信息有:姓名容客、地址資訊、電話(huà)號(hào)碼二跋、URL战惊,logo,相片等同欠。
vCard(或稱(chēng)做Versitcard)最早是由Versit聯(lián)盟于1995年提出的样傍,當(dāng)時(shí)聯(lián)盟成員包括蘋(píng)果公司,AT&T科技(后來(lái)的朗訊)铺遂,IBM及西門(mén)子衫哥。在1996年十二月,格式的擁有權(quán)移至互聯(lián)網(wǎng)郵件聯(lián)盟(IMC)襟锐,此聯(lián)盟是由一些關(guān)注互聯(lián)網(wǎng)電子郵件的公司所組成撤逢。
vCard一同提出的用于數(shù)據(jù)交換的標(biāo)準(zhǔn)還有vCalendar,但現(xiàn)在被iCalendar所取代粮坞∥萌伲互聯(lián)網(wǎng)郵件聯(lián)盟已經(jīng)聲明它希望“所有的vCalendar開(kāi)發(fā)者利用這些新的開(kāi)放標(biāo)準(zhǔn),并使軟件能夠同時(shí)兼容vCalendar 1.0和iCalendar莫杈』ダ”
vCard標(biāo)準(zhǔn)的2.1版被電子郵件客戶(hù)端廣泛支持。3.0版是一個(gè)包含在RFC 2425和RFC 2426中的IETF標(biāo)準(zhǔn)跟蹤提案筝闹。vCard的常用副檔名是.vcf媳叨。
不同的程序?qū)?strong>vCard標(biāo)準(zhǔn)實(shí)現(xiàn)亦不同。Mac OS X中的Address Book允許把所有聯(lián)系人導(dǎo)出到一個(gè)vcf文件关顷,而Microsoft Outlook只能每人一個(gè)文件糊秆。Linux中KDE的Kontact允許每個(gè)文件導(dǎo)入或?qū)С鲆蝗嘶蚨嗳恕?/p>

vCard文件樣例

BEGIN:VCARD
VERSION:2.1
N:Gump;Forrest
FN:Forrest Gump
ORG:Gump Shrimp Co.
TITLE:Shrimp Man
TEL;WORK;VOICE:(111) 555-1212
TEL;HOME;VOICE:(404) 555-1212
EMAIL;PREF;INTERNET:forrestgump@walladalla.com
REV:20080424T195243Z
END:VCARD

java代碼生成二維碼

  • 需要google提供的zxing包生成二維碼,提前準(zhǔn)備好導(dǎo)入到工程中(com.google.zxing.common.BitMatrix)

MatrixToImageWriter類(lèi)

    import javax.imageio.ImageIO;
    import java.io.File;
    import java.io.OutputStream;
    import java.io.IOException;
    import java.awt.image.BufferedImage;
    import com.google.zxing.common.BitMatrix;

    public final class MatrixToImageWriter {

    private static final int BLACK = 0xFF000000;
    private static final int WHITE = 0xFFFFFFFF;

    private MatrixToImageWriter() {
    }

    public static BufferedImage toBufferedImage(BitMatrix matrix) {
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE);
            }
        }
        return image;
    }

    public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
        BufferedImage image = toBufferedImage(matrix);
        if (!ImageIO.write(image, format, file)) {
            throw new IOException("Could not write an image of format " + format + " to " + file);
        }
    }

    public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException {
        BufferedImage image = toBufferedImage(matrix);
        if (!ImageIO.write(image, format, stream)) {
            throw new IOException("Could not write an image of format " + format);
        }
    }

}

CreQcode類(lèi)

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;

public class CreQcode {
    public static void main(String[] args) {
        try {
            // 1.下面是我測(cè)試用的一個(gè)format
            // BEGIN:VCARD
            // "VERSION:3.0
            // N:李德偉
            // EMAIL:1606841559@qq.com
            // TEL:12345678912
            // TEL;CELL:12345678912
            // ADR:山東濟(jì)南齊魯軟件園
            // ORG:濟(jì)南
            // TITLE:軟件工程師
            // URL:http://blog.csdn.net/lidew521
            // NOTE:呼呼測(cè)試下吧议双。痘番。。
            // END:VCARD"
            // 2.根據(jù)測(cè)試結(jié)果推理
            // ---------------------------------------
            // 測(cè)試結(jié)果不加回車(chē)是不行的這樣的話(huà)會(huì)出現(xiàn)問(wèn)題
            // 就是掃描出來(lái)以后會(huì)沒(méi)有內(nèi)容
            // 這里可以看出,微信解析二維碼的方式
            // -------------------------------------------------
            // 3.測(cè)試\n可以被二維碼識(shí)別
            // 這里也是有原因的,因?yàn)槲⑿艗呙瓒S碼后會(huì)進(jìn)行二次加工,
            // 這里加工的時(shí)候,是用java代碼的,因?yàn)槭莂ndroid系統(tǒng),所以在
            // java中的回車(chē)是\n,因此這里就要用\n來(lái)分割
            String content = "BEGIN:VCARD\n" + "VERSION:3.0\n" + "N:張三\n" + "EMAIL:11111@qq.com\n" + "TEL:15100000000\n" + "ADR:\n" + "ORG:\n" + "TITLE:\n" + "URL:\n" + "NOTE:\n" + "END:VCARD";
            String path = "D:/";
            MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
            Map hints = new HashMap();
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
            BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints);
            File file1 = new File(path, "名片.jpg");
            MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末平痰,一起剝皮案震驚了整個(gè)濱河市汞舱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宗雇,老刑警劉巖兵拢,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異逾礁,居然都是意外死亡说铃,警方通過(guò)查閱死者的電腦和手機(jī)访惜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)腻扇,“玉大人债热,你說(shuō)我怎么就攤上這事∮卓粒” “怎么了窒篱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)舶沿。 經(jīng)常有香客問(wèn)我墙杯,道長(zhǎng),這世上最難降的妖魔是什么括荡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任高镐,我火速辦了婚禮,結(jié)果婚禮上畸冲,老公的妹妹穿的比我還像新娘嫉髓。我一直安慰自己,他們只是感情好邑闲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布算行。 她就那樣靜靜地躺著,像睡著了一般苫耸。 火紅的嫁衣襯著肌膚如雪州邢。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天褪子,我揣著相機(jī)與錄音量淌,去河邊找鬼。 笑死褐筛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叙身。 我是一名探鬼主播渔扎,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼信轿!你這毒婦竟也來(lái)了晃痴?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤财忽,失蹤者是張志新(化名)和其女友劉穎倘核,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體即彪,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡紧唱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年活尊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漏益。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛹锰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绰疤,到底是詐尸還是另有隱情铜犬,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布轻庆,位于F島的核電站癣猾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏余爆。R本人自食惡果不足惜纷宇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望龙屉。 院中可真熱鬧呐粘,春花似錦、人聲如沸转捕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)五芝。三九已至痘儡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枢步,已是汗流浹背沉删。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留醉途,地道東北人矾瑰。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像隘擎,于是被迫代替她去往敵國(guó)和親殴穴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容