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; 
} 
関連する問題