当前位置: 首页 > news >正文

桂林景区网站建设策划方案网站建设指标

桂林景区网站建设策划方案,网站建设指标,拨打12355可以找团员密码吗,企业服务账号怎么查询说明#xff1a; 此文使用华为SDK、百度SDK、百度在线API三种方式实现。 一、使用华为SDK实现身份证识别#xff1a; 说明#xff1a;免费#xff0c;不需要联网。 1.AndroidManifest.xml添加权限#xff1a;uses-permission android:nameandroid.permissio…说明 此文使用华为SDK、百度SDK、百度在线API三种方式实现。 一、使用华为SDK实现身份证识别 说明免费不需要联网。 1.AndroidManifest.xml添加权限uses-permission android:nameandroid.permission.INTERNET / uses-permission android:nameandroid.permission.CAMERA/ uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE/ uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE/uses-feature android:nameandroid.hardware.camera / uses-feature android:nameandroid.hardware.camera.autofocus / 2. 工程根目录build.gradle buildscript {repositories {//...省略之前配的其他地址maven { url https://developer.huawei.com/repo/ }}dependencies {//...省略之前配的其他地址classpath com.huawei.agconnect:agcp:1.6.0.300} }allprojects {repositories {//...省略之前配的其他地址maven { url https://developer.huawei.com/repo/ }} } 3.工程/app/build.gradle//...省略之前配的其他地址 apply plugin: com.huawei.agconnect android {//...省略之前配的其他地址packagingOptions {exclude lib/arm64-v8a/libmsoptimize.so} } dependencies {//...省略之前配的其他地址implementation com.huawei.hms:ml-computer-card-icr-cn:2.0.3.303implementation com.huawei.hms:ml-computer-vision-ocr:2.0.5.301implementation com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.5.301implementation com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.5.301implementation com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.5.301implementation com.huawei.hms:ml-computer-card-gcr-plugin:2.0.1.301 } 4.调用身份证SDK(1)身份证识别业务类 public class HWIDCardScanBiz {private static HWIDCardScanBiz I;public static HWIDCardScanBiz I() {if (I null) {I new HWIDCardScanBiz();}return I;}/*** 打开身份证识别页调用之前要申请蓝牙动态权限*/public void startIDCardScanActivity(Context context, IDCardScanCallback callback) {MLCnIcrCaptureConfig config new MLCnIcrCaptureConfig.Factory().setFront(true).create();MLCnIcrCapture icrCapture MLCnIcrCaptureFactory.getInstance().getIcrCapture(config);icrCapture.capture(new HWIDScanCallback(callback), context);}private class HWIDScanCallback implements MLCnIcrCapture.CallBack {private IDCardScanCallback callback;public HWIDScanCallback(IDCardScanCallback callback) {this.callback callback;}/*** 识别成功回调*/Overridepublic void onSuccess(MLCnIcrCaptureResult result) {if (result null) {Toast.makeText(XApp.Companion.getContext(), 识别失败, Toast.LENGTH_SHORT);return;}if (callback ! null) {IDCardInfo info new IDCardInfo(result.name, result.sex, result.nation, result.birthday, result.address, result.idNum, result.authority, result.validDate, result.sideType);callback.onIDCardResult(info);}}Overridepublic void onCanceled() {}Overridepublic void onFailure(int retCode, Bitmap bitmap) {Toast.makeText(XApp.Companion.getContext(), 识别失败, Toast.LENGTH_SHORT);}Overridepublic void onDenied() {}}public interface IDCardScanCallback {void onIDCardResult(IDCardInfo result);} } (2)调用识别业务类更新UI HWIDCardScanBiz.I().startIDCardScanActivity(context, new HWIDCardScanBiz.IDCardScanCallback() {Overridepublic void onIDCardResult(IDCardInfo result) {/* result.name: 姓名 result.sex性别 result.nation国籍 result.birthday生日 result.address地址 result.idNum身份证号 result.validDate有效期*/} }); 二、使用百度云SDK实现身份证识别 说明免费额度个人帐户每月1千次/企业帐户每月2千次要联网。 1.添加配置 (1)AndroidManifest.xml添加权限uses-permission android:nameandroid.permission.INTERNET / uses-permission android:nameandroid.permission.CAMERA/ uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE/ uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE/uses-feature android:nameandroid.hardware.camera / uses-feature android:nameandroid.hardware.camera.autofocus / (2)proguard-rules.pro添加混淆例外-keep class com.baidu.ocr.sdk.**{*;} -dontwarn com.baidu.ocr.** (3)将ocrsdk.aar放入工程根\app\libs目录下。(4)将ocr_ui模块工程放入工程根目录下在settings.gradle中添加导入模块工程的配置include :app, ocrsdk, ocr_ui (5)工程/app/build.gradle导入ocrsdk.aar与ocr_ui模块工程//...省略之前配的其他地址 dependencies {//...省略之前配的其他地址implementation(name: ocrsdk, ext: aar)implementation project(path: :ocr_ui) } 2.调用代码实现身份证识别 第1步调用SDK方法获取token 第2步调用SDK方法打开身份证识别界面 第3步在调用的Activity的onActivityResult中调用SDK识别图片中的身份信息。调用身份证SDK业务类public class BDIDCardScanBiz {public static final int REQUEST_CODE_CAMERA 100;private boolean mHasGotToken;private static BDIDCardScanBiz I;public static BDIDCardScanBiz I() {if (I null) {I new BDIDCardScanBiz();}return I;}/*** 第1步调用此方法获取token*/public void getAccessToken() {OCR.getInstance(App.getContext()).initAccessTokenWithAkSk(new OnResultListener() {Overridepublic void onResult(Object o) {AccessToken accessToken (AccessToken) o;String token accessToken.getAccessToken();mHasGotToken true;}Overridepublic void onError(OCRError error) {// 调用失败返回OCRError子类SDKError对象}}, App.getContext(), Zxuz7GjLGsjBna44UjOQPVJv, teLf4S7EjI5fjIshagZoovRSKlZSfPwM);}/*** 第2步调用此方法打开身份证识别界面*/public void startIDCardScanActivity(Activity act) {if (!PermissionUtil.checkCameraPermission(act)) return;Intent intent new Intent(act, CameraActivity.class);intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,FileUtils.getSaveFile(App.getContext()).getAbsolutePath());intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);act.startActivityForResult(intent, REQUEST_CODE_CAMERA);}/*** 第3步在onActivityResult中调此方法获取身份证信息*/public void handlerData(String contentType) {if (TextUtils.isEmpty(contentType)) return;String filePath FileUtils.getSaveFile(App.getContext()).getAbsolutePath();if (CameraActivity.CONTENT_TYPE_ID_CARD_FRONT.equals(contentType)) {recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath);} else if (CameraActivity.CONTENT_TYPE_ID_CARD_BACK.equals(contentType)) {recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath);}}private void recIDCard(String idCardSide, String filePath) {IDCardParams param new IDCardParams();param.setImageFile(new File(filePath));// 设置身份证正反面param.setIdCardSide(idCardSide);// 设置方向检测param.setDetectDirection(true);// 设置图像参数压缩质量0-100, 越大图像质量越好但是请求时间越长。 不设置则默认值为20param.setImageQuality(20);param.setDetectRisk(true);OCR.getInstance(App.getContext()).recognizeIDCard(param, new OnResultListenerIDCardResult() {Overridepublic void onResult(IDCardResult result) {if (result ! null) {//获取身份信息}}Overridepublic void onError(OCRError error) {}});} } 三、使用百度云API实现身份证识别 说明免费额度个人帐户每月1千次/企业帐户每月2千次要联网。 1.AndroidManifest.xml添加权限 同上面两种 2.调用代码实现身份证识别 第1步调用百度API获取token public static String getToken() {String url https://aip.baidubce.com/oauth/2.0/token?client_id Config.CLIENT_ID client_secret Config.CLIENT_SECRET grant_typeclient_credentials;if (!NetHelp.getCurConnectStatus()) {return null;}Response response null;try {Request request new Request.Builder().url(url).get().build();LogUtils.d(getToken request url : url);response httpClient.newCall(request).execute();} catch (IOException e) {LogUtils.d(getToken request exception: e.getMessage());e.printStackTrace();return null;}LogUtils.d(getToken response isSuccessful: response.isSuccessful());if (response ! null response.isSuccessful()) {try {String strRecData response.body().string();LogUtils.d(getToken response body: strRecData);if (strRecData ! null strRecData.length() 2) {JSONObject jsonObj new JSONObject(strRecData);if (jsonObj ! null !jsonObj.isNull(access_token)) {return jsonObj.getString(access_token);}}return response.body().string();} catch (Exception e) {LogUtils.d(getToken response parse exception: e.getMessage());e.printStackTrace();return null;}}return null;} 第2步调用系统相机拍身份证照片可以自已实现带身份证头像框的拍照功能界面更加美观 /*** 调起系统相机进行拍照此步可以自已实现拍照功能界面更美观*/public void startIDCardScanActivity(Activity act) {Log.i(IDCard, IDCard startIDCardScanActivity );Intent intent new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if (intent.resolveActivity(act.getPackageManager()) ! null) {act.startActivityForResult(intent, REQUEST_CODE_CAMERA);}} 第3步在onActivityResult中将图片上传百度API获取身份证信息 /*** 解析身份证图片获取身份信息*/public void handlerData(Activity act, Intent data, IDCardScanCallback callback) {new Thread() {Overridepublic void run() {Bundle bundle data.getExtras();Log.i(IDCard, IDCard handlerData bundle : bundle);if (bundle null) return;Bitmap bitmap (Bitmap) bundle.get(data);Log.i(IDCard, IDCard handlerData bitmap : bitmap);if (bitmap null) return;File file new File(App.getContext().getCacheDir(), System.currentTimeMillis() .jpeg);if (!file.getParentFile().exists()) file.mkdirs();try {FileOutputStream out new FileOutputStream(file);bitmap.compress(Bitmap.CompressFormat.JPEG, 80, out);out.flush();out.close();Log.i(IDCard, IDCard saveBitmap filePath: file.getAbsolutePath() fileLen: file.length());} catch (IOException ex) {ex.printStackTrace();}String filePath file.getAbsolutePath();Log.i(IDCard, IDCard parseImage filePath: filePath);final IDCardInfo info HttpHelp.getIDCard(new File(filePath));if (info ! null callback ! null) {act.runOnUiThread(() - callback.onIDCardResult(info));}}}.start();} public static IDCardInfo getIDCard(File file){if (!NetHelp.getCurConnectStatus() || file null || file.length() 0){return null;}String accessToken getToken();if (TextUtils.isEmpty(accessToken)) return null;String url https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token accessToken;String img null;try {img FileUtils.base64File(file);} catch (Exception e) {e.printStackTrace();}if (TextUtils.isEmpty(img)) return null;Response response null;try {FormBody.Builder builder new FormBody.Builder().add(id_card_side, front).add(image, img);Request request new Request.Builder().url(url).post(builder.build()).build();LogUtils.d(getIDCard request url : url img: img);response httpClient.newCall(request).execute();} catch (IOException e) {LogUtils.d(getIDCard request exception: e.getMessage());e.printStackTrace();return null;}LogUtils.d(getIDCard response isSuccessful: response.isSuccessful());if (response ! null response.isSuccessful()) {try {String strRecData response.body().string();LogUtils.d(getIDCard response body: strRecData);if (strRecData ! null strRecData.length() 2) {JSONObject rootObj new JSONObject(strRecData);if (rootObj ! null !rootObj.isNull(words_result)) {JSONObject wordObj rootObj.getJSONObject(words_result);IDCardInfo info new IDCardInfo();if (!wordObj.isNull(姓名) !wordObj.getJSONObject(姓名).isNull(words)) {info.name wordObj.getJSONObject(姓名).getString(words);}if (wordObj ! null !wordObj.isNull(民族) !wordObj.getJSONObject(民族).isNull(words)) {info.nation wordObj.getJSONObject(民族).getString(words);}if (wordObj ! null !wordObj.isNull(住址) !wordObj.getJSONObject(住址).isNull(words)) {info.address wordObj.getJSONObject(住址).getString(words);}if (wordObj ! null !wordObj.isNull(公民身份号码) !wordObj.getJSONObject(公民身份号码).isNull(words)) {info.idNum wordObj.getJSONObject(公民身份号码).getString(words);}if (wordObj ! null !wordObj.isNull(出生) !wordObj.getJSONObject(出生).isNull(words)) {info.birthday wordObj.getJSONObject(出生).getString(words);}if (wordObj ! null !wordObj.isNull(性别) !wordObj.getJSONObject(性别).isNull(words)) {info.sex wordObj.getJSONObject(性别).getString(words);}LogUtils.d(getIDCard response parse IDCardInfo: info.toString());return info;}}} catch (Exception e) {LogUtils.d(getIDCard response parse exception: e.getMessage());e.printStackTrace();return null;}}return null;}
http://www.zqtcl.cn/news/902801/

