package hu.autsoft.androidapidemos.ocr; import android.util.Log; import android.util.SparseArray; import android.widget.TextView; import com.google.android.gms.vision.Detector; import com.google.android.gms.vision.text.TextBlock; public class OcrDetectorProcessor implements Detector.Processor<TextBlock> { private GraphicOverlay<OcrGraphic> ocrGraphicOverlay; private TextView tvOcrResult; public OcrDetectorProcessor(GraphicOverlay<OcrGraphic> ocrGraphicOverlay, TextView tvOcrResult) { this.ocrGraphicOverlay = ocrGraphicOverlay; this.tvOcrResult = tvOcrResult; } @Override public void receiveDetections(Detector.Detections<TextBlock> detections) { ocrGraphicOverlay.clear(); SparseArray<TextBlock> items = detections.getDetectedItems(); final StringBuilder sb = new StringBuilder(); for (int i = 0; i < items.size(); ++i) { TextBlock item = items.valueAt(i); if (item != null && item.getValue() != null) { Log.d("OcrDetectorProcessor", "Text detected! " + item.getValue()); sb.append(item.getValue()+"\n"); } OcrGraphic graphic = new OcrGraphic(ocrGraphicOverlay, item); ocrGraphicOverlay.add(graphic); } tvOcrResult.post(new Runnable() { @Override public void run() { tvOcrResult.setText(sb.toString()); } }); } @Override public void release() { ocrGraphicOverlay.clear(); } }