讯飞线性4麦结合虹软人脸识别demo教程

此仓库主要实现了基于讯飞AIUI语音交互和虹软人脸识别完成的demo库


人脸识别使用方法

1、让你的类实现FacePlugin.FaceDetectionListener 接口;
2、使用 FacePlugin.getInstance().init(context);初始化人脸识别,传入context参数;
3、在初始化完成initComplete回调中配置人脸识别的参数即可开启识别;
4、在faceDetection回调方法中即可收到识人脸识别过程中的信息;

示例如下:
在activity的onCreate方法中初始化和设置回调监听 
public class MainActivity extends AppCompatActivity implements FacePlugin.FaceDetectionListener 
........
........
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       FacePlugin.getInstance().setFaceDetectionListener(this);
       FacePlugin.getInstance().init(this);
}
.........
   @Override
    protected void onDestroy() {
        super.onDestroy();
      //释放人脸识别
        FacePlugin.getInstance().onDestroy();
    }
    @Override
    public void faceDetection(boolean auth, String genderInfo, String face3DAngles, @Nullable String name) {
        Log.i(TAG,"性别:"+genderInfo+"   人脸角度:"+face3DAngles+"   姓名:"+name);
        //识别到之后先暂停识别
        FacePlugin.getInstance().setPause(true);
        name=name==null?"陌生人":name;
        AIUIPlugin.getInstance().speakTTS(name+"欢迎您到访小远机器人,请问我能为您做点什么?",()->{
            Log.i(TAG,"欢迎词播报完毕,执行唤醒");
            AIUIPlugin.getInstance().wakeUPAIUI();
        });
    }

    @Override
    public void initComplete() {
        String path= Environment.getExternalStorageDirectory().getPath() +"/face/register";
        String failed=Environment.getExternalStorageDirectory().getPath()+ "/face/failed";
        Log.i(TAG,"初始化完毕开始注册人脸,人脸注册目录:"+path+"   注册失败目录:"+failed);
//setAlive为是否开启活体检测,path为人脸照片目录,failed为注册人脸失败后照片存放目录
        FacePlugin.BuildConfig config= new FacePlugin.BuildConfig().setAlive(false).setIdentifyNum(2).setFailedPath(failed).setRegisterPath(path);
        FacePlugin.getInstance().setBuildConfig(config);
//设置好后开启人脸识别
        FacePlugin.getInstance().registerFace();
    }

AIUI使用说明

1、实现AIUIPlugin.MessageListener接口用于接收交互中AIUI状态回调;
2、设置AIUI状态、数据 监听 AIUIPlugin.getInstance().setMessageListener(this);
3、使用以下下代码进行初始化(例如在onCreate中调用初始化);

  AIUIPlugin.getInstance().init(context, path,auth);
参数context为上下文;
参数path为资源存放目录,如:ExternalStoragePath() sd卡根目录
参数auth为AIUI授权的auth授权码

4、使用 AIUIPlugin.getInstance().destory(); 释放资源;
5、监听AIUI返回的数据、状态回调

    @Override
    public void handleState(String state) {
        switch (state){
            case "sleep":
                //休眠的时候继续人脸识别
                FacePlugin.getInstance().setPause(false);
                break;
            case "run":
                FacePlugin.getInstance().setPause(true);
                break;
        }
    }

    @Override
    public void handleAceInit(boolean init) {
        if(!init){
            AIUIPlugin.getInstance().speakTTS("请检查是否连接了麦克风",null);
        }
    }

 @Override
    public void handleCommand(String commandKey, String data)     {
        Logger.d("技能名称:"+commandKey+"   技能数据:"+data);
        try {
            JSONObject intentObj=new JSONObject(data);
        switch (commandKey) {
            case "IFLYTEK.weather":
                //天气技能
                Bundle bundle=new Bundle();
                Intent intent=new Intent(Utils.getApp(),WeatherActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra(AIUIPlugin.WEATHER_KEY,data);
                Utils.getApp().startActivity(intent,bundle);
                break;
            case "OS10584953596.yf_move":
                //执行前进后退等指令
                if(intentObj.has("semantic")){
                        JSONObject object=intentObj.getJSONArray("semantic").getJSONObject(0);
                        if(object.has("slots")){
                            JSONObject slots=object.getJSONArray("slots").getJSONObject(0);
                            if(slots.has("normValue")){
                                Logger.d("目标位置:"+slots.getString("normValue"));
                                switch (slots.getString("normValue")){
                                    case "":
                                        //导航具体的位置点,根据该位置获取json文件中目的地

                                        break;
                                }
                            }
                        }
                }

                break;
            case "musicPlayer_smartHome":
        //音乐技能

                break;
            default:
                break;
        }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }



你可能感兴趣的:(讯飞线性4麦结合虹软人脸识别demo教程)