'안드로이드/Android QRCode'에 해당되는 글 4건

728x90

zxing 을 이용하여 QR코드를 스캔하는 방법에 대한 코드 작성에 필요한 핵심 내용을 기술한다.


앱 build.gradle

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

    implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
    implementation 'gun0912.ted:tedpermission:2.0.0'
    implementation 'com.google.android.material:material:1.1.0'
}


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.link2me.android.qrcodesample">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission
        android:name="android.permission.REQUEST_INSTALL_PACKAGES"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="false"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">
        <activity android:name=".MainActivity"
            android:screenOrientation="portrait"/>
        <activity
            android:name="com.journeyapps.barcodescanner.CaptureActivity"
            android:screenOrientation="portrait"
            tools:replace="screenOrientation" />
        <activity android:name=".SplahActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ScanQRActivity"
            android:screenOrientation="portrait"/>
    </application>

</manifest>


ScanQRActivity.java

public class ScanQRActivity extends AppCompatActivity {
    private final String TAG = this.getClass().getSimpleName();
    private IntentIntegrator qrScan;
    Context mContext;
    String QRcode;
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scanqr);
        mContext = ScanQRActivity.this;

        qrScan = new IntentIntegrator(this);
        qrScan.setOrientationLocked(false);
        qrScan.setPrompt("QRcode Sample!");
        qrScan.initiateScan();

        textView = findViewById(R.id.textView);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if(result != null) {
            if(result.getContents() == null) {
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
                Intent intent = new Intent(ScanQRActivity.this, MainActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
                finish();
            } else {
                if(result.getContents() != null) {
                    QRcode = result.getContents();
                    PrefsHelper.write("QRCode",result.getContents());
                    // QRcode 결과를 가지고 서버에서 정보를 조회하여 가져오거나, 다른 처리를 하면 된다.
                    // QRcode 읽은 결과를 화면에 표시
                    textView.setText(QRcode);
                }
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

}


resource 등 코드 세부적인 사항은 https://github.com/jsk005/JavaProjects/tree/master/qrcodesample 를 참조하시길.

'안드로이드 > Android QRCode' 카테고리의 다른 글

PHP TCPDF 설치 및 샘플 코드  (0) 2020.05.30
PHP QR code 생성하는 방법  (0) 2020.03.04
QRCode 개요  (0) 2020.03.03
블로그 이미지

Link2Me

,
728x90

HTML 을 PDF로 출력하기 위해 테스트하고 간략하게 적어둔다.


###### TCPDF 설치 ############
# 1. 웹 브라우저에서 https://sourceforge.net/projects/tcpdf/files/ 에 접속하여 TCPDF를 다운받는다.
# 현재 기준 tcpdf_6_3_2.zip 가 가장 최신이다.
# 다운로드 받은 파일을 리눅스 /usr/share/php 경로에 업로드 한다.

# 다른 경로에 설치해도 되는데 나눔폰트 설치 경로를 변경하기 싫어서 이곳 저곳 설치해보고 그냥 이 폴더로 정했다.
cd /usr/share/php
unzip tcpdf_6_3_2.zip

# 나눔폰트 설치 방법
cd /usr/share/fonts/
wget http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip

unzip NanumFont_TTF_ALL.zip -d NanumFont
cd /usr/share/php/tcpdf/tools/
ls /usr/share/fonts/NanumFont/*
ls /usr/share/fonts/NanumFont/* | xargs -I TTF php tcpdf_addfont.php -i TTF
ll /usr/share/php/tcpdf/fonts/ | grep nanum

# 예제파일을 참조하여 실행할 php 디렉토리에서 내용을 구현한다.

먼저 화면상으로 원하는 형태로 출력이 되는지 확인하고 최종적으로 PDF 파일로 생성되도록 하면 된다.


tcpdf_include.php 파일에서 경로를 수정해준다.

$tcpdf_include_dirs = array(
    realpath('/usr/share/php/tcpdf/tcpdf.php'),
    '/usr/share/php/tcpdf/tcpdf.php'
);

<?php
// Include the main TCPDF library (search for installation path).
require_once('tcpdf_include.php');

// Set some content to print
$html = <<<EOD
<h3>반갑습니다. PDF센터에 오신 걸 환영합니다.</h3>
<i>This is the first example of TCPDF library.</i>
EOD;

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set document information
$pdf->SetCreator(PDF_CREATOR);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// Set font
//$pdf->SetFont('nanumgothic', '', 14, '', true);
$pdf->SetFont('nanumgothic');
$pdf->SetDefaultMonospacedFont("nanumgothic_coding");

// Add a page
$pdf->AddPage();

// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);

// Close and output PDF document
//$pdf->Output(getcwd().'/001.pdf', 'F'); // 실제 파일 생성됨
$pdf->Output('001.pdf', 'I'); // 화면으로 보여줌
?>
 



참조 사이트

https://wickedmagic.tistory.com/571

https://zetawiki.com/wiki/TCPDF_%ED%95%9C%EA%B8%80_%ED%8F%B0%ED%8A%B8_%EC%82%AC%EC%9A%A9

'안드로이드 > Android QRCode' 카테고리의 다른 글

Android QRCode 샘플  (0) 2020.08.25
PHP QR code 생성하는 방법  (0) 2020.03.04
QRCode 개요  (0) 2020.03.03
블로그 이미지

Link2Me

,
728x90

PHP에서 QR Code를 생성하기 위해서는 php.ini 환경설정 값을 먼저 확인한다.



PHP QRCode 를 다운로드 받는 곳

https://sourceforge.net/projects/phpqrcode/files/releases/ 에서 받는다.

2010년에 구현된 파일로 Class 로 되어 있고 잘 동작된다.


파일을 폴더 그대로 압축을 푼다.


실행 예제 코드

<?php
// 압축을 해제한 phpqrcode 폴더의 qrlib.php 파일을 include한다.
include_once "./phpqrcode/qrlib.php";
$qrContents = "00아파트 122동 703호";
$filePath = sha1($qrContents).".png";

if(!file_exists($filePath)) {
    $ecc = 'H'; // L, M, Q, H, This parameter specifies the error correction capability of QR.
    $pixel_Size = 10; // This specifies the pixel size of QR.
    $frame_Size = 10; // level 1-10
    QRcode::png($qrContents, $filePath, $ecc, $pixel_Size, $frame_Size);
    echo "파일이 정상적으로 생성되었습니다.";
    echo "<hr/>";
} else {
    echo "파일이 이미 생성되어 있습니다.\n파일을 지우고 다시 실행해 보세요.";
    echo "<hr/>";
}

echo "저장된 파일명 : ".$filePath;
echo "<hr/>";
echo "<center><img src='".$filePath."'/></center>"
?>


실행결과



다음은 안드로이드 앱에서 QR Code를 구현하여 카메라로 위 이미지를 인식하면 $qrContents = "00아파트 122동 703호"; 인 00아파트 122동 703호 를 결과로 보여주는지 확인하면 된다.

보통은 https://abc.com/index.php 처럼 상품 설명이나 사이트 이동으로 연결하여 만든다고 보면 된다.



'안드로이드 > Android QRCode' 카테고리의 다른 글

Android QRCode 샘플  (0) 2020.08.25
PHP TCPDF 설치 및 샘플 코드  (0) 2020.05.30
QRCode 개요  (0) 2020.03.03
블로그 이미지

Link2Me

,
728x90

QR Code는 흑백 격자 무늬 패턴으로 정보를 나타내는 매트릭스 형식의 이차원 바코드이다.


QR코드는 1994년 일본 도요타 자동차 자회사인 덴소 웨이브가 도요타 자동차 전용 부품을 구별하기 위해 개발하면서 시작됐다. 기존 바코드 방식이 1차원적인 가로 선만으로는 담을 수 있는 정보의 양이 제한되기 때문에, 일정 면적에 정보를 담을 수 있는 2차원 코드를 개발한 것이다.

기존의 바코드가 20자 내외의 숫자 정보만 저장할 수 있지만, QR코드는 숫자 최대 7,089자, 문자 최대 4,296자를 저장할 수 있다.


QR코드는 정사각형 안 흑백 격자선 위로 다양한 무늬가 입혀진 것이다. QR코드는 크게 3가지 패턴으로 구성된다. 위치 찾기 패턴과 얼라인먼트 패턴, 셀 패턴 이다. 위치 찾기 패턴은 모든 QR코드의 세 모서리에 크게 자리 잡고 있는 사각형이다. 해당 기능은 QR코드를 인식기가 360도 어느 방향에서 감지하더라도 QR코드의 위치를 정확하게 파악, 빠른 정보 탐색이 가능하도록 만드는 일종의 나침반 기능을 한다. 이를 통해 데이터 인식 및 분석 속도가 빨라져 QR코드란 이름도 ‘빠른 응답’(Quick Response)에서 나왔다.


QR코드가 널리 쓰이면서 새로운 문제도 등장하고 있다. QR코드는 바코드에 비해 많은 정보를 담을 수 있어 QR코드에 악성코드나 유해 웹사이트 주소를 담아 유포하는 사례가 많아지고 있다.
검증된 기관이나 기업이 아닌 곳에서 제공하는 QR코드의 경우 접속할 때 신중해야 한다.


스마트폰의 사진촬영 기능으로 QR코드를 찍으면 QR코드에 담긴 정보에 따라 다양한 기능을 할 수 있다.

가장 많이 쓰는 기능은 특정 홈페이지로 보내는 것이다. 가령 제품 상자에 인쇄된 QR코드를 찍는 순간 제품을 자세히 소개하는 홈페이지를 보여주는 식이다. 인쇄매체를 가진 언론사는 기사 옆에 QR코드를 찍어 관련된 동영상을 쉽게 보여줄 수 있다.


Web상에서 QR Code를 생성해주는 사이트(https://ko.qr-code-generator.com/)가 있다.

QR Code를 생성하면 생성된 QR Code 이미지를 다운로드할 수 있고, Android QRCode Sample 코드로 입력한 텍스트가 출력되는지 Scan으로 확인해 볼 수 있다.


QR Code 판독원리  

1. 카메라에서 QR코드 영상 입력  

2. 카메라 영상을 흑백(bitmap)으로 변환.  

3. 흑백영상에서 QR코드 찾기  

4. 찾은 QR코드의 판독  

5. 판독데이터를 스마트폰 화면에 출력


다량의 QR Code를 한꺼번에 등록하는 기능을 하려면 별도로 PHP 라이브러리를 사용하는 것이 좋다.



'안드로이드 > Android QRCode' 카테고리의 다른 글

Android QRCode 샘플  (0) 2020.08.25
PHP TCPDF 설치 및 샘플 코드  (0) 2020.05.30
PHP QR code 생성하는 방법  (0) 2020.03.04
블로그 이미지

Link2Me

,