Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.alsafeer.xpressions.fragment;
- import android.graphics.Typeface;
- import android.hardware.Camera;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.os.Handler;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentManager;
- import android.support.v4.app.FragmentTransaction;
- import android.view.KeyEvent;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.WindowManager;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.RelativeLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.alsafeer.xpressions.AnalyticsSampleApp;
- import com.alsafeer.xpressions.CameraPreview;
- import com.alsafeer.xpressions.JsonParser;
- import com.alsafeer.xpressions.R;
- import com.google.android.gms.analytics.GoogleAnalytics;
- import com.google.android.gms.analytics.HitBuilders;
- import com.google.android.gms.analytics.Tracker;
- import net.sourceforge.zbar.Config;
- import net.sourceforge.zbar.Image;
- import net.sourceforge.zbar.ImageScanner;
- import net.sourceforge.zbar.Symbol;
- import net.sourceforge.zbar.SymbolSet;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- public class rewards extends Fragment {
- private Camera mCamera;
- private CameraPreview mPreview;
- private Handler autoFocusHandler;
- private String Name;
- private String Email;
- private View view;
- private String Mob;
- private String Points;
- private String result;
- private RelativeLayout preview;
- TextView scanText;
- Button scanButton;
- ImageScanner scanner;
- private boolean barcodeScanned = false;
- private boolean previewing = true;
- static {
- System.loadLibrary("iconv");
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- setHasOptionsMenu(true);
- view = inflater.inflate(R.layout.activity_rewards,
- container, false);
- view.setFocusableInTouchMode(true);
- view.requestFocus();
- Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
- AnalyticsSampleApp.TrackerName.APP_TRACKER);
- GoogleAnalytics.getInstance(getActivity()).setLocalDispatchPeriod(1);
- t.setScreenName("Rewards Barcode Reader");
- t.send(new HitBuilders.AppViewBuilder().build());
- Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/font.ttf");
- Button next= (Button) view.findViewById(R.id.next);
- next.setTypeface(font);
- scanText = (EditText)view.findViewById(R.id.editText6);
- scanText.setTypeface(font);
- mCamera = getCameraInstance();
- getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|
- WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
- next.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if(!scanText.getText().toString().equals(""))
- {
- new AsyncTaskParseJson().execute();
- }
- else
- {
- Toast.makeText(getActivity(),"Please enter the number or scan the barcode...", Toast.LENGTH_LONG).show();
- }
- }
- });
- scanText.setOnKeyListener(new View.OnKeyListener() {
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (event.getAction() == KeyEvent.ACTION_DOWN) {
- if ((keyCode == KeyEvent.KEYCODE_BACK)) {
- releaseCamera();
- getFragmentManager().beginTransaction().replace(R.id.content_frame, new FirstFragment(), "first").commit();
- return true;
- }
- }
- return false;
- }
- });
- view.setOnKeyListener(new View.OnKeyListener() {
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (event.getAction() == KeyEvent.ACTION_DOWN) {
- if ((keyCode == KeyEvent.KEYCODE_BACK)) {
- releaseCamera();
- getFragmentManager().beginTransaction().replace(R.id.content_frame, new FirstFragment(), "first").commit();
- return true;
- }
- }
- return true;
- }
- });
- autoFocusHandler = new Handler();
- /* Instance barcode scanner */
- scanner = new ImageScanner();
- scanner.setConfig(0, Config.X_DENSITY, 3);
- scanner.setConfig(0, Config.Y_DENSITY, 3);
- mPreview = new CameraPreview(getActivity(), mCamera, previewCb, autoFocusCB);
- preview = (RelativeLayout) view.findViewById(R.id.cameraPreview);
- preview.addView(mPreview);
- scanButton = (Button)view.findViewById(R.id.button6);
- scanButton.setTypeface(font);
- scanButton.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- if (barcodeScanned) {
- barcodeScanned = false;
- mCamera.setPreviewCallback(previewCb);
- mCamera.startPreview();
- previewing = true;
- mCamera.autoFocus(autoFocusCB);
- }
- }
- });
- return view;
- }
- @Override
- public void onResume() {
- super.onResume();
- if(mCamera==null) {
- mCamera=getCameraInstance();
- mPreview = new CameraPreview(getActivity(), mCamera, previewCb, autoFocusCB);
- preview = (RelativeLayout) view.findViewById(R.id.cameraPreview);
- preview.addView(mPreview);
- mCamera.setPreviewCallback(previewCb);
- mCamera.startPreview();
- previewing = true;
- mCamera.autoFocus(autoFocusCB);
- }
- }
- @Override
- public void onPause() {
- super.onPause();
- }
- @Override
- public void onStop() {
- super.onStop();
- releaseCamera();
- }
- /** A safe way to get an instance of the Camera object. */
- public static Camera getCameraInstance(){
- Camera c = null;
- try {
- c = Camera.open();
- } catch (Exception e){
- }
- return c;
- }
- public void releaseCamera() {
- if (mCamera != null) {
- previewing = false;
- mCamera.setPreviewCallback(null);
- mCamera.release();
- mCamera = null;
- }
- }
- private Runnable doAutoFocus = new Runnable() {
- public void run() {
- if (previewing)
- mCamera.autoFocus(autoFocusCB);
- }
- };
- Camera.PreviewCallback previewCb = new Camera.PreviewCallback() {
- public void onPreviewFrame(byte[] data, Camera camera) {
- Camera.Parameters parameters = camera.getParameters();
- Camera.Size size = parameters.getPreviewSize();
- Image barcode = new Image(size.width, size.height, "Y800");
- barcode.setData(data);
- int result = scanner.scanImage(barcode);
- if (result != 0) {
- previewing = false;
- mCamera.setPreviewCallback(null);
- mCamera.stopPreview();
- SymbolSet syms = scanner.getResults();
- for (Symbol sym : syms) {
- scanText.setText(sym.getData());
- barcodeScanned = true;
- }
- }
- }
- };
- // Mimic continuous auto-focusing
- Camera.AutoFocusCallback autoFocusCB = new Camera.AutoFocusCallback() {
- public void onAutoFocus(boolean success, Camera camera) {
- autoFocusHandler.postDelayed(doAutoFocus, 1000);
- }
- };
- public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
- JSONArray dataJsonArr = null;
- @Override
- protected void onPreExecute() {}
- @Override
- protected String doInBackground(String... arg0) {
- try {
- // instantiate our json parser
- JsonParser jParser = new JsonParser();
- // get json string from url
- JSONObject json = jParser.getJSONFromUrl("http://www.safeerplus.ae/ncno="+scanText.getText().toString());
- // get the array of users
- dataJsonArr = json.getJSONArray("msg");
- // loop through all users
- JSONObject c = dataJsonArr.getJSONObject(0);
- // Storing each json item in variable
- Name = c.getString("name");
- Mob = c.getString("mob");
- Email = c.getString("email");
- Points = c.getString("points");
- if(Name.equals("")||Mob.equals("")||Email.equals("")||Points.equals(""))
- {
- }
- else {
- Bundle args = new Bundle();
- args.putString("code", scanText.getText().toString());
- args.putString("name1", Name);
- args.putString("mob1", Mob);
- args.putString("email1", Email);
- args.putString("points1", Points);
- releaseCamera();
- Fragment fr=new reward_details();
- FragmentManager fm = getFragmentManager();
- FragmentTransaction ft = fm.beginTransaction();
- fr.setArguments(args);
- ft.replace(R.id.content_frame, fr);
- ft.commit();
- }
- } catch (JSONException e) {
- getActivity().runOnUiThread(new Runnable() {
- public void run() {
- Toast.makeText(getActivity(), "Please use a valid card!", Toast.LENGTH_LONG).show();
- }
- });
- }
- return null;
- }
- @Override
- protected void onPostExecute(String strFromDoInBg) {}
- }
- }
- package com.alsafeer.xpressions;
- import android.content.Context;
- import android.hardware.Camera;
- import android.hardware.Camera.AutoFocusCallback;
- import android.hardware.Camera.PreviewCallback;
- import android.util.DisplayMetrics;
- import android.util.Log;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
- private SurfaceHolder mHolder;
- private Camera mCamera;
- private PreviewCallback previewCallback;
- private AutoFocusCallback autoFocusCallback;
- public CameraPreview(Context context, Camera camera,
- PreviewCallback previewCb,
- AutoFocusCallback autoFocusCb) {
- super(context);
- mCamera = camera;
- previewCallback = previewCb;
- autoFocusCallback = autoFocusCb;
- /*
- * Set camera to continuous focus if supported, otherwise use
- * software auto-focus. Only works for API level >=9.
- */
- /*
- Camera.Parameters parameters = camera.getParameters();
- for (String f : parameters.getSupportedFocusModes()) {
- if (f == Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) {
- mCamera.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
- autoFocusCallback = null;
- break;
- }
- }
- */
- // Install a SurfaceHolder.Callback so we get notified when the
- // underlying surface is created and destroyed.
- mHolder = getHolder();
- mHolder.addCallback(this);
- // deprecated setting, but required on Android versions prior to 3.0
- mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- }
- public void surfaceCreated(SurfaceHolder holder) {
- // The Surface has been created, now tell the camera where to draw the preview.
- try {
- // open the camera
- mCamera = Camera.open();
- } catch (RuntimeException e) {
- // check for exceptions
- System.err.println(e);
- return;
- }
- Camera.Parameters param;
- param = mCamera.getParameters();
- // modify parameter
- param.setPreviewSize(200, 300);
- mCamera.setParameters(param);
- try {
- // The Surface has been created, now tell the camera where to draw
- // the preview.
- mCamera.setPreviewDisplay(holder);
- mCamera.startPreview();
- } catch (Exception e) {
- // check for exceptions
- System.err.println(e);
- return;
- }
- }
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); //Snap to width
- }
- public void surfaceDestroyed(SurfaceHolder holder) {
- }
- public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
- Camera.Parameters parameters = mCamera.getParameters();
- final DisplayMetrics dm = this.getResources().getDisplayMetrics();
- //getBestPreviewSize returns the best preview size, don't worry
- //but some devices do not return one for all camera matching the aspect ratio
- /*
- * If your preview can change or rotate, take care of those events here.
- * Make sure to stop the preview before resizing or reformatting it.
- */
- if (mHolder.getSurface() == null){
- // preview surface does not exist
- return;
- }
- // stop preview before making changes
- try {
- mCamera.stopPreview();
- } catch (Exception e){
- // ignore: tried to stop a non-existent preview
- }
- try {
- // Hard code camera surface rotation 90 degs to match Activity view in portrait
- mCamera.setDisplayOrientation(90);
- mCamera.setPreviewDisplay(mHolder);
- mCamera.setPreviewCallback(previewCallback);
- mCamera.startPreview();
- mCamera.autoFocus(autoFocusCallback);
- } catch (Exception e){
- Log.d("DBG", "Error starting camera preview: " + e.getMessage());
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:padding="16dp"
- android:background="#e7e7e9">
- <RelativeLayout
- android:id="@+id/cameraPreview"
- android:layout_width="300dp"
- android:layout_height="300dp"
- android:layout_weight="1"
- android:gravity="clip_horizontal"
- android:layout_below="@+id/editText6"
- android:layout_centerHorizontal="true">
- </RelativeLayout>
- <Button
- android:id="@+id/next"
- android:text="View points"
- android:layout_width="120dp"
- android:layout_height="30sp"
- android:layout_gravity="center"
- android:background="@drawable/loginbutton"
- android:textSize="12sp"
- android:layout_alignTop="@+id/button6"
- android:layout_alignParentRight="true"
- android:layout_alignParentEnd="true" />
- <Button
- android:id="@+id/button6"
- android:text="Rescan"
- android:layout_width="120dp"
- android:layout_height="30sp"
- android:layout_gravity="center"
- android:background="@drawable/loginbutton"
- android:textSize="12sp"
- android:layout_below="@+id/cameraPreview"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_marginTop="30dp" />
- <EditText
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:inputType="number"
- android:ems="10"
- android:id="@+id/editText6"
- android:background="#d1d2d4"
- android:textSize="15sp"
- android:padding="5dp"
- android:textColor="#000000"
- android:hint="Enter or Scan the Barcode"
- android:textColorHint="#4a4f5a"
- android:layout_alignParentTop="true"
- android:layout_alignLeft="@+id/cameraPreview"
- android:layout_alignStart="@+id/cameraPreview"
- android:layout_alignRight="@+id/cameraPreview"
- android:layout_alignEnd="@+id/cameraPreview" />
- </RelativeLayout>
- onResume()
Add Comment
Please, Sign In to add comment