package com.example.caliv.ffyy;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Looper;
import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.telecom.Call;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.idl.util.FileUtil;
import com.baidu.ocr.sdk.OCR;
import com.baidu.ocr.sdk.OnResultListener;
import com.baidu.ocr.sdk.exception.OCRError;
import com.baidu.ocr.sdk.model.*;
import com.baidu.ocr.ui.camera.CameraActivity;
import com.baidu.ocr.ui.camera.CameraNativeHelper;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.DataOutputStream;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class AjxxActivity extends AppCompatActivity{
private String response = “”;
private static final int REQUEST_CODE_CAMERA = 102;
private TextView mContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ajxx);
loady();
mContent = (TextView) findViewById(R.id.sfxx);
//身份证识别头像面
findViewById(R.id.btn_sfzsm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(AjxxActivity.this, CameraActivity.class);
intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
FileUtils.getSaveFile(getApplication()).getAbsolutePath());
intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);
startActivityForResult(intent, REQUEST_CODE_CAMERA);
}
});
//车牌识别
findViewById(R.id.btn_cpsm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(AjxxActivity.this, CameraActivity.class);
intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
FileUtils.getSaveFile(getApplication()).getAbsolutePath());
intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_GENERAL);
startActivityForResult(intent, 102);
}
});
// 初始化
initAccessTokenWithAkSk();
}
private void initAccessTokenWithAkSk() {
OCR.getInstance().initAccessTokenWithAkSk(new OnResultListener<AccessToken>() {
@Override
public void onResult(AccessToken accessToken) {
Log.d("AjxxActivity", "onResult: " + accessToken.toString());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(AjxxActivity.this, "初始化认证成功", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onError(OCRError ocrError) {
ocrError.printStackTrace();
Log.e("AjxxActivity", "onError: " + ocrError.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(AjxxActivity.this, "初始化认证失败,请检查 key", Toast.LENGTH_SHORT).show();
}
});
}
}, getApplicationContext(),
// 根据自己的包名,去百度云自行配置
"7DkaaoogXcS77XyHAsT71111",
// 根据自己的包名,去百度云自行配置
"ZENhKFDG7L65XAGtB7pgSxQgsLz1111");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_CAMERA && resultCode == Activity.RESULT_OK) {
if (data != null) {
// 获取调用参数
String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE);
Toast.makeText(AjxxActivity.this, contentType, Toast.LENGTH_SHORT).show();
// 通过临时文件获取拍摄的图片
String filePath = FileUtils.getSaveFile(getApplicationContext()).getAbsolutePath();
if(!TextUtils.isEmpty(contentType)){
if(CameraActivity.CONTENT_TYPE_ID_CARD_FRONT.equals(contentType)){
recIDCard(IDCardParams.ID_CARD_SIDE_FRONT,filePath); // 身份证识别方法
}
if(CameraActivity.CONTENT_TYPE_GENERAL.equals(contentType)){
recCarnum(GeneralBasicParams.CHINESE_ENGLISH,filePath);//车牌识别方法
}
}
}
}
}
/**
*
* 解析身份证图片
*
* @param idCardSide 身份证正反面
* @param filePath 图片路径
*/
private void recIDCard(final String idCardSide, String filePath) {
Log.i("charge ID card", idCardSide);
IDCardParams param = new IDCardParams();
param.setImageFile(new File(filePath));
// 设置身份证正反面
param.setIdCardSide(idCardSide);
// 设置方向检测
param.setDetectDirection(true);
// 设置图像参数压缩质量0-100, 越大图像质量越好但是请求时间越长。 不设置则默认值为20
param.setImageQuality(40);
OCR.getInstance().recognizeIDCard(param, new OnResultListener<IDCardResult>() {
@Override
public void onResult(IDCardResult idCardResult) {
Log.i("charge ID card", String.valueOf(idCardResult));
if (idCardResult != null) {
if (idCardSide.equals("back")) {
String signDate = "";
String expiryDate = "";
String issueAuthority = "";
if (idCardResult.getSignDate() != null) {
signDate = idCardResult.getSignDate().toString();
}
if (idCardResult.getExpiryDate() != null) {
expiryDate = idCardResult.getExpiryDate().toString();
}
if (idCardResult.getIssueAuthority() != null) {
issueAuthority = idCardResult.getIssueAuthority().toString();
}
mContent.setText("签发机关: " + issueAuthority + "\n\n" +
"有效期限: " + signDate + "-" + expiryDate + "\n\n");
}else {
String name = "";
String sex = "";
String nation = "";
String num = "";
String address = "";
if (idCardResult.getName() != null) {
name = idCardResult.getName().toString();
}
if (idCardResult.getGender() != null) {
sex = idCardResult.getGender().toString();
}
if (idCardResult.getEthnic() != null) {
nation = idCardResult.getEthnic().toString();
}
if (idCardResult.getIdNumber() != null) {
num = idCardResult.getIdNumber().toString();
}
if (idCardResult.getAddress() != null) {
address = idCardResult.getAddress().toString();
}
mContent.setText("姓名: " + name + "\n\n" +
"性别: " + sex + "\n\n" +
"民族: " + nation + "\n\n" +
"身份证号码: " + num + "\n\n" +
"住址: " + address + "\n\n");
}
}
}
@Override
public void onError(OCRError ocrError) {
Toast.makeText(AjxxActivity.this, "识别出错,请查看log错误代码", Toast.LENGTH_SHORT).show();
Log.d("AjxxActivity", "onError: " + ocrError.getMessage());
}
});
}
/**
*
* 解析车牌图片
*
* @param idCardSide 车牌号
* @param filePath 图片路径
*/
private void recCarnum(final String idCardSide, String filePath) {
// 车牌识别参数设置
OcrRequestParams param = new OcrRequestParams();
// 设置image参数
param.setImageFile(new File(filePath));
// 设置其他参数
//putParam("detect_direction", true);
OCR.getInstance().recognizeLicensePlate(param, new OnResultListener<OcrResponseResult>() {
@Override
public void onResult(OcrResponseResult ocrResponseResult) {
try {
String cp=ocrResponseResult.getJsonRes().toString();
JSONObject object = new JSONObject(cp);
JSONObject ss=object.getJSONObject("words_result");
String sa=ss.getString("number").toString();//获取车牌号码
String cl=ss.getString("color").toString();//获取车牌颜色
String chepaihao="";
if(cl.equals("blue")){
chepaihao="蓝色";
}
if(cl.equals("green")){
chepaihao="绿色";
}
if(cl.equals("yellow")){
chepaihao="黄色";
}
mContent.setText("车牌号码: " + sa + "\n\n" +
"车牌颜色: " + chepaihao + "\n\n");
} catch (JSONException e) {
Toast.makeText(AjxxActivity.this, "识别出错,请查看log错误代码!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(OCRError ocrError) {
Toast.makeText(AjxxActivity.this, "识别出错,请查看log错误代码!", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
// 释放内存资源
OCR.getInstance().release();
}
//页面加载方法
private void loady(){
final ConnHt connHt=new ConnHt();
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection conn = null;
try{
Intent intent=getIntent();
String paramStr="yhm="+ URLEncoder.encode(intent.getStringExtra("yhm"),"utf-8");
response=connHt.sendHttp(conn,Quantity.urlajxxlr,paramStr);
runOnUiThread(new Runnable() {
public void run() {
}
});
if (conn != null) {
conn.disconnect();
}
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
}