🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / Android RMOS / zxing barkod ve QR okuma

1-) Android RMOS - zxing barkod ve QR okuma

 

1-) Android RMOS - build.gradle(Module: app)'a aşağıdakini ekle

dependencies {

...

implementation 'com.journeyapps:zxing-android-embedded:3.2.0@aar'//Add dependency
implementation 'com.google.zxing:core:3.2.1'

}

 

2-) barkod ekranının yan dönmemesi için aşağıdaki clası oluştur

package com.example.pethoalpar.zxingexample.ZxingLibrary;
import com.journeyapps.barcodescanner.CaptureActivity;
public class CaptureActivityPortrait extends CaptureActivity {
// burası boş kalacak
}

3-) barkod ekranının yan dönmemesi için manifeste ekle

<activity
    
android:name=".ZxingLibrary.CaptureActivityPortrait"
    
android:screenOrientation="portrait"
    
android:stateNotNeeded="true"
    
android:theme="@style/Theme.AppCompat.NoActionBar"
    
android:windowSoftInputMode="stateAlwaysHidden">
</
activity>

 

4-) MainActivity.java da çalıştıracağın kod aşağıdadır

 

button = (Button) this.findViewById(R.id.button);
final Activity activity = this;

Toast.
makeText(this, "Main", Toast.LENGTH_LONG).show();

button.setOnClickListener(new View.OnClickListener() {
    
@Override
    
public void onClick(View v) {
        IntentIntegrator integrator =
new IntentIntegrator(activity);
        integrator.setDesiredBarcodeFormats(IntentIntegrator.
ALL_CODE_TYPES);
        integrator.setPrompt(
"Scan");
        integrator.setCameraId(
0);
        integrator.setBeepEnabled(
false);
        integrator.setBarcodeImageEnabled(
false);

        integrator.setCaptureActivity(CaptureActivityPortrait.
class); // barcod ekranını yan çevirmek istiyorsan bunu kullanma

        
integrator.initiateScan();
    }
});

 

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    IntentResult result = IntentIntegrator.
parseActivityResult(requestCode, resultCode, data);
    
if(result != null) {
        
if(result.getContents() == null) {
            Log.
d("MainActivity", "Cancelled scan");
            Toast.
makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
        }
else {
            Log.
d("MainActivity", "Scanned");
            Toast.
makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
        }
    }
else {
        
// This is important, otherwise the result will not be passed to the fragment
        
super.onActivityResult(requestCode, resultCode, data);
    }
}

 

5-) Açıklama

 

Barkod'dan aldığın sonuç onActivityResult metoduna düşer. Yani onCreate metodunu tekrardan yüklemez. Sadece barcod sonucunu alır onActivityResult metodundan devam eder. Bu sayede onCreate sadece 1 kere tetiklenmiş olur.

 

 

6-) Fragmentte göndermek için

public class NfcMainFragment extends Fragment {
    
public static NfcMainFragment nfcMainFragment = null;
    
public void setNfcText(String text) {
        
txtNfc.setText(text);
    }

@Override
public void onCreate(Bundle savedInstanceState) {
    
super.onCreate(savedInstanceState);
        
nfcMainFragment = this;
}

 

---mainactiviyden fragmente göndermek---

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    IntentResult result = IntentIntegrator.
parseActivityResult(requestCode, resultCode, data);
    
if(result != null) {
        
if(result.getContents() == null) {
            Toast.
makeText(getApplicationContext(), "İptal edildi", Toast.LENGTH_LONG).show();
        }
else {
            
if(NfcMainFragment.nfcMainFragment!=null){
                String text=result.getContents();
                Toast.
makeText(getApplicationContext(), "QR-BARCODE OKUNDU!: " + text, Toast.LENGTH_LONG).show();
                NfcMainFragment.
nfcMainFragment.setNfcText(text);
            }
        }
    }
else {
        
super.onActivityResult(requestCode, resultCode, data);
    }
}

 

 

5-) MainActivity.java'nın hepsi aşağıdadır

 

package com.example.pethoalpar.zxingexample;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.pethoalpar.zxingexample.ZxingLibrary.CaptureActivityPortrait;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

public class MainActivity extends AppCompatActivity {

    
private Button button;

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

        
button = (Button) this.findViewById(R.id.button);
        
final Activity activity = this;

        Toast.
makeText(this, "Main", Toast.LENGTH_LONG).show();

        
button.setOnClickListener(new View.OnClickListener() {
            
@Override
            
public void onClick(View v) {
                IntentIntegrator integrator =
new IntentIntegrator(activity);
                integrator.setDesiredBarcodeFormats(IntentIntegrator.
ALL_CODE_TYPES);
                integrator.setPrompt(
"Scan");
                integrator.setCameraId(
0);
                integrator.setBeepEnabled(
false);
                integrator.setBarcodeImageEnabled(
false);

                integrator.setCaptureActivity(CaptureActivityPortrait.
class); // barcod ekranını yan çevirmek istiyorsan bunu kullanma

                
integrator.initiateScan();
            }
        });


    }

    
@Override
    
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.
parseActivityResult(requestCode, resultCode, data);
        
if(result != null) {
            
if(result.getContents() == null) {
                Log.
d("MainActivity", "Cancelled scan");
                Toast.
makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
            }
else {
                Log.
d("MainActivity", "Scanned");
                Toast.
makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
            }
        }
else {
            
// This is important, otherwise the result will not be passed to the fragment
            
super.onActivityResult(requestCode, resultCode, data);
        }
    }
}

5-) activity_main.xml'in hepsi aşağıdadır

 

<?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: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="com.example.pethoalpar.zxingexample.MainActivity">

    <
Button
        
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:text="New Button"
        
android:id="@+id/button"
        
android:layout_centerVertical="true"
        
android:layout_centerHorizontal="true"/>
</
RelativeLayout>

 

 

 

 

 

 

 2021 Aralık 10 Cuma
 512