官网创建应用,别忘记使用程序包名
1,去官网下载sdk压缩包 http://ai.baidu.com/sdk
2. (必须)将下载包libs目录中的ocr-sdk.jar文件拷贝到工程libs目录中,并加入工程依赖。
3. (必须)将libs目录下armeabi,arm64-v8a,armeabi-v7a,x86文件夹按需添加到android studio工程src/main/jniLibs
目录中, eclipse用户默认为libs 目录。
4.使用UI模块,在Android studio中以模块方式导入下载包中的ocr-ui文件夹。
5.在工程AndroidManifest.xml文件中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
6.官方集成步骤:http://ai.baidu.com/docs#/OCR-Android-SDK/top
自己写的demo,主activity里面的代码贴在下面;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
initAccessToken();
}
@OnClick(R.id.start)
public void onClick() {
// 开启相机
if (!checkTokenStatus()) {
return;
}
Intent intent = new Intent(MainActivity.this, CameraActivity.class);
intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
FileUtil.getSaveFile(getApplication()).getAbsolutePath());
intent.putExtra(CameraActivity.KEY_CONTENT_TYPE,
CameraActivity.CONTENT_TYPE_GENERAL);
startActivityForResult(intent, REQUEST_CODE_GENERAL);
}
private void initAccessToken() {
OCR.getInstance().initAccessToken(new OnResultListener<AccessToken>() {
@Override
public void onResult(AccessToken accessToken) {
String token = accessToken.getAccessToken();
hasGotToken = true;
}
@Override
public void onError(final OCRError error) {
error.printStackTrace();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "licence方式获取token失败"+error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}, getApplicationContext());
}
private boolean checkTokenStatus() {
if (!hasGotToken) {
Toast.makeText(getApplicationContext(), "token还未成功获取", Toast.LENGTH_LONG).show();
}
return hasGotToken;
}
@Override
public void onRequestPermissionsResult(int requestCode,String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
initAccessToken();
} else {
Toast.makeText(getApplicationContext(), "需要android.permission.READ_PHONE_STATE", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_GENERAL && resultCode == Activity.RESULT_OK) {
RecognizeService.recGeneral(FileUtil.getSaveFile(getApplicationContext()).getAbsolutePath(),
new RecognizeService.ServiceListener() {
@Override
public void onResult(String result) {
BeanResutl beanResutl = new Gson().fromJson(result, BeanResutl.class);
mEnd.setText("识别结果:"+beanResutl.getWords_result().get(0).getWords());
}
});
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 释放内存资源
OCR.getInstance().release();
}