package dk.thoerup.android.barcodesample; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; /* http://blog.dihaw.com/integrating-zxing-in-your-android-app-as-standalone-scanner/ http://code.tutsplus.com/tutorials/android-sdk-create-a-barcode-reader--mobile-17162 http://stackoverflow.com/questions/27851512/how-to-integrate-zxing-library-to-android-studio-for-barcode-scanning */ public class MainActivity extends ActionBarActivity { private Button startCamBtn; private ImageView imageView; private Button scanBtn; private TextView formatTxt, contentTxt; //ved rotate bliver activity'en genstartet - så enten skal variablerne gøres static/gemmes på anden vis eller også skal man låse for rotation static String scanContent = ""; static String scanFormat = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); scanBtn = (Button) findViewById(R.id.button); formatTxt = (TextView)findViewById(R.id.scan_format); contentTxt = (TextView)findViewById(R.id.scan_content); startCamBtn = (Button) findViewById(R.id.button_startcam); imageView = (ImageView) findViewById(R.id.imageView); scanBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /*Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0);*/ IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this); scanIntegrator.initiateScan(); } }); startCamBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, CamActivity.class); startActivityForResult(intent, 1); } }); } @Override protected void onStart() { super.onStart(); updateLabels(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { Log.i("CAM", "requestCode:" + requestCode); switch( requestCode) { case 49374: IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); if (scanningResult != null) { scanContent = scanningResult.getContents(); scanFormat = scanningResult.getFormatName(); updateLabels(); } else{ Toast toast = Toast.makeText(getApplicationContext(), "No scan data received!", Toast.LENGTH_SHORT); toast.show(); } break; case 1: byte data[] = intent.getByteArrayExtra("DATA"); Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); imageView.setMinimumHeight(dm.heightPixels); imageView.setMinimumWidth(dm.widthPixels); imageView.setImageBitmap(bm); break; } } private void updateLabels() { formatTxt.setText("FORMAT: " + scanFormat); contentTxt.setText("CONTENT: " + scanContent); } @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); } }