Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.image_to_text;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.ActionBar;
- import androidx.appcompat.app.AlertDialog;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.core.app.ActivityCompat;
- import androidx.core.content.ContextCompat;
- import android.Manifest;
- import android.content.ContentValues;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.graphics.Bitmap;
- import android.graphics.drawable.BitmapDrawable;
- import android.net.Uri;
- import android.os.Bundle;
- import android.provider.MediaStore;
- import android.util.SparseArray;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.Toast;
- import com.google.android.gms.vision.Frame;
- import com.google.android.gms.vision.text.TextBlock;
- import com.google.android.gms.vision.text.TextRecognizer;
- import com.theartofdev.edmodo.cropper.CropImage;
- import com.theartofdev.edmodo.cropper.CropImageView;
- import java.util.Queue;
- import java.util.concurrent.ExecutionException;
- public class MainActivity extends AppCompatActivity {
- private static final String BASE_URL = "http://192.168.1.135"; //192.168.0.193
- private static final String FULL_URL = BASE_URL + "/OCR_Insertion/insertOCR.php";
- EditText mResultEt;
- ImageView mPreview;
- Button addButton;
- private static final int CAMERA_REQUEST_CODE = 200;
- private static final int STORAGE_REQUEST_CODE = 400;
- private static final int IMAGE_PICK_GALERY_CODE = 1000;
- private static final int IMAGE_PICK_CAMERA_CODE = 1001;
- String CameraPermission[];
- String storagePermission[];
- Uri image_uri;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ActionBar actionBar = getSupportActionBar();
- actionBar.setSubtitle("Click the Image Icon to Insert an Image ");
- mResultEt = findViewById(R.id.resultEt);
- mPreview = findViewById(R.id.imageIv);
- addButton = findViewById(R.id.AddButton);
- CameraPermission = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
- storagePermission = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
- addButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Sender s = new Sender(MainActivity.this, FULL_URL, mResultEt);
- s.execute();
- }
- });
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_main,menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(@NonNull MenuItem item) {
- int id = item.getItemId();
- if (id == R.id.AddImage) {
- showImageImportDialog();
- }
- if (id == R.id.settings){
- Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show();
- }
- return super.onOptionsItemSelected(item);
- }
- private void showImageImportDialog() {
- String[] items = {"CAMERA", "GALLERY"};
- AlertDialog.Builder dialog = new AlertDialog.Builder(this);
- dialog.setTitle("Select Image");
- dialog.setItems(items, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == 0){
- if (!checkCameraPermission()){
- requestCameraPermission();
- }
- else {
- pickCamera();
- }
- }
- if (which == 1) {
- if (!checkStoragePermission()){
- requestStoragePermission();
- }
- else {
- pickGallery();
- }
- }
- }
- });
- dialog.create().show();
- }
- private void pickGallery() {
- Intent intent = new Intent(Intent.ACTION_PICK);
- intent.setType("image/*");
- startActivityForResult(intent, IMAGE_PICK_GALERY_CODE);
- }
- private void pickCamera() {
- ContentValues values = new ContentValues();
- values.put(MediaStore.Images.Media.TITLE, "New Picture");
- values.put(MediaStore.Images.Media.DESCRIPTION, "Image To Text");
- image_uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
- Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
- startActivityForResult(cameraIntent, IMAGE_PICK_CAMERA_CODE);
- }
- private void requestStoragePermission() {
- ActivityCompat.requestPermissions(this, storagePermission, STORAGE_REQUEST_CODE);
- }
- private boolean checkStoragePermission() {
- boolean result = ContextCompat.checkSelfPermission(this,
- Manifest.permission.WRITE_EXTERNAL_STORAGE) == (PackageManager.PERMISSION_GRANTED);
- return result;
- }
- private void requestCameraPermission() {
- ActivityCompat.requestPermissions(this, CameraPermission, CAMERA_REQUEST_CODE);
- }
- private boolean checkCameraPermission() {
- boolean result = ContextCompat.checkSelfPermission(this,
- Manifest.permission.CAMERA) == (PackageManager.PERMISSION_GRANTED);
- boolean result1 = ContextCompat.checkSelfPermission(this,
- Manifest.permission.WRITE_EXTERNAL_STORAGE) == (PackageManager.PERMISSION_GRANTED);
- return result && result1;
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- switch (requestCode){
- case CAMERA_REQUEST_CODE:
- if (grantResults.length >0){
- boolean cameraAccepted = grantResults[0] ==
- PackageManager.PERMISSION_GRANTED;
- boolean writeStorageAccepted = grantResults [0] ==
- PackageManager.PERMISSION_GRANTED;
- if (cameraAccepted && writeStorageAccepted){
- pickCamera();
- }
- else{
- Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
- }
- }
- case STORAGE_REQUEST_CODE:
- if (grantResults.length >0){
- boolean writeStorageAccepted = grantResults [0] ==
- PackageManager.PERMISSION_GRANTED;
- if (writeStorageAccepted){
- pickGallery();
- }
- else{
- Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
- }
- }
- break;
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (resultCode == RESULT_OK) {
- if (requestCode == IMAGE_PICK_GALERY_CODE) {
- CropImage.activity(data.getData())
- .setGuidelines(CropImageView.Guidelines.ON)
- .start(this);
- }
- if (requestCode == IMAGE_PICK_CAMERA_CODE) {
- CropImage.activity(image_uri)
- .setGuidelines(CropImageView.Guidelines.ON)
- .start(this);
- }
- }
- if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
- CropImage.ActivityResult result = CropImage.getActivityResult(data);
- if (resultCode == RESULT_OK) {
- Uri resultUri = result.getUri();
- mPreview.setImageURI(resultUri);
- BitmapDrawable bitmapDrawable = (BitmapDrawable) mPreview.getDrawable();
- Bitmap bitmap = bitmapDrawable.getBitmap();
- TextRecognizer recognizer = new TextRecognizer.Builder(getApplicationContext()).build();
- if (!recognizer.isOperational()) {
- Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
- } else {
- Frame frame = new Frame.Builder().setBitmap(bitmap).build();
- SparseArray<TextBlock> items = recognizer.detect(frame);
- StringBuilder stringBuilder = new StringBuilder();
- for (int i = 0; i < items.size(); i++) {
- TextBlock myitems = items.valueAt(i);
- stringBuilder.append(myitems.getValue());
- stringBuilder.append("\n");
- }
- mResultEt.setText(stringBuilder.toString());
- }
- } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
- Exception error = result.getError();
- Toast.makeText(this, "" + error, Toast.LENGTH_SHORT).show();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement