Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.62 KB | None | 0 0
  1. package com.example.image_to_text;
  2.  
  3. import androidx.annotation.NonNull;
  4. import androidx.annotation.Nullable;
  5. import androidx.appcompat.app.ActionBar;
  6. import androidx.appcompat.app.AlertDialog;
  7. import androidx.appcompat.app.AppCompatActivity;
  8. import androidx.core.app.ActivityCompat;
  9. import androidx.core.content.ContextCompat;
  10.  
  11. import android.Manifest;
  12. import android.content.ContentValues;
  13. import android.content.DialogInterface;
  14. import android.content.Intent;
  15. import android.content.pm.PackageManager;
  16. import android.graphics.Bitmap;
  17. import android.graphics.drawable.BitmapDrawable;
  18. import android.net.Uri;
  19. import android.os.Bundle;
  20. import android.provider.MediaStore;
  21. import android.util.SparseArray;
  22. import android.view.Menu;
  23. import android.view.MenuItem;
  24. import android.view.View;
  25. import android.widget.Button;
  26. import android.widget.EditText;
  27. import android.widget.ImageView;
  28. import android.widget.Toast;
  29.  
  30. import com.google.android.gms.vision.Frame;
  31. import com.google.android.gms.vision.text.TextBlock;
  32. import com.google.android.gms.vision.text.TextRecognizer;
  33. import com.theartofdev.edmodo.cropper.CropImage;
  34. import com.theartofdev.edmodo.cropper.CropImageView;
  35.  
  36. import java.util.Queue;
  37. import java.util.concurrent.ExecutionException;
  38.  
  39. public class MainActivity extends AppCompatActivity {
  40.     private static final String BASE_URL = "http://192.168.1.135"; //192.168.0.193
  41.     private static final String FULL_URL = BASE_URL + "/OCR_Insertion/insertOCR.php";
  42.  
  43.  
  44.     EditText mResultEt;
  45.     ImageView mPreview;
  46.     Button addButton;
  47.  
  48.  
  49.     private static final int CAMERA_REQUEST_CODE = 200;
  50.     private static final int STORAGE_REQUEST_CODE = 400;
  51.     private static final int IMAGE_PICK_GALERY_CODE = 1000;
  52.     private static final int IMAGE_PICK_CAMERA_CODE = 1001;
  53.  
  54.     String CameraPermission[];
  55.     String storagePermission[];
  56.  
  57.     Uri image_uri;
  58.  
  59.  
  60.     @Override
  61.     protected void onCreate(Bundle savedInstanceState) {
  62.         super.onCreate(savedInstanceState);
  63.         setContentView(R.layout.activity_main);
  64.         ActionBar actionBar = getSupportActionBar();
  65.         actionBar.setSubtitle("Click the Image Icon to Insert an Image ");
  66.         mResultEt = findViewById(R.id.resultEt);
  67.         mPreview = findViewById(R.id.imageIv);
  68.         addButton = findViewById(R.id.AddButton);
  69.  
  70.         CameraPermission = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
  71.         storagePermission = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
  72.  
  73.  
  74.         addButton.setOnClickListener(new View.OnClickListener() {
  75.             @Override
  76.             public void onClick(View v) {
  77.                 Sender s = new Sender(MainActivity.this, FULL_URL, mResultEt);
  78.                 s.execute();
  79.             }
  80.         });
  81.  
  82.     }
  83.  
  84.     @Override
  85.     public boolean onCreateOptionsMenu(Menu menu) {
  86.         getMenuInflater().inflate(R.menu.menu_main,menu);
  87.         return true;
  88.     }
  89.  
  90.     @Override
  91.     public boolean onOptionsItemSelected(@NonNull MenuItem item) {
  92.         int id = item.getItemId();
  93.         if (id == R.id.AddImage) {
  94.             showImageImportDialog();
  95.            
  96.  
  97.         }
  98.         if (id == R.id.settings){
  99.             Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show();
  100.  
  101.         }
  102.         return super.onOptionsItemSelected(item);
  103.     }
  104.  
  105.     private void showImageImportDialog() {
  106.  
  107.         String[] items = {"CAMERA", "GALLERY"};
  108.         AlertDialog.Builder dialog = new AlertDialog.Builder(this);
  109.         dialog.setTitle("Select Image");
  110.         dialog.setItems(items, new DialogInterface.OnClickListener() {
  111.             @Override
  112.             public void onClick(DialogInterface dialog, int which) {
  113.                 if (which == 0){
  114.  
  115.                     if (!checkCameraPermission()){
  116.  
  117.                         requestCameraPermission();
  118.                     }
  119.  
  120.                     else {
  121.  
  122.                         pickCamera();
  123.                     }
  124.                 }
  125.                 if (which == 1) {
  126.                     if (!checkStoragePermission()){
  127.  
  128.                         requestStoragePermission();
  129.                     }
  130.                     else {
  131.  
  132.                         pickGallery();
  133.                     }
  134.                 }
  135.  
  136.             }
  137.         });
  138.  
  139.         dialog.create().show();
  140.     }
  141.  
  142.     private void pickGallery() {
  143.  
  144.         Intent intent = new Intent(Intent.ACTION_PICK);
  145.         intent.setType("image/*");
  146.         startActivityForResult(intent, IMAGE_PICK_GALERY_CODE);
  147.  
  148.     }
  149.  
  150.     private void pickCamera() {
  151.  
  152.         ContentValues values = new ContentValues();
  153.         values.put(MediaStore.Images.Media.TITLE, "New Picture");
  154.         values.put(MediaStore.Images.Media.DESCRIPTION, "Image To Text");
  155.         image_uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
  156.  
  157.         Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  158.         cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
  159.         startActivityForResult(cameraIntent, IMAGE_PICK_CAMERA_CODE);
  160.     }
  161.  
  162.     private void requestStoragePermission() {
  163.         ActivityCompat.requestPermissions(this, storagePermission, STORAGE_REQUEST_CODE);
  164.  
  165.     }
  166.  
  167.     private boolean checkStoragePermission() {
  168.         boolean result = ContextCompat.checkSelfPermission(this,
  169.                 Manifest.permission.WRITE_EXTERNAL_STORAGE) == (PackageManager.PERMISSION_GRANTED);
  170.         return result;
  171.     }
  172.  
  173.     private void requestCameraPermission() {
  174.         ActivityCompat.requestPermissions(this, CameraPermission, CAMERA_REQUEST_CODE);
  175.     }
  176.  
  177.     private boolean checkCameraPermission() {
  178.         boolean result = ContextCompat.checkSelfPermission(this,
  179.                 Manifest.permission.CAMERA) == (PackageManager.PERMISSION_GRANTED);
  180.         boolean result1 = ContextCompat.checkSelfPermission(this,
  181.                 Manifest.permission.WRITE_EXTERNAL_STORAGE) == (PackageManager.PERMISSION_GRANTED);
  182.         return result && result1;
  183.  
  184.     }
  185.  
  186.     @Override
  187.     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  188.  
  189.         switch (requestCode){
  190.             case CAMERA_REQUEST_CODE:
  191.                 if (grantResults.length >0){
  192.                     boolean cameraAccepted = grantResults[0] ==
  193.                             PackageManager.PERMISSION_GRANTED;
  194.                     boolean writeStorageAccepted = grantResults [0] ==
  195.                             PackageManager.PERMISSION_GRANTED;
  196.                     if (cameraAccepted && writeStorageAccepted){
  197.                         pickCamera();
  198.                     }
  199.                     else{
  200.                         Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
  201.                     }
  202.                 }
  203.  
  204.                     case STORAGE_REQUEST_CODE:
  205.                         if (grantResults.length >0){
  206.                             boolean writeStorageAccepted = grantResults [0] ==
  207.                                     PackageManager.PERMISSION_GRANTED;
  208.                             if (writeStorageAccepted){
  209.                                 pickGallery();
  210.                             }
  211.                             else{
  212.                                 Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
  213.                             }
  214.                         }
  215.                         break;
  216.         }
  217.  
  218.     }
  219.  
  220.  
  221.     @Override
  222.     protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  223.         super.onActivityResult(requestCode, resultCode, data);
  224.         if (resultCode == RESULT_OK) {
  225.             if (requestCode == IMAGE_PICK_GALERY_CODE) {
  226.                 CropImage.activity(data.getData())
  227.                         .setGuidelines(CropImageView.Guidelines.ON)
  228.                         .start(this);
  229.  
  230.             }
  231.  
  232.             if (requestCode == IMAGE_PICK_CAMERA_CODE) {
  233.                 CropImage.activity(image_uri)
  234.                         .setGuidelines(CropImageView.Guidelines.ON)
  235.                         .start(this);
  236.             }
  237.         }
  238.         if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
  239.  
  240.             CropImage.ActivityResult result = CropImage.getActivityResult(data);
  241.             if (resultCode == RESULT_OK) {
  242.                 Uri resultUri = result.getUri();
  243.                 mPreview.setImageURI(resultUri);
  244.  
  245.                 BitmapDrawable bitmapDrawable = (BitmapDrawable) mPreview.getDrawable();
  246.                 Bitmap bitmap = bitmapDrawable.getBitmap();
  247.  
  248.                 TextRecognizer recognizer = new TextRecognizer.Builder(getApplicationContext()).build();
  249.  
  250.                 if (!recognizer.isOperational()) {
  251.                     Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
  252.                 } else {
  253.  
  254.                     Frame frame = new Frame.Builder().setBitmap(bitmap).build();
  255.                     SparseArray<TextBlock> items = recognizer.detect(frame);
  256.                     StringBuilder stringBuilder = new StringBuilder();
  257.  
  258.                     for (int i = 0; i < items.size(); i++) {
  259.                         TextBlock myitems = items.valueAt(i);
  260.                         stringBuilder.append(myitems.getValue());
  261.                         stringBuilder.append("\n");
  262.                     }
  263.  
  264.                     mResultEt.setText(stringBuilder.toString());
  265.                 }
  266.  
  267.             } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
  268.                 Exception error = result.getError();
  269.                 Toast.makeText(this, "" + error, Toast.LENGTH_SHORT).show();
  270.  
  271.             }
  272.         }
  273.     }
  274. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement