Android 完成一个活动,从类中获取字符串类型的结果,并将该结果用于另一个活动
我是android环境的新手,开始了一个软件开发项目,所以我的知识太少了。我需要详细的帮助 问题详情: 该项目基于github Robert m.theis的ANDROID OCR代码源 目前它的结果是——当我拍摄任何书面文本的图像时,它使用tesseract引擎检索相当精确的输出作为文本并在互联网上搜索 我的工作是- 使用文本字符串(数字)并呼叫电话接线员。 我的项目名称是自动移动卡充值系统Android 完成一个活动,从类中获取字符串类型的结果,并将该结果用于另一个活动,android,Android,我是android环境的新手,开始了一个软件开发项目,所以我的知识太少了。我需要详细的帮助 问题详情: 该项目基于github Robert m.theis的ANDROID OCR代码源 目前它的结果是——当我拍摄任何书面文本的图像时,它使用tesseract引擎检索相当精确的输出作为文本并在互联网上搜索 我的工作是- 使用文本字符串(数字)并呼叫电话接线员。 我的项目名称是自动移动卡充值系统 因此,我从名为OcrResult.java的方法getText()类中获取结果文本,并将其放入我自己的
因此,我从名为OcrResult.java的方法getText()类中获取结果文本,并将其放入我自己的活动中。但我不知道为什么这在真实的设备中不起作用 它在模拟器中构建、运行,但在真实设备中至少应该显示消息!但事实并非如此 我还在manifest.xml文件中添加了(此处删除了角括号) 活动中 活动android:name=“edu.sfsu.cs.orange.ocr.call.CallManager” 申请中 使用权限android:name=“android.permission.CALL\u 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();
}
}
}
包edu.sfsu.cs.orange.ocr.call;
导入edu.sfsu.cs.orange.ocr.OcrResult;
导入edu.sfsu.cs.orange.ocr.CaptureActivity;
导入android.app.Activity;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Bundle;
导入android.view.KeyEvent;
导入android.view.SurfaceHolder;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.LinearLayout;
导入android.widget.Toast;
公共类CallManager扩展活动
{
公共静态最终字符串预紧=“*111*”;
公共静态最终字符串postString=“#”;
//存储检索到的数字
弦末弦;
//从ocr结果中获取文本结果
OcrResult getStringResult=新的OcrResult();
字符串middleString=getStringResult.getText();
//如果无法扫描所需的数字,请再次调用该进程
CaptureActivity tryprocessReach=新CaptureActivity();
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
公共无效设置字符串(字符串x)
{
中间字符串=x;
}
公共字符串getString(要插入的字符串)
{
if(toBeInserted.length()==16)
{
int计数器=0;
char[]insertHere=新字符[16];
for(int-verifier=0;verifier<16;verifier++)
{
insertHere[verifier]=toBeInserted.charAt(验证器);
如果(!Character.isDigit(插入[verifier]))
{
打破
}
计数器++;
}
如果(计数器==16)
{
finalString=预串+待插入+后串;
返回最后一环;
}
其他的
{
//@SuppressWarnings(“未使用”)
//Toast Toast=Toast.makeText(此“数字扫描无效…”OCR失败。请重试。”,Toast.LENGTH\u SHORT);
//toast.show();
返回中间字符串;
}
}
其他的
{
//@抑制警告(“未使用”)
//Toast Toast=Toast.makeText(这是“数字扫描无效…OCR失败。请重试。”,Toast.LENGTH\u SHORT);
//toast.show();
返回中间字符串;
}
}
public void CallToOperator(字符串callMe)
{
Toast Toast=Toast.makeText(this,finalString,Toast.LENGTH\u SHORT);
toast.show();
//Toast Toast 1=Toast.makeText(this,middleString,Toast.LENGTH\u SHORT);
//toast1.show();
if(callMe==finalString)
{
尝试
{
startActivity(新的意图(Intent.ACTION_调用,Uri.parse(“tel:+finalString”));
}
捕获(例外e)
{
e、 printStackTrace();
}
}
其他的
{
TryProcessReach.onShutterButtonPressContinuous();
}
}
}
“我不知道为什么这不起作用。”这段代码中有太多问题,至少对我来说,不可能弄清楚到底发生了什么。它甚至不会按原样编译。但是,我怀疑(callMe==finalString)就是问题所在。应该是(callMe.equals(finalString))。首先,请正确格式化代码,以便所有大括号正确对齐,并且所有if语句都正确缩进。例如,if(!Character.isDigit(insertHere[verifier])中断;计数器+++;}它坏了。开口支架在哪里?虽然我的问题没有解决,但西蒙帮助了我,谢谢你!