Guest User

Untitled

a guest
Jan 16th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.05 KB | None | 0 0
  1. package com.alsafeer.xpressions.fragment;
  2.  
  3. import android.graphics.Typeface;
  4. import android.hardware.Camera;
  5. import android.os.AsyncTask;
  6. import android.os.Bundle;
  7. import android.os.Handler;
  8. import android.support.v4.app.Fragment;
  9. import android.support.v4.app.FragmentManager;
  10. import android.support.v4.app.FragmentTransaction;
  11. import android.view.KeyEvent;
  12. import android.view.LayoutInflater;
  13. import android.view.View;
  14. import android.view.ViewGroup;
  15. import android.view.WindowManager;
  16. import android.widget.Button;
  17. import android.widget.EditText;
  18. import android.widget.RelativeLayout;
  19. import android.widget.TextView;
  20. import android.widget.Toast;
  21.  
  22. import com.alsafeer.xpressions.AnalyticsSampleApp;
  23. import com.alsafeer.xpressions.CameraPreview;
  24. import com.alsafeer.xpressions.JsonParser;
  25. import com.alsafeer.xpressions.R;
  26. import com.google.android.gms.analytics.GoogleAnalytics;
  27. import com.google.android.gms.analytics.HitBuilders;
  28. import com.google.android.gms.analytics.Tracker;
  29.  
  30. import net.sourceforge.zbar.Config;
  31. import net.sourceforge.zbar.Image;
  32. import net.sourceforge.zbar.ImageScanner;
  33. import net.sourceforge.zbar.Symbol;
  34. import net.sourceforge.zbar.SymbolSet;
  35.  
  36. import org.json.JSONArray;
  37. import org.json.JSONException;
  38. import org.json.JSONObject;
  39.  
  40.  
  41. public class rewards extends Fragment {
  42. private Camera mCamera;
  43. private CameraPreview mPreview;
  44. private Handler autoFocusHandler;
  45. private String Name;
  46. private String Email;
  47. private View view;
  48. private String Mob;
  49. private String Points;
  50. private String result;
  51. private RelativeLayout preview;
  52.  
  53. TextView scanText;
  54. Button scanButton;
  55.  
  56. ImageScanner scanner;
  57.  
  58. private boolean barcodeScanned = false;
  59. private boolean previewing = true;
  60.  
  61. static {
  62. System.loadLibrary("iconv");
  63. }
  64.  
  65.  
  66. @Override
  67. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  68. Bundle savedInstanceState) {
  69. setHasOptionsMenu(true);
  70. view = inflater.inflate(R.layout.activity_rewards,
  71. container, false);
  72. view.setFocusableInTouchMode(true);
  73. view.requestFocus();
  74. Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
  75. AnalyticsSampleApp.TrackerName.APP_TRACKER);
  76. GoogleAnalytics.getInstance(getActivity()).setLocalDispatchPeriod(1);
  77. t.setScreenName("Rewards Barcode Reader");
  78. t.send(new HitBuilders.AppViewBuilder().build());
  79. Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/font.ttf");
  80. Button next= (Button) view.findViewById(R.id.next);
  81. next.setTypeface(font);
  82. scanText = (EditText)view.findViewById(R.id.editText6);
  83. scanText.setTypeface(font);
  84. mCamera = getCameraInstance();
  85. getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|
  86. WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
  87. next.setOnClickListener(new View.OnClickListener() {
  88. @Override
  89. public void onClick(View v) {
  90. if(!scanText.getText().toString().equals(""))
  91. {
  92. new AsyncTaskParseJson().execute();
  93. }
  94. else
  95. {
  96. Toast.makeText(getActivity(),"Please enter the number or scan the barcode...", Toast.LENGTH_LONG).show();
  97. }
  98. }
  99. });
  100. scanText.setOnKeyListener(new View.OnKeyListener() {
  101. @Override
  102. public boolean onKey(View v, int keyCode, KeyEvent event) {
  103. if (event.getAction() == KeyEvent.ACTION_DOWN) {
  104. if ((keyCode == KeyEvent.KEYCODE_BACK)) {
  105. releaseCamera();
  106. getFragmentManager().beginTransaction().replace(R.id.content_frame, new FirstFragment(), "first").commit();
  107. return true;
  108. }
  109.  
  110. }
  111. return false;
  112. }
  113. });
  114. view.setOnKeyListener(new View.OnKeyListener() {
  115. @Override
  116. public boolean onKey(View v, int keyCode, KeyEvent event) {
  117. if (event.getAction() == KeyEvent.ACTION_DOWN) {
  118. if ((keyCode == KeyEvent.KEYCODE_BACK)) {
  119. releaseCamera();
  120. getFragmentManager().beginTransaction().replace(R.id.content_frame, new FirstFragment(), "first").commit();
  121. return true;
  122. }
  123. }
  124. return true;
  125. }
  126. });
  127.  
  128. autoFocusHandler = new Handler();
  129.  
  130.  
  131. /* Instance barcode scanner */
  132. scanner = new ImageScanner();
  133. scanner.setConfig(0, Config.X_DENSITY, 3);
  134. scanner.setConfig(0, Config.Y_DENSITY, 3);
  135.  
  136. mPreview = new CameraPreview(getActivity(), mCamera, previewCb, autoFocusCB);
  137. preview = (RelativeLayout) view.findViewById(R.id.cameraPreview);
  138. preview.addView(mPreview);
  139. scanButton = (Button)view.findViewById(R.id.button6);
  140. scanButton.setTypeface(font);
  141. scanButton.setOnClickListener(new View.OnClickListener() {
  142. public void onClick(View v) {
  143. if (barcodeScanned) {
  144. barcodeScanned = false;
  145. mCamera.setPreviewCallback(previewCb);
  146. mCamera.startPreview();
  147. previewing = true;
  148. mCamera.autoFocus(autoFocusCB);
  149. }
  150. }
  151. });
  152. return view;
  153. }
  154.  
  155. @Override
  156. public void onResume() {
  157. super.onResume();
  158. if(mCamera==null) {
  159. mCamera=getCameraInstance();
  160. mPreview = new CameraPreview(getActivity(), mCamera, previewCb, autoFocusCB);
  161. preview = (RelativeLayout) view.findViewById(R.id.cameraPreview);
  162. preview.addView(mPreview);
  163. mCamera.setPreviewCallback(previewCb);
  164. mCamera.startPreview();
  165. previewing = true;
  166. mCamera.autoFocus(autoFocusCB);
  167. }
  168.  
  169. }
  170.  
  171. @Override
  172. public void onPause() {
  173. super.onPause();
  174.  
  175. }
  176.  
  177. @Override
  178. public void onStop() {
  179. super.onStop();
  180. releaseCamera();
  181. }
  182.  
  183. /** A safe way to get an instance of the Camera object. */
  184. public static Camera getCameraInstance(){
  185. Camera c = null;
  186. try {
  187. c = Camera.open();
  188. } catch (Exception e){
  189. }
  190. return c;
  191. }
  192.  
  193. public void releaseCamera() {
  194. if (mCamera != null) {
  195. previewing = false;
  196. mCamera.setPreviewCallback(null);
  197. mCamera.release();
  198. mCamera = null;
  199. }
  200. }
  201.  
  202. private Runnable doAutoFocus = new Runnable() {
  203. public void run() {
  204. if (previewing)
  205. mCamera.autoFocus(autoFocusCB);
  206. }
  207. };
  208.  
  209. Camera.PreviewCallback previewCb = new Camera.PreviewCallback() {
  210. public void onPreviewFrame(byte[] data, Camera camera) {
  211. Camera.Parameters parameters = camera.getParameters();
  212. Camera.Size size = parameters.getPreviewSize();
  213.  
  214. Image barcode = new Image(size.width, size.height, "Y800");
  215. barcode.setData(data);
  216.  
  217. int result = scanner.scanImage(barcode);
  218.  
  219. if (result != 0) {
  220. previewing = false;
  221. mCamera.setPreviewCallback(null);
  222. mCamera.stopPreview();
  223.  
  224. SymbolSet syms = scanner.getResults();
  225. for (Symbol sym : syms) {
  226. scanText.setText(sym.getData());
  227. barcodeScanned = true;
  228. }
  229. }
  230. }
  231. };
  232.  
  233. // Mimic continuous auto-focusing
  234. Camera.AutoFocusCallback autoFocusCB = new Camera.AutoFocusCallback() {
  235. public void onAutoFocus(boolean success, Camera camera) {
  236. autoFocusHandler.postDelayed(doAutoFocus, 1000);
  237. }
  238. };
  239. public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
  240. JSONArray dataJsonArr = null;
  241.  
  242. @Override
  243. protected void onPreExecute() {}
  244.  
  245. @Override
  246. protected String doInBackground(String... arg0) {
  247.  
  248. try {
  249.  
  250. // instantiate our json parser
  251. JsonParser jParser = new JsonParser();
  252.  
  253. // get json string from url
  254. JSONObject json = jParser.getJSONFromUrl("http://www.safeerplus.ae/ncno="+scanText.getText().toString());
  255.  
  256. // get the array of users
  257. dataJsonArr = json.getJSONArray("msg");
  258.  
  259. // loop through all users
  260.  
  261. JSONObject c = dataJsonArr.getJSONObject(0);
  262.  
  263. // Storing each json item in variable
  264. Name = c.getString("name");
  265. Mob = c.getString("mob");
  266. Email = c.getString("email");
  267. Points = c.getString("points");
  268. if(Name.equals("")||Mob.equals("")||Email.equals("")||Points.equals(""))
  269. {
  270.  
  271. }
  272. else {
  273. Bundle args = new Bundle();
  274. args.putString("code", scanText.getText().toString());
  275. args.putString("name1", Name);
  276. args.putString("mob1", Mob);
  277. args.putString("email1", Email);
  278. args.putString("points1", Points);
  279. releaseCamera();
  280. Fragment fr=new reward_details();
  281. FragmentManager fm = getFragmentManager();
  282. FragmentTransaction ft = fm.beginTransaction();
  283. fr.setArguments(args);
  284. ft.replace(R.id.content_frame, fr);
  285. ft.commit();
  286. }
  287.  
  288.  
  289.  
  290. } catch (JSONException e) {
  291. getActivity().runOnUiThread(new Runnable() {
  292. public void run() {
  293.  
  294. Toast.makeText(getActivity(), "Please use a valid card!", Toast.LENGTH_LONG).show();
  295. }
  296. });
  297.  
  298. }
  299. return null;
  300. }
  301.  
  302.  
  303. @Override
  304. protected void onPostExecute(String strFromDoInBg) {}
  305. }
  306. }
  307.  
  308. package com.alsafeer.xpressions;
  309.  
  310. import android.content.Context;
  311. import android.hardware.Camera;
  312. import android.hardware.Camera.AutoFocusCallback;
  313. import android.hardware.Camera.PreviewCallback;
  314. import android.util.DisplayMetrics;
  315. import android.util.Log;
  316. import android.view.SurfaceHolder;
  317. import android.view.SurfaceView;
  318.  
  319.  
  320. public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
  321. private SurfaceHolder mHolder;
  322. private Camera mCamera;
  323. private PreviewCallback previewCallback;
  324. private AutoFocusCallback autoFocusCallback;
  325.  
  326. public CameraPreview(Context context, Camera camera,
  327. PreviewCallback previewCb,
  328. AutoFocusCallback autoFocusCb) {
  329. super(context);
  330. mCamera = camera;
  331. previewCallback = previewCb;
  332. autoFocusCallback = autoFocusCb;
  333.  
  334. /*
  335. * Set camera to continuous focus if supported, otherwise use
  336. * software auto-focus. Only works for API level >=9.
  337. */
  338. /*
  339. Camera.Parameters parameters = camera.getParameters();
  340. for (String f : parameters.getSupportedFocusModes()) {
  341. if (f == Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) {
  342. mCamera.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
  343. autoFocusCallback = null;
  344. break;
  345. }
  346. }
  347. */
  348.  
  349. // Install a SurfaceHolder.Callback so we get notified when the
  350. // underlying surface is created and destroyed.
  351. mHolder = getHolder();
  352. mHolder.addCallback(this);
  353.  
  354. // deprecated setting, but required on Android versions prior to 3.0
  355. mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  356. }
  357.  
  358. public void surfaceCreated(SurfaceHolder holder) {
  359. // The Surface has been created, now tell the camera where to draw the preview.
  360. try {
  361. // open the camera
  362. mCamera = Camera.open();
  363. } catch (RuntimeException e) {
  364. // check for exceptions
  365. System.err.println(e);
  366. return;
  367. }
  368. Camera.Parameters param;
  369. param = mCamera.getParameters();
  370.  
  371. // modify parameter
  372. param.setPreviewSize(200, 300);
  373. mCamera.setParameters(param);
  374. try {
  375. // The Surface has been created, now tell the camera where to draw
  376. // the preview.
  377. mCamera.setPreviewDisplay(holder);
  378. mCamera.startPreview();
  379. } catch (Exception e) {
  380. // check for exceptions
  381. System.err.println(e);
  382. return;
  383. }
  384. }
  385. @Override
  386. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  387. super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  388. setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); //Snap to width
  389. }
  390.  
  391. public void surfaceDestroyed(SurfaceHolder holder) {
  392.  
  393. }
  394.  
  395. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
  396. Camera.Parameters parameters = mCamera.getParameters();
  397. final DisplayMetrics dm = this.getResources().getDisplayMetrics();
  398. //getBestPreviewSize returns the best preview size, don't worry
  399. //but some devices do not return one for all camera matching the aspect ratio
  400.  
  401. /*
  402. * If your preview can change or rotate, take care of those events here.
  403. * Make sure to stop the preview before resizing or reformatting it.
  404. */
  405. if (mHolder.getSurface() == null){
  406. // preview surface does not exist
  407. return;
  408. }
  409.  
  410. // stop preview before making changes
  411. try {
  412. mCamera.stopPreview();
  413. } catch (Exception e){
  414. // ignore: tried to stop a non-existent preview
  415. }
  416.  
  417. try {
  418. // Hard code camera surface rotation 90 degs to match Activity view in portrait
  419. mCamera.setDisplayOrientation(90);
  420.  
  421. mCamera.setPreviewDisplay(mHolder);
  422. mCamera.setPreviewCallback(previewCallback);
  423. mCamera.startPreview();
  424. mCamera.autoFocus(autoFocusCallback);
  425. } catch (Exception e){
  426. Log.d("DBG", "Error starting camera preview: " + e.getMessage());
  427. }
  428. }
  429. }
  430.  
  431. <?xml version="1.0" encoding="utf-8"?>
  432. <RelativeLayout
  433. xmlns:android="http://schemas.android.com/apk/res/android"
  434. android:orientation="vertical"
  435. android:layout_width="match_parent"
  436. android:layout_height="match_parent"
  437. android:padding="16dp"
  438. android:background="#e7e7e9">
  439.  
  440. <RelativeLayout
  441. android:id="@+id/cameraPreview"
  442. android:layout_width="300dp"
  443. android:layout_height="300dp"
  444. android:layout_weight="1"
  445. android:gravity="clip_horizontal"
  446. android:layout_below="@+id/editText6"
  447. android:layout_centerHorizontal="true">
  448.  
  449. </RelativeLayout>
  450.  
  451. <Button
  452. android:id="@+id/next"
  453. android:text="View points"
  454. android:layout_width="120dp"
  455. android:layout_height="30sp"
  456. android:layout_gravity="center"
  457. android:background="@drawable/loginbutton"
  458. android:textSize="12sp"
  459. android:layout_alignTop="@+id/button6"
  460. android:layout_alignParentRight="true"
  461. android:layout_alignParentEnd="true" />
  462.  
  463. <Button
  464. android:id="@+id/button6"
  465. android:text="Rescan"
  466. android:layout_width="120dp"
  467. android:layout_height="30sp"
  468. android:layout_gravity="center"
  469. android:background="@drawable/loginbutton"
  470. android:textSize="12sp"
  471. android:layout_below="@+id/cameraPreview"
  472. android:layout_alignParentLeft="true"
  473. android:layout_alignParentStart="true"
  474. android:layout_marginTop="30dp" />
  475.  
  476. <EditText
  477. android:layout_width="match_parent"
  478. android:layout_height="wrap_content"
  479. android:inputType="number"
  480. android:ems="10"
  481. android:id="@+id/editText6"
  482. android:background="#d1d2d4"
  483. android:textSize="15sp"
  484. android:padding="5dp"
  485. android:textColor="#000000"
  486. android:hint="Enter or Scan the Barcode"
  487. android:textColorHint="#4a4f5a"
  488. android:layout_alignParentTop="true"
  489. android:layout_alignLeft="@+id/cameraPreview"
  490. android:layout_alignStart="@+id/cameraPreview"
  491. android:layout_alignRight="@+id/cameraPreview"
  492. android:layout_alignEnd="@+id/cameraPreview" />
  493.  
  494. </RelativeLayout>
  495.  
  496. onResume()
Add Comment
Please, Sign In to add comment