概述
public class FacesSet {
private static FacesSet instance = null;
private Set<String> faceNames = new HashSet<String>();
private FacesSet(){}
public static FacesSet createInstance(){
synchronized (FacesSet.class.getClass()){
if(instance == null){
instance = new FacesSet();
}
return instance;
}
}
public static FacesSet getInstance() {
return instance;
}
public static void setInstance(FacesSet instance) {
FacesSet.instance = instance;
}
public Set<String> getFaceNames() {
return faceNames;
}
public void setFaceNames(Set<String> faceNames) {
this.faceNames = faceNames;
}
}
首先新建一个存取面部信息类的单例模式
//TODO: 视频流读取到会员信息时发生交互,如打招呼
if (msg_id.equals("FACE_DETECT_FACE_LIST_NTF")){
FacesSet mySet = FacesSet.createInstance();
JSONArray arr = jsonObject.getJSONArray("face_list");
JSONObject face_list = (JSONObject) arr.get(0);
JSONObject face_recg = face_list.getJSONObject("face_recg");
String face_name = face_recg.getString("name");
if (!face_name.equals(mySet.getFaceNames().toString())){
flag = true;
}
if(flag){
tts.startSpeaking("很高兴见到你啊," + face_name + "请问需要什么帮助呢?", new OnSpeakListener() {
@Override
public void onSpeakBegin() {
Log.d("startSpeaking", "startSpeaking");
}
@Override
public void onCompleted() {
Log.d("startSpeaking", "onCompleted");
}
});
Set<String> faceNames = new HashSet<>();
faceNames.add(face_name);
mySet.setFaceNames(faceNames);
flag = false;
}
定义一个全局变量flag=true,每运行此代码块会优先判断传入face_name是否与之前传入并置入哈希表中的数据相等,若相等,则弹出,若不相等,则重置flag为true,再次执行本代码块。
可以忽略重复读入相同数据的影响。
最后
以上就是魔幻棒棒糖为你收集整理的关于解决多次接收相同条件,如何只运行一次if条件语句的简单问题的全部内容,希望文章能够帮你解决关于解决多次接收相同条件,如何只运行一次if条件语句的简单问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复