diff --git a/app/build.gradle b/app/build.gradle index eead6f3cad0175698c24d8709da70a46808f9b38..171fb68c3d507cfc6e2893877be2b80a4aa10dce 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,4 +31,6 @@ dependencies { annotationProcessor "android.arch.persistence.room:compiler:$room_version" implementation 'com.android.support:recyclerview-v7:28.0.0' api 'com.github.kenglxn.QRGen:android:2.5.0' + implementation 'com.google.android.gms:play-services-vision:11.8.0' + implementation 'com.google.code.gson:gson:2.8.5' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 829a57bfe0ae62cebcbd6ad1150c6b95b932e43a..bddd27cc5001aecc6c75a6317636e007cf451fc5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,9 +40,7 @@ android:name="com.google.android.gms.vision.DEPENDENCIES" android:value="barcode" /> - <activity android:name=".qr.PictureBarcodeActivity" /> <activity android:name=".qr.ScannedBarcodeActivity" /> - <activity android:name=".qr.QRReaderActivity" /> <activity android:name=".AllEventActivity"></activity> </application> diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/AllEventActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/AllEventActivity.java index b15c44145d4ea4628c33df683ec55d4d66705425..666ba48a62c54ee3f8256955da570b86de87dbb7 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/AllEventActivity.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/AllEventActivity.java @@ -1,8 +1,6 @@ package com.ireallydontcare.viet.posseidon; -import android.content.Intent; import android.os.AsyncTask; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -10,7 +8,6 @@ import android.view.Menu; import android.view.MenuItem; import com.ireallydontcare.viet.posseidon.model.Event; -import com.ireallydontcare.viet.posseidon.qr.QRActivity; import java.util.List; diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java index 5aa3ea861341b3f4994d3da7ca2c6768a7ac5dfa..8a0a5d162aae8647fa471ed5eee938f9d69382d4 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java @@ -25,7 +25,6 @@ import com.ireallydontcare.viet.posseidon.model.Event; import com.ireallydontcare.viet.posseidon.model.Subject; import com.ireallydontcare.viet.posseidon.qr.ScannedBarcodeActivity; -import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity @@ -158,24 +157,6 @@ public class MainActivity extends AppCompatActivity } } - public void importQRJsonDataasd(){ - Subject newSubject; - subjectJsonObject jsonObject; - try{ - String toParse = getIntent().getExtras().getString(ScannedBarcodeActivity.QR_DATA); - if(!toParse.isEmpty()) { - Gson gson = new GsonBuilder().create(); - jsonObject = gson.fromJson(toParse,subjectJsonObject.class); - newSubject = jsonObject.getSubject(); - database.SubjectDao().insert(newSubject); - Long id = subjectAdapter.getall().get(subjectAdapter.getall().size()-1).id; - importEvents(jsonObject.events, id); - - } - - }catch (Exception e){ - } - } private void importQRJsonData(){ new AsyncTask<Void, Void, Subject>() { diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java index 1aa777b03d166d823e3308be064bc22faad849fa..c272d93e65746833ec766cc4aac861870e80b87d 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java @@ -17,7 +17,6 @@ import android.widget.TextView; import com.google.gson.Gson; import com.ireallydontcare.viet.posseidon.adapter.EventAdapter; import com.ireallydontcare.viet.posseidon.data.EventDatabase; -import com.ireallydontcare.viet.posseidon.data.SubjectDatabase; import com.ireallydontcare.viet.posseidon.fragments.NewDialogEventFragment; import com.ireallydontcare.viet.posseidon.json.eventJsonObject; import com.ireallydontcare.viet.posseidon.json.subjectJsonObject; @@ -106,17 +105,18 @@ public class SubjectActivity extends AppCompatActivity @Override public void onEventItemCreated(final Event eventitem) { - new AsyncTask<Void, Void, Event>() { + new AsyncTask<Void, Void, List<Event>>() { @Override - protected Event doInBackground(Void... voids) { + protected List<Event> doInBackground(Void... voids) { eventDatabase.EventDao().insert(eventitem); - return eventitem; + List<Event> events = eventDatabase.EventDao().getAllBySubject(subjectId); + return events; } @Override - protected void onPostExecute(Event event) { - eventAdapter.addItem(event); + protected void onPostExecute(List<Event> events) { + eventAdapter.update(events); } }.execute(); }; diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/fragments/NewDialogEventFragment.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/fragments/NewDialogEventFragment.java index 76c09d56a85d772952f700e84ee0f0c4ccb90320..0d3026d0bde464cfb36f1ddd900190732769e0d7 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/fragments/NewDialogEventFragment.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/fragments/NewDialogEventFragment.java @@ -9,10 +9,8 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v7.app.AlertDialog; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -23,7 +21,6 @@ import android.widget.TimePicker; import com.ireallydontcare.viet.posseidon.R; import com.ireallydontcare.viet.posseidon.SubjectActivity; import com.ireallydontcare.viet.posseidon.model.Event; -import com.ireallydontcare.viet.posseidon.model.Subject; import java.text.DateFormat; diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/fragments/NewDialogSubjectFragment.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/fragments/NewDialogSubjectFragment.java index 89a3f517f02f29cdddf491b81299187fb079d394..ca03ae3fe4f07a7628836442cd10bae2994d2ddd 100644 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/fragments/NewDialogSubjectFragment.java +++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/fragments/NewDialogSubjectFragment.java @@ -74,7 +74,11 @@ public class NewDialogSubjectFragment extends DialogFragment { subject.name = nameEditText.getText().toString(); subject.code = codeEditText.getText().toString(); subject.description = descriptionEditText.getText().toString(); - subject.credit = Integer.parseInt(creditEditText.getText().toString()); + if(creditEditText.getText().toString().equals("")){ + subject.credit = 0; + }else { + subject.credit = Integer.parseInt(creditEditText.getText().toString()); + } return subject; } diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/qr/PictureBarcodeActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/qr/PictureBarcodeActivity.java deleted file mode 100644 index ae74870a7d61b41b1026511a02bdec280a868b6a..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/qr/PictureBarcodeActivity.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.ireallydontcare.viet.posseidon.qr; - - -import android.Manifest; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.net.Uri; -import android.os.Bundle; -import android.os.Environment; -import android.provider.MediaStore; -import android.support.annotation.NonNull; -import android.support.v4.BuildConfig; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.FileProvider; -import android.support.v7.app.AppCompatActivity; -import android.util.Log; -import android.util.SparseArray; -import android.view.View; -import android.widget.Button; -import android.widget.TextView; -import android.widget.Toast; - -import com.google.android.gms.vision.Frame; -import com.google.android.gms.vision.barcode.Barcode; -import com.google.android.gms.vision.barcode.BarcodeDetector; -import com.ireallydontcare.viet.posseidon.R; - -import java.io.File; -import java.io.FileNotFoundException; - -public class PictureBarcodeActivity extends AppCompatActivity implements View.OnClickListener { - - Button btnOpenCamera; - TextView txtResultBody; - - private BarcodeDetector detector; - private Uri imageUri; - private static final int REQUEST_CAMERA_PERMISSION = 200; - private static final int CAMERA_REQUEST = 101; - private static final String TAG = "API123"; - private static final String SAVED_INSTANCE_URI = "uri"; - private static final String SAVED_INSTANCE_RESULT = "result"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_picture_barcode); - - initViews(); - - if (savedInstanceState != null) { - if (imageUri != null) { - imageUri = Uri.parse(savedInstanceState.getString(SAVED_INSTANCE_URI)); - txtResultBody.setText(savedInstanceState.getString(SAVED_INSTANCE_RESULT)); - } - } - - detector = new BarcodeDetector.Builder(getApplicationContext()) - .setBarcodeFormats(Barcode.DATA_MATRIX | Barcode.QR_CODE) - .build(); - - if (!detector.isOperational()) { - txtResultBody.setText("Detector initialisation failed"); - return; - } - } - - private void initViews() { - txtResultBody = findViewById(R.id.txtResultsBody); - btnOpenCamera = findViewById(R.id.btnTakePicture); - txtResultBody = findViewById(R.id.txtResultsBody); - btnOpenCamera.setOnClickListener(this); - } - - @Override - public void onClick(View v) { - - switch (v.getId()) { - case R.id.btnTakePicture: - ActivityCompat.requestPermissions(PictureBarcodeActivity.this, new - String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION); - break; - } - - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - switch (requestCode) { - case REQUEST_CAMERA_PERMISSION: - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) { - takeBarcodePicture(); - } else { - Toast.makeText(getApplicationContext(), "Permission Denied!", Toast.LENGTH_SHORT).show(); - } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { - launchMediaScanIntent(); - try { - - - Bitmap bitmap = decodeBitmapUri(this, imageUri); - if (detector.isOperational() && bitmap != null) { - Frame frame = new Frame.Builder().setBitmap(bitmap).build(); - SparseArray<Barcode> barcodes = detector.detect(frame); - for (int index = 0; index < barcodes.size(); index++) { - Barcode code = barcodes.valueAt(index); - txtResultBody.setText(txtResultBody.getText() + "\n" + code.displayValue + "\n"); - - int type = barcodes.valueAt(index).valueFormat; - switch (type) { - case Barcode.CONTACT_INFO: - Log.i(TAG, code.contactInfo.title); - break; - case Barcode.EMAIL: - Log.i(TAG, code.displayValue); - break; - case Barcode.ISBN: - Log.i(TAG, code.rawValue); - break; - case Barcode.PHONE: - Log.i(TAG, code.phone.number); - break; - case Barcode.PRODUCT: - Log.i(TAG, code.rawValue); - break; - case Barcode.SMS: - Log.i(TAG, code.sms.message); - break; - case Barcode.TEXT: - Log.i(TAG, code.displayValue); - break; - case Barcode.URL: - Log.i(TAG, "url: " + code.displayValue); - break; - case Barcode.WIFI: - Log.i(TAG, code.wifi.ssid); - break; - case Barcode.GEO: - Log.i(TAG, code.geoPoint.lat + ":" + code.geoPoint.lng); - break; - case Barcode.CALENDAR_EVENT: - Log.i(TAG, code.calendarEvent.description); - break; - case Barcode.DRIVER_LICENSE: - Log.i(TAG, code.driverLicense.licenseNumber); - break; - default: - Log.i(TAG, code.rawValue); - break; - } - } - if (barcodes.size() == 0) { - txtResultBody.setText("No barcode could be detected. Please try again."); - } - } else { - txtResultBody.setText("Detector initialisation failed"); - } - } catch (Exception e) { - Toast.makeText(getApplicationContext(), "Failed to load Image", Toast.LENGTH_SHORT) - .show(); - Log.e(TAG, e.toString()); - } - } - } - - private void takeBarcodePicture() { - Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - File photo = new File(Environment.getExternalStorageDirectory(), "pic.jpg"); - imageUri = FileProvider.getUriForFile(PictureBarcodeActivity.this, - BuildConfig.APPLICATION_ID + ".provider", photo); - intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); - startActivityForResult(intent, CAMERA_REQUEST); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - if (imageUri != null) { - outState.putString(SAVED_INSTANCE_URI, imageUri.toString()); - outState.putString(SAVED_INSTANCE_RESULT, txtResultBody.getText().toString()); - } - super.onSaveInstanceState(outState); - } - - private void launchMediaScanIntent() { - Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); - mediaScanIntent.setData(imageUri); - this.sendBroadcast(mediaScanIntent); - } - - private Bitmap decodeBitmapUri(Context ctx, Uri uri) throws FileNotFoundException { - int targetW = 600; - int targetH = 600; - BitmapFactory.Options bmOptions = new BitmapFactory.Options(); - bmOptions.inJustDecodeBounds = true; - BitmapFactory.decodeStream(ctx.getContentResolver().openInputStream(uri), null, bmOptions); - int photoW = bmOptions.outWidth; - int photoH = bmOptions.outHeight; - - int scaleFactor = Math.min(photoW / targetW, photoH / targetH); - bmOptions.inJustDecodeBounds = false; - bmOptions.inSampleSize = scaleFactor; - - return BitmapFactory.decodeStream(ctx.getContentResolver() - .openInputStream(uri), null, bmOptions); - } -} - diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/qr/QRReaderActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/qr/QRReaderActivity.java deleted file mode 100644 index f9965cdb76066ca76257c899f1ab7d70e53e0e3a..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/ireallydontcare/viet/posseidon/qr/QRReaderActivity.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.ireallydontcare.viet.posseidon.qr; - - -import android.content.Intent; -import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; - -import com.ireallydontcare.viet.posseidon.R; - -public class QRReaderActivity extends AppCompatActivity implements View.OnClickListener { - - Button btnTakePicture, btnScanBarcode; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_qrreader); - initViews(); - } - - private void initViews() { - btnTakePicture = findViewById(R.id.btnTakePicture); - btnScanBarcode = findViewById(R.id.btnScanBarcode); - btnTakePicture.setOnClickListener(this); - btnScanBarcode.setOnClickListener(this); - } - - @Override - public void onClick(View v) { - - switch (v.getId()) { - case R.id.btnTakePicture: - startActivity(new Intent(QRReaderActivity.this, PictureBarcodeActivity.class)); - break; - case R.id.btnScanBarcode: - startActivity(new Intent(QRReaderActivity.this, ScannedBarcodeActivity.class)); - break; - } - - } -} diff --git a/app/src/main/res/layout/activity_picture_barcode.xml b/app/src/main/res/layout/activity_picture_barcode.xml deleted file mode 100644 index 1f8e43e1f57836e6fa3395e3476d4ecc4b592f14..0000000000000000000000000000000000000000 --- a/app/src/main/res/layout/activity_picture_barcode.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?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"> - - <TextView - android:id="@+id/txtResultsHeader" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:text="Results" - android:textSize="18sp" - android:textStyle="bold" /> - - <TextView - android:id="@+id/txtResultsBody" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/txtResultsHeader" - android:layout_centerHorizontal="true" - android:gravity="center" /> - - <Button - android:id="@+id/btnOpenCamera" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_centerHorizontal="true" - android:text="camera" /> -</RelativeLayout> diff --git a/app/src/main/res/layout/activity_qrreader.xml b/app/src/main/res/layout/activity_qrreader.xml deleted file mode 100644 index f3db170ba3e3a46aea652c482f3823ff688c8d5d..0000000000000000000000000000000000000000 --- a/app/src/main/res/layout/activity_qrreader.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <Button - android:id="@+id/btnTakePicture" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:text="from picture" /> - - <Button - android:id="@+id/btnScanBarcode" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_below="@+id/btnTakePicture" - android:layout_centerHorizontal="true" - android:text="scan" /> -</RelativeLayout> -