2017-11-29 15 views
0

sample Android program에서 기기의 카메라는 com.google.android.gms:play-services-vision 라이브러리를 통해 광학 문자 인식을 수행하는 데 사용됩니다.Google 샘플 Android 코드에서 OCR Detector.Processor에서 데이터를 반환하는 방법

Log.d("OcrDetectorProcessor", "Text detected! " + item.getValue()); 

위의 과정을 OcrCaptureActivity에 의해 시작됩니다 : I 로깅 사용하여 식별되는 텍스트 볼 수 있어요 visionSamples\ocr-codelab\ocr-reader-complete\app\src\main\java\com\google\android\gms\samples\vision\ocrreader\OcrDetectorProcessor.receiveDetections()에서

TextRecognizer textRecognizer.setProcessor(new OcrDetectorProcessor(mGraphicOverlay)); 
CameraSource mCameraSource = new CameraSource.Builder(getApplicationContext(), textRecognizer)/* snip */.build(); 
CameraSourcePreview mPreview = (CameraSourcePreview) findViewById(R.id.preview); 
mPreview.start(mCameraSource, mGraphicOverlay); 

그래서 우리는 "그 위의 설정을 참조 물건 "은 활동을 크랭크 업하는 전형적인 방법이 아닙니다.

이 질문은 다시OcrCaptureActivityOcrDetectorProcessor에서 결과를 공급하는 방법에 관한 것입니다.

나는 OcrCaptureActivity, onActivityResult()를 추가하는 시도했지만 화재하지 않습니다 Activity하지

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.v(TAG, ">>>>>>> OnActivityResult intent: " + data); 
} 

OcrDetectorProcessor 때문에, 단순히 새로운 의도를 작성하고 setResult() 방법을 사용할 수 없습니다.

적절한 시간 (Android 뒤로 버튼을 누를 때)에 실행되는 OcrDetectorProcessor.release() 방법이 있지만 상위 프로세스와 통신하는 방법을 모르겠습니다.

답변

0

일반적으로해야 할 일은 OcrDetectorProcessor에 대한 참조를 저장 한 다음 데이터 검색 방법을 작성하고 OcrCaptureActivity에서 호출하는 것입니다.

그래서 '()에서 onCreate'당신이 변경 : 다음

//TextRecognizer textRecognizer.setProcessor(new OcrDetectorProcessor(mGraphicOverlay)); 
mDetectorProcessor = new OcrDetectorProcessor(mGraphicOverlay); 
TextRecognizer textRecognizer.setProcessor(mDetectorProcessor); 

당신의 OcrDetectorProcessor 수업 시간에, 원하는 인스턴스 변수 반환하는 데이터 검색 방법 추가 : 다음

public int[] getResults() { 
    return new int[] {mFoundResults.size(), mNotFoundResults.size()}; 
} 

을 이 방법을 OcrCaptureActivity()에 추가하십시오 :

@Override 
public void onBackPressed() { 
    int[] results = mDetectorProcessor.getResults(); 
    Log.v(TAG, "About to finish OCR. Setting extras."); 
    Intent data = new Intent(); 
    data.putExtra("totalItemCount", results[0]); 
    data.putExtra("newItemCount", results[1]); 
    setResult(RESULT_OK, data); 
    finish(); 
    super.onBackPressed(); // Needs to be down here 
}