Blog Single

Herkese merhabalar, 2016 yılının ilk makalesi olarak, 01.01.2016 tarihli yeni bir post atmak istedim.Kendi blog sayfamdan sizlerle yazılım ve teknoloji üzerine olsun blog paylaşımlarım devam ediyor olacaktır.

Pekii, bu dersimizde ne işleyeceğiz ?

  • Android Studio ortamı üzerinde, QR Code Reader (Kare Kod Okuyucu) örneğine değineceğim.

Bismillah diyerek başlayalım ozaman;

  • File > New > New Project
  • Application name olarak ise, QR_CodeReader, Company name (domain) olarak ise, serifgungor.com yazıp, Next diyoruz
  • Target Android Devices sayfasında değişiklik yapmadan, tekrar Next
  • Empty Activity seçip tekrar Next, Activity Name aynı şekilde kalsın MainActivity ve Layout Name activity_main olarak Finish diyerek projemizi oluşturmuş ve kod yazmaya hazır duruma gelmesini bekliyor olmamız gerekiyor.

Öncelikle activity_main.xml Layout dosyamda değişiklik yaparak işlemlere başlamak istiyorum.

  • Proje android görünümünde açılmış şekilde iken,
  • app > res > layout > activity_main.xml dosyamızı açıyoruz.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical"
tools:context="com.serifgungor.qr_codereader.MainActivity" >

<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="Tara"
    android:textColor="#000000"
    android:textSize="30dp" />

<Button
    android:id="@+id/scanner"
    android:layout_width="250dp"
    android:layout_height="80dp"
    android:layout_gravity="center"
    android:layout_margin="10dp"
    android:gravity="center"
    android:onClick="scanQR"
    android:text="Karekod (QR Code)"
    android:textSize="18dp" >
</Button>
</LinearLayout>

Not: Örneğimizde farklı bir android kütüphanesinden QRCode okuyucuyu çekeceğiz. com.google.zxing.client.android uygulaması bulunamadığı takdirde indirilsin mi diye uygulamamızda sorulacaktır. Uygulamayı indirdiğimizde ise QRCode okuyucumuz çalışıyor olacaktır. AndroidManifest.xml dosyamızda özel bir izin belirtmemize gerek kalmayacak. Çünkü izinleri intent ile çağıracağımız uygulamadaki Activity'nin bağlı olduğu AndroidManifest.xml dosyasından çekecektir.

MainActivity.java dosyamız içindeki kodlar ise aşağıdaki gibi olmalıdır;

package com.serifgungor.qr_codereader;

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.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //set the main content layout of the Activity
        setContentView(R.layout.activity_main);
    }

    public void scanQR(View v) {
        try {
            //start the scanning activity from the com.google.zxing.client.android.SCAN intent
            Intent intent = new Intent(ACTION_SCAN);
            intent.setPackage("com.google.zxing.client.android");
            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
            startActivityForResult(intent, 0);
        } catch (ActivityNotFoundException anfe) {
            //on catch, show the download dialog
            showDialog(MainActivity.this, "QR Kodu tarayıcısı bulunamadı", "Indirmek ister misiniz ?", "Evet", "Hayır").show();
        }

    }

    //alert dialog for downloadDialog
    private static AlertDialog showDialog(final Activity act, CharSequence title, CharSequence message, CharSequence buttonYes, CharSequence buttonNo) {
        AlertDialog.Builder downloadDialog = new AlertDialog.Builder(act);
        downloadDialog.setTitle(title);
        downloadDialog.setMessage(message);
        downloadDialog.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) {

                }
            }
        });
        downloadDialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {
            }
        });
        return downloadDialog.show();
    }

    //on ActivityResult method
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                //get the extras that are returned from the intent
                String contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                Toast toast = Toast.makeText(this, "Icerik:" + contents + " Format:" + format, Toast.LENGTH_LONG);
                toast.show();
            }
        }
    }
}

 

Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın