آموزش خواندن Qr Code در برنامه نویسی اندروید
سلام دوستان امیدوارم حالتان خوب باشد در این سری از آموزش برنامه نویسی اندروید به آموزش خواندن Qr Code در برنامه نویسی اندروید می پردازیم قبلتر آموزش های مختلفی درباره ی خواندن QrCode قرار داده بودیم امروز به معرفی کتاب خانه قدرتمند و همینطور کاربردی برای خواندن QrCode می پردازیم در ادامه با ما همراه باشید.
بهتر ابتدا به بررسی QR Code چیست بپردازیم
QR Code مخفف Quick Response Code یا کد پاسخ سریع است و در Whats’up بخش وب آن برای لاگین کردن مورد استفاده قرار می گیرد در واقع QrCode بارکد دو بعدی است که می تواند مقداری داده را در خود نگه دارد به طور مثال می تواند آدرس یک وب سایت یا یک محصول و حتی یک رمز را نگهداری کند و توسط دوربین گوشی یا بارکد خوان خوانده می شود.
در ادامه می توانید یک بار کد نمونه را مشاهده کنید.
شاید بپرسید چگونه می توانیم بارکد تولید کنید ؟ از سایت زیر برای تولید بارکد می توانید استفاده کنید.
1 | http://goqr.me/ |
در سایت بالا ما یک بارکد همانند زیر درست می کنیم.
1 | {"name" : "mohammadhossein" , "address" :"tehran"} |
بار کد آن به شکل زیر می شود
از بارکد بالا در آخر آموزش برای تست استفاده کنید .
برای اینکه بتوانید بارکد را به سادگی در برنامه خود قرار دهید لازم است از کتاب خانه قدرتمند Zxing استفاده کنید.
برای اینکار وارد فایل Build.gradle شده و در بخش dependencies خط زیر را اضافه کنید.
1 | compile 'com.journeyapps:zxing-android-embedded:3.4.0' |
پروژه را sync کنید.
در activity_main.xml کد های زیر قرار گرفته است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="ir.programchi"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Name" /> <TextView android:id="@+id/textViewName" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="xyz" android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Address" /> <TextView android:id="@+id/textViewAddress" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="xyz" android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" /> </LinearLayout> <Button android:id="@+id/buttonScan" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="Scan QR Code" /> </RelativeLayout> |
که شامل دو فیلد TextView است که مقادیر آنها بعد اسکن بارکد پر می شود.
و در نهایت در MainActivity.java کدهای زیر را قرار میدهیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package ir.programchi; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; import org.json.JSONException; import org.json.JSONObject; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button buttonScan; private TextView textViewName, textViewAddress; private IntentIntegrator qrScan; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonScan = (Button) findViewById(R.id.buttonScan); textViewName = (TextView) findViewById(R.id.textViewName); textViewAddress = (TextView) findViewById(R.id.textViewAddress); qrScan = new IntentIntegrator(this); buttonScan.setOnClickListener(this); } @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, "Result Not Found", Toast.LENGTH_LONG).show(); } else { try { JSONObject obj = new JSONObject(result.getContents()); textViewName.setText(obj.getString("name")); textViewAddress.setText(obj.getString("address")); Toast.makeText(this, result.getContents(), Toast.LENGTH_LONG).show(); } } } else { super.onActivityResult(requestCode, resultCode, data); } } @Override public void onClick(View view) { qrScan.initiateScan(); } } |
در بالا ابتدا View ها find شده اند سپس از qrScan برای خواندن بارکد استفاده شده است بعد از اینکه بروی دکمه کلیک کنید بارکد خوان نمایش داده می شود با قرار دادن گوشی بروی بارکد بالا خواهید دید که دو مقدار در TextView ها نمایش داده می شود. این مقادیر از بارکد گرفته شده اند و به صورت فرمت json خواهند بود (این یک کار ابتکاری است البته برای بارکدها بهترین روش تلقی می شود) برای دریافت نتیجه اسکن از onActivityResult استفاده کرده ایم.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام
چگونه می توان QR code ایجاد کرد که فقط با اپلیکیشنی که ساخته ایم قابل خواندن باشد؟ و سایر برنامه های QR code reader نتوانند آن را بخوانند؟
بهترین کار اینه داده خودتون دیکد کنید اینطوری سایر اپلیکشن ها از داده شما اطلاعی نخواهند داشت و فقط توسط اپ خودتون رمز گشایی خواهد شد