相关文章:

  • 网站托管费用多少网站的开发流程
  • 周到的商城网站建设北京品牌网站
  • 网站开发费用属于什么科目网站建设考试多选题
  • c asp做网站wordpress4.5.2文章采集
  • 百度网站建设电话建立网站站建设可以吗
  • 网站后台代码在哪修改网站如何做下一页
  • 网站开发职业要求百度推广代理商与总公司的区别
  • 西安网站建设中心网页 网 址网站区别
  • 技术支持东莞网站建设机械seo岗位是什么意思
  • 做商城网站需要备案什么域名硬件开发工具有哪些
  • 网络网站制作技巧wordpress全文
  • 韩国原生ip站群服务器左右悬停代码网站
  • 专门做广东11选5的网站网站 备案 营业执照
  • 免费扑克网站wordpress弹出服务协议窗口
  • 网站的反爬一般怎样做网站右键屏蔽
  • 茂名做网站dyiee青岛宣传片制作公司
  • 凡科网可以自己做网站吗编程常用网站
  • 做网站练手项目公司营业执照可以做几个网站
  • 聚通达网站建设网站并发要求
  • 网站建设预算申请如何写服装店网页设计素材
  • 做网站设计的公司柳州芜湖又出现一例
  • 重庆网站网站建设东莞市网站建设公司哪家好
  • php做网站如何架构wordpress 排版
  • wordpress免费网站模板下载地址在北京注册公司需要多少钱
  • 做的网站打不开高端网站名字
  • 个人网站建设报告西安网站开发高端网站开发
  • “网站建设:上海珍岛”网站备案信息查询系统
  • 北京哪个公司做网站专业建站培训
  • 郑州知名网站推广网站管理设置
  • 建设工程网站资质人员查询常州模板网站建设价格