Vassa007

RekamWajah

Oct 18th, 2024
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.72 KB | None | 0 0
  1. package com.unej.sisterfortendik.activity.wajah;
  2.  
  3. import android.Manifest;
  4. import android.app.AlertDialog;
  5. import android.app.ProgressDialog;
  6. import android.content.ContentResolver;
  7. import android.content.Context;
  8. import android.content.DialogInterface;
  9. import android.content.Intent;
  10. import android.content.pm.PackageManager;
  11. import android.database.Cursor;
  12. import android.graphics.Bitmap;
  13. import android.graphics.BitmapFactory;
  14. import android.graphics.Matrix;
  15. import android.media.ExifInterface;
  16. import android.net.Uri;
  17. import android.os.Bundle;
  18. import android.os.Environment;
  19. import android.provider.MediaStore;
  20. import android.provider.OpenableColumns;
  21. import android.util.Base64;
  22. import android.util.Log;
  23. import android.view.View;
  24. import android.widget.Button;
  25. import android.widget.ImageView;
  26. import android.widget.TextView;
  27.  
  28. import androidx.appcompat.app.AppCompatActivity;
  29. import androidx.core.app.ActivityCompat;
  30. import androidx.core.content.ContextCompat;
  31.  
  32. import com.unej.sisterfortendik.R;
  33. import com.unej.sisterfortendik.config.session.SessionClass;
  34. import com.unej.sisterfortendik.config.util.EncrypDecryptManager;
  35. import com.unej.sisterfortendik.handler.Auth.UploadFotoFace;
  36.  
  37. import org.apache.commons.logging.LogFactory;
  38. import org.json.JSONObject;
  39.  
  40. import java.io.ByteArrayOutputStream;
  41. import java.io.File;
  42. import java.io.FileNotFoundException;
  43. import java.io.FileOutputStream;
  44. import java.io.IOException;
  45. import java.io.InputStream;
  46.  
  47. import retrofit2.http.Url;
  48.  
  49.  
  50. public class RekamWajahActivity extends AppCompatActivity {
  51.     private static final String TAG = "REKAMWAJAH";
  52.     ImageView imageView, im_rotate, im_flip;
  53.     //to call our own custom cam
  54.     TextView label;
  55.     private final static int CAMERA_PIC_REQUEST1 = 0;
  56.     Context con;
  57.     Button buttonCapture, buttonSimpan, buttonHapus;
  58.     private static final int SECOND_ACTIVITY_REQUEST_CODE = 0;
  59.  
  60.     private ProgressDialog progressDialog;
  61.     private SessionClass sessionManager;
  62.     private EncrypDecryptManager encrypDecryptManager;
  63.     private AlertDialog.Builder builder;
  64.     private JSONObject jsonObject;
  65.     private JSONObject data;
  66.     public String streams, foto;
  67.     String returnString,retrurnUri, returnBitmap;
  68.     private Bitmap bitmap;
  69.     private String selectedImagePath;
  70.     private File destination;
  71.     private UploadFotoFace uploadFotoFace;
  72.     private static final String[] CAMERA_PERMISSION = new String[]{Manifest.permission.CAMERA};
  73.     private static final int CAMERA_REQUEST_CODE = 10;
  74.  
  75.     @Override
  76.     protected void onCreate(Bundle savedInstanceState) {
  77.         super.onCreate(savedInstanceState);
  78.         setContentView(R.layout.activity_rekam_wajah);
  79.         progressDialog = new ProgressDialog(this);
  80.         sessionManager = new SessionClass(this);
  81.         jsonObject = new JSONObject();
  82.         encrypDecryptManager = new EncrypDecryptManager();
  83.         uploadFotoFace = new UploadFotoFace(this);
  84.  
  85.         imageView = (ImageView) findViewById(R.id.imageView9);
  86.         im_rotate = (ImageView) findViewById(R.id.im_rotate);
  87.         im_flip = (ImageView) findViewById(R.id.im_flip);
  88.         con=this;
  89.         label = (TextView) findViewById(R.id.textViewLabelBawah);
  90.         buttonCapture = (Button) findViewById(R.id.btn_capture_wajah);
  91.         buttonSimpan = (Button) findViewById(R.id.btn_simpan);
  92.         buttonHapus = (Button) findViewById(R.id.btn_hapus);
  93.         buttonSimpan.setVisibility(View.INVISIBLE);
  94.         buttonCapture.setOnClickListener(new View.OnClickListener() {
  95.             @Override
  96.             public void onClick(View v) {
  97.                 if (hasCameraPermission()) {
  98.                     enableCamera();
  99.                 } else {
  100.                     requestPermission();
  101.                 }
  102.             }
  103.         });
  104.  
  105.         im_rotate.setOnClickListener(new View.OnClickListener() {
  106.             @Override
  107.             public void onClick(View v) {
  108.                 imageView.setRotation(imageView.getRotation()-90F);
  109.             }
  110.         });
  111.  
  112.         im_flip.setOnClickListener(new View.OnClickListener() {
  113.             @Override
  114.             public void onClick(View v) {
  115.                 imageView.setRotationY(180);
  116.             }
  117.         });
  118.  
  119.         AlertDialog.Builder builder = new AlertDialog.Builder(RekamWajahActivity.this);
  120.         builder.setMessage("Apakah Anda bersedia memberikan persetujuan untuk perekaman dan pengumpulan data wajah Anda? Data ini akan digunakan secara eksklusif untuk pengembangan sistem presensi berbasis Artificial Intelligence (AI) oleh Universitas Jember. Seluruh data Anda akan dijaga kerahasiaannya sesuai dengan ketentuan privasi yang berlaku. Pastikan bahwa wajah yang direkam adalah wajah pemilik akun.");
  121.         builder.setTitle("Konfirmasi Pengumpulan Data Wajah");
  122.         builder.setCancelable(false);
  123.  
  124.         builder.setPositiveButton("Syarat & Ketentuan", (DialogInterface.OnClickListener) (dialog, which) -> {
  125.             String url = "https://siakad.unej.ac.id/term";
  126.             Intent i = new Intent(Intent.ACTION_VIEW);
  127.             i.setData(Uri.parse(url));
  128.             startActivity(i);
  129.         });
  130.  
  131.         builder.setNegativeButton("Tidak", (DialogInterface.OnClickListener) (dialog, which) -> {
  132.             finish();
  133.         });
  134.  
  135.         builder.setNeutralButton("Ya", (DialogInterface.OnClickListener) (dialog, which) -> {
  136.             dialog.dismiss();
  137.         });
  138.  
  139.         AlertDialog alertDialog = builder.create();
  140.         alertDialog.show();
  141.  
  142.         uploadFotoFace.fotoLast();
  143.         uploadFotoFace.lastFoto();
  144.     }
  145.     private boolean hasCameraPermission() {
  146.         return ContextCompat.checkSelfPermission(
  147.                 this,
  148.                 Manifest.permission.CAMERA
  149.         ) == PackageManager.PERMISSION_GRANTED;
  150.     }
  151.     private void requestPermission() {
  152.         ActivityCompat.requestPermissions(
  153.                 this,
  154.                 CAMERA_PERMISSION,
  155.                 CAMERA_REQUEST_CODE
  156.         );
  157.     }
  158.     private void enableCamera() {
  159.         Intent intent = new Intent(this, CameraActivity.class);
  160.         startActivityForResult(intent, SECOND_ACTIVITY_REQUEST_CODE);
  161.  
  162.     }
  163.  
  164.     @Override
  165.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  166.         super.onActivityResult(requestCode, resultCode, data);
  167.  
  168.         try {
  169.             // check that it is the SecondActivity with an OK result
  170.             if (requestCode == SECOND_ACTIVITY_REQUEST_CODE) {
  171.                 if (resultCode == RESULT_OK) { // Activity.RESULT_OK
  172.                     // get String data from Intent
  173.                     //returnString = data.getStringExtra("keyName");
  174.                     retrurnUri = data.getStringExtra("uri");
  175.  
  176.                     Log.e(TAG, "OWH: " +retrurnUri );
  177.  
  178.                     ContentResolver contentResolver = getContentResolver();
  179.                     bitmap = MediaStore.Images.Media.getBitmap(contentResolver, Uri.parse(retrurnUri));
  180.  
  181.                     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  182.  
  183.                     InputStream inputStream = contentResolver.openInputStream(Uri.parse(retrurnUri));
  184.  
  185.                     Matrix matrix = new Matrix();
  186.                     ExifInterface exif = null;
  187.                     if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
  188.                         exif = new ExifInterface(inputStream);
  189.                     }
  190.  
  191.                     int orientation = exif.getAttributeInt(
  192.                             ExifInterface.TAG_ORIENTATION,
  193.                             ExifInterface.ORIENTATION_NORMAL);
  194.                     switch (orientation) {
  195.                         case ExifInterface.ORIENTATION_ROTATE_90:
  196.                             matrix.postRotate(90);
  197.                             break;
  198.                         case ExifInterface.ORIENTATION_ROTATE_180:
  199.                             matrix.postRotate(180);
  200.                             break;
  201.                         case ExifInterface.ORIENTATION_ROTATE_270:
  202.                             matrix.postRotate(270);
  203.                             break;
  204.                         default:
  205.                             matrix.postRotate(0);
  206.                             break;
  207.                     }
  208.  
  209.                     Bitmap imgRotateResult = Bitmap.createBitmap(bitmap, 0, 0,
  210.                             bitmap.getWidth(), bitmap.getHeight(), matrix, true);
  211.  
  212.                     Cursor cursor = getContentResolver().query(Uri.parse(retrurnUri), null, null, null, null);
  213.                     if (cursor != null && cursor.moveToFirst()) {
  214.                         int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
  215.                         long fileSizeInBytes = cursor.getLong(sizeIndex);
  216.                         cursor.close();
  217.                         Log.d("File Size", "Ukuran file: " + fileSizeInBytes + " bytes");
  218.                     }
  219.  
  220.                     imageView.setImageBitmap(imgRotateResult);
  221.  
  222.                     imgRotateResult.compress(Bitmap.CompressFormat.JPEG, 70, byteArrayOutputStream);
  223.                     byte[] byteArray = byteArrayOutputStream.toByteArray();
  224.                     String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
  225.                     String encodeImagePhoto = encoded.replace("\n", "").replace("\r", "");
  226.  
  227.                     buttonSimpan.setVisibility(View.VISIBLE);
  228.                     buttonSimpan.setOnClickListener(v -> {
  229.                         uploadFotoFace.foto = encodeImagePhoto;
  230.                         uploadFotoFace.uploadFoto();
  231.                     });
  232.  
  233.                     buttonCapture.setText("Foto Ulang");
  234.  
  235.                 }
  236.             }
  237.         } catch (Exception e) {
  238.             e.printStackTrace();
  239.         }
  240.  
  241.     }
  242.  
  243.  
  244. }
Add Comment
Please, Sign In to add comment