Android集成人脸识别让你的APP变得高大上


接下来让我带领大家一步一步的实现人脸识别,让你的APP看起来的更加高大上。

1,首先我们需要在一登开发者平台注册一个账号(http://www.superid.me/developer/index.html

2,点击官网右上角我的应用->创建应用,并选择Android

 

3,填写应用信息,填写完成后点击创建应用。

4,创建成功后会继续显示配置指南,这里我使用的是AndroidStudio所以接下来我会展示AS的配置。

5,添加Gradle依赖。

dependencies {
    compile 'com.isnc.facesdk:superid-sdk:1.6.9'
}

如果无法正常集成请添加如下代码 :

allprojects {
    repositories {
        jcenter()
    }
}

6,配置 Manifest

添加权限

<!-- 开启摄像头 -->
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
    <uses-feature android:name="android.hardware.camera.setParameters" android:required="false"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 阅读消息 -->
    <uses-permission android:name="android.permission.READ_SMS" />
    <!-- 接收消息 -->
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <!-- 读写⽂文件 -->
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <!-- 网络状态 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

添加APPID及SECRET(在application节点内部)

<meta-data
            android:name="SUPERID_APPKEY"
            android:value="5d7ce12d10775d6f941be249" />
        <meta-data
            android:name="SUPERID_SECRET"
            android:value="c09185283aff376b3b692edc" />

添加Activity,这些都是一登sdk提供的Activity。

<activity
            android:name="com.isnc.facesdk.aty.Aty_FaceDetect"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Holo.Light.NoActionBar">
        </activity>
        <activity
            android:name="com.isnc.facesdk.aty.Aty_NormalFaceDetect"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Holo.Light.NoActionBar" >
        </activity>
        <activity
            android:name="com.isnc.facesdk.aty.Aty_AgreeItem"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Holo.Light.NoActionBar">
        </activity>        
        <activity
            android:name="com.isnc.facesdk.aty.Aty_Auth"
            android:label="@string/app_name"
            android:screenOrientation="portrait" 
            android:theme="@android:style/Theme.Holo.Light.NoActionBar">
        </activity>        
        <activity
            android:name="com.isnc.facesdk.aty.Aty_EditUserinfo"
            android:label="@string/app_name"
            android:screenOrientation="portrait" 
            android:theme="@android:style/Theme.Holo.Light.NoActionBar">
        </activity>
        <activity
            android:name="com.isnc.facesdk.aty.Aty_ClipPicture"
            android:label="@string/app_name"
            android:screenOrientation="portrait" 
            android:theme="@android:style/Theme.Holo.Light.NoActionBar">
        </activity>
        <activity
            android:name="com.isnc.facesdk.aty.Aty_CountryPage"
            android:label="@string/app_name"
            android:screenOrientation="portrait" 
            android:theme="@android:style/Theme.Holo.Light.NoActionBar">
        </activity>
        <activity
            android:name="com.isnc.facesdk.aty.Aty_SecureEmail"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Holo.Light.NoActionBar">
        </activity>

 7,在onCreate方法里初始化 SDK

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化sdk
        SuperID.initFaceSDK(this);
        //开启Debug模式方便调试(可以不写)
        SuperID.setDebugMode(true);
    }
}

8,在页面上添加按钮用于调用人脸识别

<Button android:layout_width="wrap_content"
            android:text="人脸识别"
            android:id="@+id/mbt"
            android:layout_centerInParent="true"
            android:layout_height="wrap_content"/>

9,给按钮添加点击事件,用来调用人脸识别功能。

 //给按钮添加点击事件
        findViewById(R.id.mbt).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //调用SuperID.faceLogin(this)执行刷脸登录,
                // 若用户未绑定授权一登账号,则此接口会跳转到绑定授权步骤。
                SuperID.faceLogin(MainActivity.this);
            }
        });

10,重写onActivityResult方法并在内部对返回的数据进行操作,将用户名获取并显示。

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (resultCode) {
            case SDKConfig.AUTH_SUCCESS:
                //openid 为开发者应用生成的openid,若调用faceLogin(Context context)进行注册授权,则系统将会自动生成一个openid
                mOpenid = Cache.getCached(this, SDKConfig.KEY_OPENID);
                // userInfo 为SuperID用户信息,格式为json
                mUserInfo = Cache.getCached(this, SDKConfig.KEY_APPINFO);
                Toast.makeText(this, "授权成功", Toast.LENGTH_SHORT).show();
                break;
            case SDKConfig.LOGINSUCCESS:
                //openid 为开发者应用的openid,若用户在调用faceLogin(Context context)进行注册授权,则系统将会自动生成一个openid,重新登录成功时返回此openid
                mOpenid = Cache.getCached(this, SDKConfig.KEY_OPENID);
                // userInfo 为SuperID用户信息,格式为json
                mUserInfo = Cache.getCached(this, SDKConfig.KEY_APPINFO);
                //在返回的json数据中取出用户名
                //avatar 这是用户头像图片
                //name 这是用户名
                Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
                try {
                    JSONObject jsonObject=new JSONObject(mUserInfo);
                    String name = jsonObject.getString("name");
                    //显示用户名
                    Toast.makeText(this, "欢迎用户:"+name, Toast.LENGTH_SHORT).show();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                break;

            default:
                Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();
                break;
        }
    }

11,结果展示(没有账号的话需要在授权中进行账号创建)

12,后来我又尝试了下获取头像。

如果有哪些不足或者错误的地方,希望大家能帮忙指出大家一起交流进步

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM