美文网首页
人脸识别考勤app

人脸识别考勤app

作者: 苏星_ | 来源:发表于2018-12-29 11:22 被阅读0次

        这次安卓课程设计选择的题目是人脸识别考勤系统,这个题目要求调用人脸识别api来完成用户的注册和签到功能,写这篇博客的时候已经完成了大部分功能,现在记录一下在这次课程设计中所踩的坑和解决方法。

(一)android中调用api的坑

        这次设计中用的是百度人脸识别api,而服务端的SDK中有各种常用语言的接口,但是安卓端需要验证,所以决定用Java的SDK,百度也提供了实例代码,在文档中心有下载,但在安卓中使用这些接口不仅仅是new class这么简单:

1.调用相关权限

        在安卓API 23之前的版本都是自动获取权限,而从 Android 6.0 开始添加了权限申请的需求,更加安(keng)全(die)。

        首先要在AndroidManifest.xml文件中申明所需权限:

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.CAMERA" />

注意要在<application 前申明

然后一定要在onCreate()函数中申明所需要申请的权限(这里封装成了一个requestAllPower函数,并申请两个权限,如要申请多个可以在ActivityCompat.requestPermissions()函数里增加):

public void requestAllPower() {

        if (ContextCompat.checkSelfPermission(this,

                Manifest.permission.WRITE_EXTERNAL_STORAGE)

                != PackageManager.PERMISSION_GRANTED) {

            if (ActivityCompat.shouldShowRequestPermissionRationale(this,

                    Manifest.permission.WRITE_EXTERNAL_STORAGE)) {

            } else {

                ActivityCompat.requestPermissions(this,

                        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,

                                Manifest.permission.READ_EXTERNAL_STORAGE}, 1);

            }

        }

    }

这样在app运行时会自动弹出请求权限窗口

(二)获取文件真实路径

        在获取了相关权限后,想要顺利调用百度AI接口还需要上传照片,而百度提供的示例代码需要传入文件的url,这就需要获取照片的路径,但是在实际使用中获取的路径有两种情况,一种就是获取了可以直接使用的,而当用户自己创建了临时读写的储存空间时(例如调用相机拍照存在特定的位置)获取的路径是不能直接使用的,在搜索后发现了解决方法,调用后可直接获取真实路径:

private String getRealPathFromURI(Uri contentUri) {

Uri uri = contentUri;

String[] proj = { MediaStore.Images.Media.DATA };

Cursor actualimagecursor = managedQuery(uri,proj,null,null,null);

int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

actualimagecursor.moveToFirst();

String img_path = actualimagecursor.getString(actual_image_column_index);

return  img_path;

}

然后通过将图片转为BASE64编码,通过POST请求将图片和相关参数传递给百度提供的地址,即可完成调用。

(三)解析JSON数据

        在解析百度传回来的JSON数据时遇到了问题,只能解析一层不能解析多层,在网上搜索到了一个比较简单的解决方法:

JSONObject jsonObj =new JSONObject(result);

JSONObject result1 = (JSONObject)jsonObj.getJSONObject("result");

JSONArray Jarray  = result1.getJSONArray("user_list");

JSONObject result2 =null;

for (int i =0; i < Jarray.length(); i++)

{

result2 = Jarray.getJSONObject(i);

}

error_msg = jsonObj.optString("error_msg");

user_id = result2.optString("user_id");

score = result2.optString("score");

总结

这次课设历时三天完成,基本实现了功能,代码已经上传到Github,调用百度AI接口需要更改为自己的access_token。

相关文章

  • 人脸识别考勤app

    这次安卓课程设计选择的题目是人脸识别考勤系统,这个题目要求调用人脸识别api来完成用户的注册和签到功能,写这篇博客...

  • 2020-06-09

    云卡通人脸识别系统含盖:动态人脸识别门禁管理系统、动态人脸识别消费系统、动态人脸识别考勤系统。其中动态人脸识别消费...

  • 2020-07-28

    一、人脸识别系统具有广泛的应用:包括人脸识别出入管理系统、人脸识别门禁考勤系统、人面识别消费管理系统、人脸识别通道...

  • 人脸识别门禁考勤软件组织

    人脸识别门禁考勤软件组织 人脸识别门禁考勤软件主要由摄像机、控制器、人脸识别分析仪、显示几部分组成。是一种实时...

  • 人脸识别软件视频监控管理平台

    1、人脸识别考勤 人脸识别考勤机是一种新型的存储类考勤机,事先只需采集员工的面像并建立档案,当员工上下班站在人脸识...

  • 2020-06-11

    食堂人脸识别消费系统解决方案 一、人脸识别系统具有广泛的应用:包括人脸识别出入管理系统、人脸识别门禁考勤系统、人面...

  • 人脸识别系统解决方案,动态人脸识别考勤机开发方案

    人脸识别系统解决方案,动态人脸识别考勤机开发方案 [本文由汇新云李先生编辑/智慧考勤机人脸识别应用开发搜索微信:h...

  • 全新打造的人脸识别门禁考勤管理系统

    全新打造的人脸识别门禁考勤管理系统 据外媒报道称,中控博业全新的人脸识别门禁考勤管理系统颠覆了企业传统考勤模式...

  • 需求分析说明书

    一、需求概述 随着智能化的发展,打卡考勤、二维码考勤、人脸识别考勤、指纹识别考勤等各种新型考勤方式的出现,人工考勤...

  • 中控博业(ZKADMS)iFace701人脸面部识别考勤机

    中控博业(ZKADMS)iFace701人脸面部识别考勤机 iFace701人脸面部识别考勤机产品介绍: ...

网友评论

      本文标题:人脸识别考勤app

      本文链接:https://www.haomeiwen.com/subject/iqlulqtx.html