안 드 로 이 드 QR 코드 명함 만 들 기

4006 단어 Android
QR 코드 명함 은 현재 흔히 볼 수 있 는 것 으로 여 기 는 QR 코드 를 간단하게 만 드 는 것 일 뿐 QR 코드 명함 의 내용 에 대해 많은 요구 가 없 으 면 참고 할 수 있다.QR 코드 를 만 드 는 데 는 구 글 의 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
" + "VERSION:3.0
" + "N:%s",nameCard.get(0))) .append(String.format("
TEL;iPhone;VOICE:%s",nameCard.get(1))) .append("
ORG:" + nameCard.get(2)) .append("
TITLE:"+nameCard.get(3)) .append("
ROLE:"+nameCard.get(4)) .append("
EMAIL:"+nameCard.get(5)) .append("
ADR:"+nameCard.get(6)) .append("
END:VCARD"); return ss.toString(); } }

명함 은 공용 VCARD 형식 입 니 다. 잘 모 르 는 동 화 는 참고 하 시기 바 랍 니 다.
http://blog.csdn.net/johnsuna/article/details/8482454
각 필드 를 대응 하 더 라 도 코드 에 주석 이 잘 들 어 있 습 니 다.
또한 이 QR 코드 문자 생 성 길 이 는 제한 되 어 있 으 며 내용 이 너무 많 지 않 습 니 다...

좋은 웹페이지 즐겨찾기