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();
}
}