;

Monday, August 20, 2012

Membuat QR Code dengan Android

Monday, August 20, 2012

Membuat QR Code dengan Android
Seperti yang kita telah ketahui selama ini, QR CODE merupakan kepanjangan Quick Response Code yang merupakan kode matriks (atau dua dimensi barcode) yang dibuat oleh perusahaan Jepang Denso-Wave pada tahun 1994, di sisi kemampuan menyimpan data QR CODE lebih mampu menyimpan data lebih banyak dari pada barcode standar. QR Code dapat menyimpan sampai 4.296 karakter alfanumerik. Dan ini dapat berisi bebas, bisa url, teks, informasi kontak, no telepon dan lain-lain. dengan adanya QR CODE ini setidaknya memberikan gebrakan tehnologi baru yang mampu menjadi penggantI BARCODE.

kali ini download aplikasi android akan memberikan informasi mengenai, bagaimana kita bisa membuat QR CODE di Gadget android. QR CODE ANDROID


paramater yang dapat di tambahkan setelah tanda "?" yaitu seperti yang dijelaskan di bawah ini :

cht=qr : Untuk membuat spesifik QR Code (required).
chs=x : Ukuran image yang digunakan (required).
chl= : Isi dari QR Code yang akan dibuat. Data bisa digit (0-9), karakter alfanumerik, binary bytes, maupun kanji. Data tidak ada spasi dan di gabung, jika ingin digabung harus di encode menggunakan UTF-8. Panjang maksimum data 2k, jika lebih dari 2k data harus dikirim menggunakan "POST" (required).
choe= : Encode yang dapat di gunakan pada QR yaitu, UTF-8 [Default], Shift_JIS dan ISO-8859-1 (optional).
chld=| : error_correction_level di gunakan untuk memeriksa kesalahan pembuatan QR baik dari salah pembacaan, pemulihan data yang hilang maupun data yang di kaburkan. Margin untuk ukuran border warna putih di sekitar bagian data dari kode (optional).


Untuk membuat QR Code sederhana dengan menggunakan android saya menggunakan 1 class dan 1 xml. Kodenya sebagai berikut:

private static String generateQRCode = "https://chart.googleapis.com/chart?chs=400x400&cht=qr&choe=UTF-8&chl=";
private EditText qrMessage;
private Button generateQR ;
private LinearLayout progressBar;
private LinearLayout qrForm;
private ImageView showQR;
private TextView titleText;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
qrMessage = (EditText) findViewById(R.id.qr_message);
generateQR = (Button) findViewById(R.id.generate_qr_code);
showQR = (ImageView) findViewById(R.id.qr_code_image);
progressBar = (LinearLayout) findViewById(R.id.qr_progressbarr);
qrForm = (LinearLayout) findViewById(R.id.layout_form);
titleText = (TextView) findViewById(R.id.title_text);

generateQR.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(qrMessage.getText().toString().length() > 0){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(qrMessage.getWindowToken(), 0);
progressBar.setVisibility(View.VISIBLE);
qrForm.setVisibility(View.GONE);
titleText.setText("QR Code");
String message = qrMessage.getText().toString();
generateQRCode(generateQRCode+message);
}else{
showLoginAlert("Alert", "Please input message");
}
}
});
}


public void showLoginAlert(String alertTitle, String alertMessage) {
try{
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle(alertTitle);
alertDialog.setMessage(alertMessage);
alertDialog.setButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
}
});
alertDialog.show();
}catch(Exception e){
//window gone, do nothing....
}
}

public void generateQRCode(final String url){
AsyncTask generatedQRCode = new AsyncTask(){
@Override
protected Bitmap doInBackground(Void... arg0) {
Bitmap bmImg = null;
HttpURLConnection conn = null;
try {
URL myFileUrl = new URL(url.replace(" ", "-"));
conn = (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
} catch (MalformedURLException e) {
showLoginAlert("Alert!", "Sorry QR Code can't be show, please try again");
} catch (IOException e) {
showLoginAlert("Alert!", "Sorry QR Code can't be show, please try again");
} finally{
if(conn != null){
conn.disconnect();
}
}

return bmImg;
}

@Override
protected void onPostExecute(Bitmap result) {
progressBar.setVisibility(View.GONE);
showQR.setVisibility(View.VISIBLE);
showQR.setImageBitmap(result);
}

};

generatedQRCode.execute();
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
qrMessage.setText("");
titleText.setText("Input QR Code Message");
qrForm.setVisibility(View.VISIBLE);
showQR.setVisibility(View.GONE);
}
return false;
}




Disini Menggunakan onKeyDown karna saya cuman menggunakan 1 class tetapi beda tampilan.

XML yang dibuat sebagai berikut :


[html:Button
android:id="@+id/generate_qr_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dip"
android:text="Generate QR Code" /]




Nah setelah selesai semua saya menambahkan 1 file xml di drawable untuk mempercantik progressbar yang diberi nama anim_progress.xml Dan ingat file tersebut kita simpan di folder drawable.


di bawah ini hasilnya:



TERIMA KASIH TELAH BERKUNJUNG DI BLOG ANDROID KAMI

Aplikasi Android - 8:32 AM

1comments:

furniture said...

makasih pak sangat bermanfaat

Post a Comment