在Android App中开发扫描手机号码、电话号码OCR功能,一般有多种方案选择:
1. 调用商业在线OCR接口
2. 集成商业离线OCR SDK
3. 集成开源OCR模块 (若需集成离线识别SDK,可参考https://blog.csdn.net/dieqms/article/details/110313067)
使用商业方案,效果较好,但是对于个人开发或者初创公司费用较高,不能承受。
但是使用开源方案,识别效率和准确性需要花费大量的精力进行优化完善,往往项目周期不能得以保障。
这里介绍一种免费快速集成第三方APP OCR组件的方式,来实现扫描号码功能,快速简单:
首先看下DemoApp
比如上面DemoApp准备集成号码扫描功能,可以调用《号码扫描APP》的组件接口来跳转到《号码扫描》界面
在号码扫描App进行扫描结束后,通过点击“退出扫描”,然后再返回DemoApp界面
这样就在DemoApp中快速实现了号码扫描OCR功能。以下是DemoApp部分参考代码:
public class MainActivity extends ActionBarActivity {
TextView textResult;
Button buttonCall;
TextView textNum;
CheckBox checkBox;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if(resultCode == RESULT_OK) {
textNum.setText(data.getStringExtra("result"));
}
break;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textResult = (TextView)this.findViewById(R.id.textViewResult);
textNum = (TextView)this.findViewById(R.id.textViewNum);
buttonCall = (Button)this.findViewById(R.id.buttonCall);
checkBox = (CheckBox)this.findViewById(R.id.checkBoxMultiScan);
buttonCall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_VIEW);
String packageName = "com.dieqms.numscan";
String className = "com.dieqms.numscan.MainActivity";
intent.setClassName(packageName, className);
Bundle bundle = new Bundle();
bundle.putString("msg", "CallNumScan");
if (checkBox.isChecked())
bundle.putString("type", "multi");
else
bundle.putString("type", "single");
intent.putExtras(bundle);
intent.putExtra("pid", android.os.Process.myPid());
intent.putExtra("uid", android.os.Process.myUid());
startActivityForResult(intent, 1);
}
});
}
以上就是通过Intent 调用《号码扫描APP》扫描功能的参考代码。
DemoApp源码已放到网盘:
链接: https://pan.baidu.com/s/1L3qlnQqgbG4WEVVQbqUUKg 提取码: 2qc3