MainActivity.java
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    private Button mButton, show_text;
    private Button mCloudButton;
    private Bitmap mSelectedImage;
    ImageView imageView;
    String s="";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = findViewById(R.id.image_view);
        mButton = findViewById(R.id.button_text);
        show_text = findViewById(R.id.show_text);
        mCloudButton = findViewById(R.id.button_cloud_text);

        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {runTextRecognition();}
        });
        mCloudButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {runCloudTextRecognition();}
        });
        show_text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {showText(s);}
        });
        Spinner dropdown = findViewById(R.id.spinner);
        String[] items = new String[]{"Image 1", "Image 2", "Image 3"};
        ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout
                .simple_spinner_dropdown_item, items);
        dropdown.setAdapter(adapter);
        dropdown.setOnItemSelectedListener(this);
    }

    private void runTextRecognition() {
        s="";
        FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(mSelectedImage);
        FirebaseVisionTextDetector detector = FirebaseVision.getInstance()
                .getVisionTextDetector();
        mButton.setEnabled(false);
        detector.detectInImage(image)
		.addOnSuccessListener(
			new OnSuccessListener() {
				@Override
				public void onSuccess(FirebaseVisionText texts) {
					mButton.setEnabled(true);
					processTextRecognitionResult(texts);
				}
			})
			.addOnFailureListener(
			new OnFailureListener() {
				@Override
				public void onFailure(@NonNull Exception e) {
					// Task failed with an exception
					mButton.setEnabled(true);
					e.printStackTrace();
				}
			});
    }

    private void processTextRecognitionResult(FirebaseVisionText texts) {
        List blocks = texts.getBlocks();
        if (blocks.size() == 0) {
            Toast.makeText(getApplicationContext(), "No text found", Toast.LENGTH_LONG).show();
            return;
        }
        s="";
        for (int i = 0; i < blocks.size(); i++) {
            List lines = blocks.get(i).getLines();
            for (int j = 0; j < lines.size(); j++) {
                List elements = lines.get(j).getElements();
                for (int k = 0; k < elements.size(); k++) {
                    s +=elements.get(k).getText()+" ";
                }
            }
        }
        showText(s);
    }

    private void runCloudTextRecognition() {
        s="";
        FirebaseVisionCloudDetectorOptions options =
                new FirebaseVisionCloudDetectorOptions.Builder()
                        .setModelType(FirebaseVisionCloudDetectorOptions.LATEST_MODEL)
                        .setMaxResults(15)
                        .build();
        mCloudButton.setEnabled(false);
        FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(mSelectedImage);
        FirebaseVisionCloudDocumentTextDetector detector = FirebaseVision.getInstance()
                .getVisionCloudDocumentTextDetector(options);
        detector.detectInImage(image)
                .addOnSuccessListener(
                        new OnSuccessListener() {
                            @Override
                            public void onSuccess(FirebaseVisionCloudText texts) {
                                mCloudButton.setEnabled(true);
                                s+=texts.getText();
                                showText(s);
                            }
                        })
                .addOnFailureListener(
                        new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                // Task failed with an exception
                                mCloudButton.setEnabled(true);
                                e.printStackTrace();
                            }
                        });
    }

    public void onItemSelected(AdapterView parent, View v, int position, long id) {
        switch (position) {
            case 0:
                mSelectedImage = ((BitmapDrawable)ResourcesCompat.getDrawable(this.getResources(), R.drawable.english_hindi_signboard1, null)).getBitmap();
                break;
            case 1:
                mSelectedImage = ((BitmapDrawable)ResourcesCompat.getDrawable(this.getResources(), R.drawable.hindi_signboard1, null)).getBitmap();
                break;
            case 2:
                mSelectedImage = ((BitmapDrawable)ResourcesCompat.getDrawable(this.getResources(), R.drawable.tamil_signboard1, null)).getBitmap();
                break;
        }

        imageView.setImageBitmap(mSelectedImage);
    }
    @Override
    public void onNothingSelected(AdapterView parent) {
    }
    private void showText(String text){
        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setMessage(text);
        alert.setIcon(ContextCompat.getDrawable(this, R.mipmap.ic_launcher));
        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {

            }
        });
        alert.show();
    }
}