2

私はAndroid環境が初めてで、ソフトウェア開発プロジェクトを開始したため、知識が少なすぎます。詳細なヘルプが必要です。

問題の詳細:

プロジェクトは github Robert m.theis からの ANDROID OCR コード ソースにあります

現在、その結果は-書かれたテキストの画像を取得している間、tesseractエンジンをテキストとして使用して非常に正確な出力を取得し、インターネットで検索します。

私の仕事は - テキスト文字列 (数字) を使用して、電話オペレーターに電話します。私のプロジェクト名は自動モバイル カード再充電システムです。

そのため、OcrResult.java というメソッド getText() クラスから結果テキストを取得し、自分のアクティビティに入れました。しかし、これが実際のデバイスで機能しない理由はわかりません。

ビルドしてエミュレーターで実行しますが、実際のデバイスでは少なくともメッセージを表示する必要があります! しかし、そうではありません。

また、アクティビティ android:name="edu.sfsu.cs.orange.ocr.call.CallManager" の下に (天使のブレースはここではリムーバーです) として manifest.xml ファイルに追加しました

アプリケーションの使用権限の下で android:name="android.permission.CALL_PHONE"

ここに私のコードは

package edu.sfsu.cs.orange.ocr.call;
import edu.sfsu.cs.orange.ocr.OcrResult;
import edu.sfsu.cs.orange.ocr.CaptureActivity;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class CallManager extends Activity
 {

  public static final String preString = "*111*";
  public static final String postString = "#";

  //to store retrieved digits
  String finalString;

  //to get text result from ocr result
  OcrResult getStringResult = new OcrResult();
  String middleString  = getStringResult.getText();

  //if it fails to scan desired digit,call the process again
  CaptureActivity tryProcessAgain = new CaptureActivity();


  public void onCreate(Bundle savedInstanceState) 
  {
      super.onCreate(savedInstanceState);
  }

  public void setString(String  x)
    {
      middleString = x;
    }

  public String getString( String toBeInserted)
    {

      if(toBeInserted.length() == 16)
       {

         int counter = 0;
         char [] insertHere  = new char[16];

         for(int verifier = 0; verifier < 16; verifier ++)
          {
            insertHere[verifier] = toBeInserted.charAt(verifier);
            if(!Character.isDigit(insertHere[verifier]))
                 {
                   break;
                 }
            counter ++;
          }

         if(counter == 16)
          {

            finalString = preString + toBeInserted + postString;
            return finalString;
          }

         else
          {
           // @SuppressWarnings("unused")
            //Toast toast = Toast.makeText(this, " number scan invalid.....OCR failed. Please try again.", Toast.LENGTH_SHORT);
            //toast.show();
            return middleString;
          }
       }

         else
         {
            //@SuppressWarnings("unused")
            //Toast toast = Toast.makeText(this, " number scannin invalid...OCR failed. Please try again.", Toast.LENGTH_SHORT);
            //toast.show();
           return middleString;
         }
    }


  public void CallToOperator(String callMe)
  {
      Toast toast = Toast.makeText(this,finalString,Toast.LENGTH_SHORT);
      toast.show();
      //Toast toast1 = Toast.makeText(this,middleString,Toast.LENGTH_SHORT);
      //toast1.show();



      if(callMe == finalString)
        {
          try 
          {
            startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + finalString)));
          }
          catch (Exception e) 
          {
            e.printStackTrace();
          }
        }

        else
        {
            tryProcessAgain.onShutterButtonPressContinuous();
        }

  }

 }
4

0 に答える 0