17 Mar 2016
Membuat Aplikasi Android QR Scan Dan Barcode Scan
Untuk membaca data dari QR Code atau Barcode, aplikasi yang dibuat dalam turorial ini memerlukan aplikasi pihak ketiga yang harus diunduh dan dipasang pada gadget android disini.
Buat project baru di Android Studio File ⇒ New Project. Kemudian pilih Blank Activity dan melanjutkannya hingga selesai.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.kuncoro.qrbarcode.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> </android.support.design.widget.CoordinatorLayout>

content_main.xml
Layout untuk menampilkan hasil scan dan juga tombol untuk memanggil scanner.
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" 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" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.kuncoro.qrbarcode.MainActivity" tools:showIn="@layout/activity_main"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|top" android:layout_margin="20dp" android:text="Scan" android:textColor="#000000" android:textSize="30dp" /> <Button android:id="@+id/qr" android:layout_width="250dp" android:layout_height="80dp" android:layout_gravity="center" android:layout_margin="10dp" android:gravity="center" android:text="QR Code" android:textSize="18dp" /> <Button android:id="@+id/bar" android:layout_width="250dp" android:layout_height="80dp" android:layout_gravity="center" android:layout_margin="10dp" android:gravity="center" android:text="Bar Code" android:textSize="18dp" /> <TextView android:id="@+id/txt_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="20dp" android:textColor="#000000" /> <TextView android:id="@+id/txt_format" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="20dp" android:textColor="#000000" /> </LinearLayout> </ScrollView>
MainActivity.java
Class untuk memanggil scanner dan juga menampilkan hasil dari scanner.
package com.kuncoro.qrbarcode; import android.app.Activity; import android.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { Toolbar toolbar; Button btn_qr, btn_bar; TextView txt_content, txt_format; String contents, format; Intent intent; static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); btn_qr = (Button) findViewById(R.id.qr); btn_bar = (Button) findViewById(R.id.bar); txt_content = (TextView) findViewById(R.id.txt_content); txt_format = (TextView) findViewById(R.id.txt_format); btn_qr.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { Intent intent = new Intent(ACTION_SCAN); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0); } catch (ActivityNotFoundException anfe) { showDialog(MainActivity.this, "No Scanner Found", "Download a scanner code activity?", "Yes", "No").show(); } } }); btn_bar.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { try { intent = new Intent(ACTION_SCAN); intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); startActivityForResult(intent, 0); } catch (ActivityNotFoundException anfe) { showDialog(MainActivity.this, "No Scanner Found", "Download a scanner code activity?", "Yes", "No").show(); } } }); } // dilalog untuk menampilkan peringantan jika belum nginstall aplikasi sncanner com.google.zxing.client.android private static AlertDialog showDialog(final Activity act, CharSequence title, CharSequence message, CharSequence buttonYes, CharSequence buttonNo) { AlertDialog.Builder dialog = new AlertDialog.Builder(act); dialog.setTitle(title); dialog.setMessage(message); dialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int i) { Uri uri = Uri.parse("market://search?q=pname:" + "com.google.zxing.client.android"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); try { act.startActivity(intent); } catch (ActivityNotFoundException anfe) { } } }); dialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int i) { } }); return dialog.show(); } // untuk menampilkan hasil scanner public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 0) { if (resultCode == RESULT_OK) { contents = intent.getStringExtra("SCAN_RESULT"); format = intent.getStringExtra("SCAN_RESULT_FORMAT"); txt_content.setText("Content : " + contents); txt_format.setText("Format : " + format); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Run Aplikasinya