5分鐘教會 Android Studio QR code 產生器 製作 教學

現在走在路上隨隨便便都可以看到QR code
但是要怎麼產生?

今天就用5分鐘來教大家如何自己寫一個Android APP產生QR code

做完會長這樣


首先先把函式庫匯入到我們的專案當中
先到Build.gradle裡面implementation這兩行


implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.google.zxing:core:3.2.1'



注意:如果你更新到AndroidX以後請用下面這三行代替上面那兩行
    implementation('com.journeyapps:zxing-android-embedded:3.6.0') { transitive = false }
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'com.google.zxing:core:3.3.0'

然後隨便拉一拉物件


editText(Plain Text):輸入文字,用來轉成QR code
button:按鈕,觸發轉換
imageView:顯示生成完的圖片
喔對了,如果你拉imageView的時候他出現這個視窗叫你選擇圖片你就隨便選一張
然後再到文字編輯模式(Text)那裡把下面那行程式碼刪掉就不會有圖片了

app:srcCompat="@mipmap/ic_launcher"

不然你功力夠強直接寫程式碼不用拉的也可以

新增一個副程式getCode()
在裡面先實做ImageView和EditText物件
ImageView ivCode=(ImageView)findViewById(R.id.imageView);
EditText etContent=(EditText)findViewById(R.id.editText);
呼叫別人寫好的BarcodeEncoder類別

BarcodeEncoder encoder = new BarcodeEncoder();
因為已經有大神寫好了所以簡單套用
外面要加try catch避免使用者亂來(誤

BarcodeEncoder encoder = new BarcodeEncoder();
try{
   Bitmap bit = encoder.encodeBitmap(etContent.getText()
              .toString(),BarcodeFormat.QR_CODE,250,250);
   ivCode.setImageBitmap(bit);
}catch (WriterException e){
   e.printStackTrace();
}

到最上面implements View.OnClickListener
這是用來監聽你有沒有按下Button
但是你打完會發現他有錯誤


對者它按鍵盤上的Alt+Enter(同時按)
選擇第一個
一樣第一個按OK
他就會自動多出幾行程式碼
在裡面呼叫剛剛寫的副程式
getCode();
然後到onCreate裡面註冊按鈕
Button btn=(Button)findViewById(R.id.button);
接者讓他掛載監聽
btn.setOnClickListener(this);
這樣就能執行了


執行結果:



這樣操作有點不直覺,稍微移動一下物件
這樣看起來是不是有模有樣阿?
接者就可以在Play Store上架了
有需要的話告訴我之後再寫一篇文章教學



附上完整程式碼:


import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.journeyapps.barcodescanner.BarcodeEncoder;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn=(Button)findViewById(R.id.button);
        btn.setOnClickListener(this);
    }

    public void getCode(){
        ImageView ivCode=(ImageView)findViewById(R.id.imageView);
        EditText etContent=(EditText)findViewById(R.id.editText);
        BarcodeEncoder encoder = new BarcodeEncoder();
        try{
            Bitmap bit = encoder.encodeBitmap(etContent.getText().toString()
                    ,BarcodeFormat.QR_CODE,250,250);
            ivCode.setImageBitmap(bit);
        }catch (WriterException e){
            e.printStackTrace();
        }
    }

原作者的github

留言

  1. 請問樂透的QRCODE要怎設計呢

    回覆刪除
    回覆
    1. 不好意思,不太明白您的需求,請問可以詳細說明要實現的功能嗎?

      刪除

張貼留言

如果有任何問題或建議,都歡迎留言或來信: a@ruyut.com