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