Browse Source

qr code halfway done

old
Efe Aydın 6 years ago
committed by Yiğit Çolakoğlu
parent
commit
547f6eeb73
4 changed files with 66 additions and 56 deletions
  1. +26
    -47
      MyCity/app/src/main/java/gq/yigit/mycity/QRFragment.java
  2. +31
    -0
      MyCity/app/src/main/java/gq/yigit/mycity/tools/QRCodeGenerator.java
  3. +9
    -8
      MyCity/app/src/main/res/layout/fragment_qr.xml
  4. +0
    -1
      client_side/interface/UserData/socket.io

+ 26
- 47
MyCity/app/src/main/java/gq/yigit/mycity/QRFragment.java View File

@ -1,73 +1,62 @@
package gq.yigit.mycity;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.RequiresPermission;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.google.zxing.WriterException;
import org.json.JSONException;
import gq.yigit.mycity.tools.QRCodeGenerator;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* {@link QRFragment.OnFragmentInteractionListener} interface
* to handle interaction events.
* Use the {@link QRFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class QRFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
private OnFragmentInteractionListener mListener;
private ImageView qr_view;
private Bitmap qr_img;
public QRFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment QRFragment.
*/
// TODO: Rename and change types and number of parameters
public static QRFragment newInstance(String param1, String param2) {
QRFragment fragment = new QRFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_qr, container, false);
View rootView = inflater.inflate(R.layout.fragment_qr, container, false);
qr_view = rootView.findViewById(R.id.qr_image);
try {
qr_img = QRCodeGenerator.Generate(MainActivity.userData.getString("id"),429,429);
qr_view.setImageBitmap(qr_img);
}catch(JSONException e){
Log.e("[ERROR]","JSON error occured while generating qr code!");
}catch (WriterException e){
Log.e("[ERROR]","An error occured while generating qr code!");
}
return rootView;
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
@ -91,16 +80,6 @@ public class QRFragment extends Fragment {
mListener = null;
}
/**
* This interface must be implemented by activities that contain this
* fragment to allow an interaction in this fragment to be communicated
* to the activity and potentially other fragments contained in that
* activity.
* <p>
* See the Android Training lesson <a href=
* "http://developer.android.com/training/basics/fragments/communicating.html"
* >Communicating with Other Fragments</a> for more information.
*/
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);


+ 31
- 0
MyCity/app/src/main/java/gq/yigit/mycity/tools/QRCodeGenerator.java View File

@ -1,4 +1,35 @@
package gq.yigit.mycity.tools;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import java.util.Arrays;
public class QRCodeGenerator {
public static Bitmap Generate(String data, int height,int width) throws WriterException {
MultiFormatWriter writer = new MultiFormatWriter();
String finalData = Uri.encode(data);
// Use 1 as the height of the matrix as this is a 1D Barcode.
BitMatrix bm = writer.encode(finalData, BarcodeFormat.CODE_128, width, 1);
int bmWidth = bm.getWidth();
Bitmap imageBitmap = Bitmap.createBitmap(bmWidth, height, Bitmap.Config.ARGB_8888);
for (int i = 0; i < bmWidth; i++) {
// Paint columns of width 1
int[] column = new int[height];
Arrays.fill(column, bm.get(i, 0) ? Color.BLACK : Color.WHITE);
imageBitmap.setPixels(column, 0, 1, i, 0, 1, height);
}
return imageBitmap;
}
}

+ 9
- 8
MyCity/app/src/main/res/layout/fragment_qr.xml View File

@ -1,14 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".QRFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment"/>
tools:context=".QRFragment"
android:layout_marginTop="@dimen/fragment_margin">
<ImageView
android:id="@+id/qr_image"
android:layout_width="match_parent"
android:layout_height="429dp"
android:src="@drawable/app_icon" />
</FrameLayout>

+ 0
- 1
client_side/interface/UserData/socket.io

@ -1 +0,0 @@
Subproject commit 3020e455ab9a81341722e6c1e6cd8ef6b4b0ea28

Loading…
Cancel
Save