0

Google의 텍스트 인식 API를 사용하여 카메라를 사용하여 텍스트를 인식해야합니다. 코드를 다운로드하면 완벽하게 작동합니다. 그러나 저는 글로벌 변수에 저장된 특정 단어를 식별해야하는 프로젝트를 개발 중입니다. 단어가 식별되면 다른 활동을 시작하는 데 문제가 있습니다. 내가 다른 활동을 시작하려고하면OCR Android : 시작하는 동안 오류가 발생했습니다.

import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.util.SparseArray; 

import com.google.android.gms.samples.vision.ocrreader.ui.camera.GraphicOverlay; 
import com.google.android.gms.vision.Detector; 
import com.google.android.gms.vision.text.TextBlock; 

/** 
* A very simple Processor which gets detected TextBlocks and adds them to the overlay 
* as OcrGraphics. 
* TODO: Make this implement Detector.Processor<TextBlock> and add text to the GraphicOverlay 
*/ 
public final class OcrDetectorProcessor extends Activity implements Detector.Processor<TextBlock> { 


private GraphicOverlay<OcrGraphic> mGraphicOverlay; 

OcrDetectorProcessor(GraphicOverlay<OcrGraphic> ocrGraphicOverlay, String word) { 


    // System.out.println("VARIAVEIL GLOBAL no detector:" + word); 
    // System.out.println("VARIAVEIL GLOBAL no detector da classe:" +s); 
    mGraphicOverlay = ocrGraphicOverlay; 
    // String lala = receiveDetections(ocrGraphicOverlay); 


} 



    @Override 
public void receiveDetections(Detector.Detections<TextBlock> detections) { 


    mGraphicOverlay.clear(); 
    System.out.println("CLEAR : " + mGraphicOverlay); 
    SparseArray<TextBlock> items = detections.getDetectedItems(); 
    for (int i = 0; i < items.size(); ++i) { 
     TextBlock item = items.valueAt(i); 
     if (item != null && item.getValue() != null) { 
      Log.d("Processor", "Text detected! " + item.getValue()); 

      String letra = item.getValue(); 

      // get 
     // String s = ((MyApplication) this.getApplication()).getSomeVariable(); 

      // System.out.println("Variavei global : "+s); 

      /*if(letra.equals(palavra)) 
      { 
       System.out.println("LETRA : " +letra); 
       System.out.println("LETRA IDENTIFICADA"); 
      }*/ 

       Intent intent = new Intent(getApplicationContext(),Resultado.class); 
       startActivity(intent); 

    } 

     OcrGraphic graphic = new OcrGraphic(mGraphicOverlay, item); 
     mGraphicOverlay.add(graphic); 
    } 
} 

private String PalavraGerada() { 
    System.out.println("Veio no palavra gerada"); 

    // get 
    String s = ((MyApplication) this.getApplication()).getSomeVariable(); 
    return s; 
} 

@Override 
public void release() { 

    mGraphicOverlay.clear(); 
} 



} 

, 나는 다음과 같은 오류 얻을 :

11-03 13:23:14.347 21422-21852/com.google.android.gms.samples.vision.barcodereader E/OpenCameraSource: Exception thrown from receiver. 
                            java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference 
                             at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:106) 
                             at com.google.android.gms.samples.vision.ocrreader.OcrDetectorProcessor.receiveDetections(OcrDetectorProcessor.java:76) 
                             at com.google.android.gms.vision.Detector.receiveFrame(Unknown Source) 
                             at com.google.android.gms.samples.vision.ocrreader.ui.camera.CameraSource$FrameProcessingRunnable.run(CameraSource.java:1209) 
                             at java.lang.Thread.run(Thread.java:818) 

을 실제로 서로를 시작할 필요가 없습니다 여기에 텍스트 인식하게 코드의 일부입니다 활동, 나는 특정 단어와 텍스트 인식을 비교해야합니다. 또한

, 내가 전역 변수의 값을 얻을려고, 나는 다음과 같은 오류 얻을 :

11-03 13:29:18.029 23276-23495/com.google.android.gms.samples.vision.barcodereader E/OpenCameraSource: Exception thrown from receiver. 
                            java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.android.gms.samples.vision.ocrreader.MyApplication.getSomeVariable()' on a null object reference 
                             at com.google.android.gms.samples.vision.ocrreader.OcrDetectorProcessor.receiveDetections(OcrDetectorProcessor.java:66) 
                             at com.google.android.gms.vision.Detector.receiveFrame(Unknown Source) 
                             at com.google.android.gms.samples.vision.ocrreader.ui.camera.CameraSource$FrameProcessingRunnable.run(CameraSource.java:1209) 
                             at java.lang.Thread.run(Thread.java:818) 

정말 그것을 해결하는 방법을 모르겠어요, 난 어떤 도움을 주셔서 감사합니다. 감사합니다.

답변

0

문제는 컨텍스트를 가져올 수 없다는 것입니다. 당신의 방법에서 다음

private Context mContext; 
OcrDetectorProcessor(GraphicOverlay<OcrGraphic> ocrGraphicOverlay, String word. Context context) { 

    mGraphicOverlay = ocrGraphicOverlay; 
    mContext = context; 

} 

처럼 생성자 메서드에 매개 변수로 컨텍스트 개체를 전달하려고

private String PalavraGerada() { 
    System.out.println("Veio no palavra gerada"); 
    //String s = ((MyApplication) this.getApplication()).getSomeVariable(); 
    String s = ((MyApplication)mContext).getSomeVariable(); 
    // or try some other way to get your application. 
    return s; 
} 
관련 문제