首页>代码> java人脸识别,非常准确哦>/src/com/github/mhendred/face4j/AsyncFaceClient.java
package com.github.mhendred.face4j;

import java.io.File;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;

import com.github.mhendred.face4j.exception.FaceClientException;
import com.github.mhendred.face4j.exception.FaceServerException;
import com.github.mhendred.face4j.model.Namespace;
import com.github.mhendred.face4j.model.Photo;
import com.github.mhendred.face4j.model.RemovedTag;
import com.github.mhendred.face4j.model.SavedTag;
import com.github.mhendred.face4j.model.UserStatus;
import com.github.mhendred.face4j.response.GroupResponse;
import com.github.mhendred.face4j.response.LimitsResponse;
import com.github.mhendred.face4j.response.TrainResponse;
import com.github.mhendred.face4j.response.UsersResponse;

public class AsyncFaceClient implements Serializable {
    private final List<RequestListener> listeners;
    private final FaceClient faceClient;

    public AsyncFaceClient(FaceClient faceClient) {
	this.faceClient = faceClient;
	this.listeners = new LinkedList<RequestListener>();
    }

    public AsyncFaceClient(String apiKey, String apiSecret) {
	this(new DefaultFaceClient(apiKey, apiSecret));
    }

    public void addTag(final String url, final float x, final float y, final int width,
	    final int height, final String uid, final String label, final String taggerId) {
	new Thread() {
	    public void run() {
		try {
		    faceClient.addTag(url, x, y, width, height, uid, label, taggerId);

		    for (RequestListener listener : listeners) {
			listener.onAddTag();
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.ADD_TAG);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.ADD_TAG);
		}
	    }
	}.start();
    }

    public void detect(final File imageFile) {
	new Thread() {
	    public void run() {
		try {
		    Photo photo = faceClient.detect(imageFile);

		    for (RequestListener listener : listeners) {
			listener.onDetect(photo);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.DETECT);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.DETECT);
		}
	    }
	}.start();
    }

    public void detect(final String urls) {
	new Thread() {
	    public void run() {
		try {
		    List<Photo> photos = faceClient.detect(urls);

		    for (RequestListener listener : listeners) {
			listener.onDetect(photos);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.DETECT);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.DETECT);
		}
	    }
	}.start();
    }

    public void facebookGet(final String uids) {
	new Thread() {
	    public void run() {
		try {
		    List<Photo> photos = faceClient.facebookGet(uids);

		    for (RequestListener listener : listeners) {
			listener.onFacebookGet(photos);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.FACEBOOK);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.FACEBOOK);
		}
	    }
	}.start();
    }

    public void getLimits() {
	new Thread() {
	    public void run() {
		try {
		    LimitsResponse response = faceClient.getLimits();

		    for (RequestListener listener : listeners) {
			listener.onGetLimits(response);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.LIMITS);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.LIMITS);
		}
	    }
	}.start();
    }

    public void getNamespace(final String namespace) {
	new Thread() {
	    public void run() {
		try {
		    Namespace response = faceClient.getNamespace(namespace);

		    for (RequestListener listener : listeners) {
			listener.onGetNamespace(response);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.NAMESPACES);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.NAMESPACES);
		}
	    }
	}.start();
    }

    public void getTags(final String pids, final String urls, final String uids,
	    final String order, final String filter, final boolean together, final int limit) {
	new Thread() {
	    public void run() {
		try {
		    List<Photo> photos = faceClient.getTags(pids, urls, uids, order, filter,
			    together, limit);

		    for (RequestListener listener : listeners) {
			listener.onGetTags(photos);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.GET_TAGS);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.GET_TAGS);
		}
	    }
	}.start();
    }

    public void getTags(final String urls, final String uids, final String order,
	    final String filter, final boolean together, final int limit) {
	new Thread() {
	    public void run() {
		try {
		    List<Photo> photos = faceClient.getTags(urls, uids, order, filter, together,
			    limit);

		    for (RequestListener listener : listeners) {
			listener.onGetTags(photos);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.GET_TAGS);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.GET_TAGS);
		}
	    }
	}.start();
    }

    public void group(final File imageFile, final String uids) throws FaceClientException,
	    FaceServerException {
	new Thread() {
	    public void run() {
		try {
		    GroupResponse response = faceClient.group(imageFile, uids);

		    for (RequestListener listener : listeners) {
			listener.onGroup(response);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.GROUP);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.GROUP);
		}
	    }
	}.start();
    }

    public void group(final String urls, final String uids) throws FaceClientException,
	    FaceServerException {
	new Thread() {
	    public void run() {
		try {
		    GroupResponse response = faceClient.group(urls, uids);

		    for (RequestListener listener : listeners) {
			listener.onGroup(response);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.GROUP);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.GROUP);
		}
	    }
	}.start();
    }

    public void namespaces()  {
	new Thread() {
	    public void run() {
		try {
		    List<Namespace> namespaces = faceClient.namespaces();

		    for (RequestListener listener : listeners) {
			listener.onGetNamespaces(namespaces);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.NAMESPACES);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.NAMESPACES);
		}
	    }
	}.start();
    }

    public void recognize(final File imageFile, final String uids) {
	new Thread() {
	    public void run() {
		try {
		    Photo photo = faceClient.recognize(imageFile, uids);

		    for (RequestListener listener : listeners) {
			listener.onRecognize(photo);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.RECOGNIZE);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.RECOGNIZE);
		}
	    }
	}.start();
    }

    public void recognize(final String urls, final String uids) {
	new Thread() {
	    public void run() {
		try {
		    List<Photo> photos = faceClient.recognize(urls, uids);

		    for (RequestListener listener : listeners) {
			listener.onRecognize(photos);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.RECOGNIZE);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.RECOGNIZE);
		}
	    }
	}.start();
    }

    public void removeTags(final String tids)  {
	new Thread() {
	    public void run() {
		try {
		    List<RemovedTag> removedTags = faceClient.removeTags(tids);

		    for (RequestListener listener : listeners) {
			listener.onRemoveTags(removedTags);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.RECOGNIZE);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.RECOGNIZE);
		}
	    }
	}.start();
    }

    public void saveTags(final String tids, final String uid, final String label)
	     {
	new Thread() {
	    public void run() {
		try {
		    List<SavedTag> savedTags = faceClient.saveTags(tids, uid, label);

		    for (RequestListener listener : listeners) {
			listener.onSaveTags(savedTags);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.SAVE_TAGS);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.SAVE_TAGS);
		}
	    }
	}.start();
    }

    public void status(final String uids)  {
	new Thread() {
	    public void run() {
		try {
		    List<UserStatus> userStatuses = faceClient.status(uids);
		    for (RequestListener listener : listeners) {
			listener.onStatus(userStatuses);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.STATUS);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.STATUS);
		}
	    }
	}.start();
    }

    public void train(final String uid)  {
	new Thread() {
	    public void run() {
		try {
		    TrainResponse response = faceClient.train(uid);
		    for (RequestListener listener : listeners) {
			listener.onTrain(response);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.TRAIN);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.TRAIN);
		}
	    }
	}.start();
    }

    public void users(final String namespaces) {
	new Thread() {
	    public void run() {
		try {
		    UsersResponse response = faceClient.users(namespaces);

		    for (RequestListener listener : listeners) {
			listener.onUsers(response);
		    }
		}

		catch (FaceServerException fse) {
		    notifyListeners(fse, FaceApi.USERS);
		} catch (FaceClientException fce) {
		    notifyListeners(fce, FaceApi.USERS);
		}
	    }
	}.start();
    }

    public void addListener(RequestListener listener) {
	listeners.add(listener);
    }

    public void clearFacebookCreds() {
	faceClient.clearFacebookCreds();
    }

    public void clearTwitterCreds() {
	faceClient.clearTwitterCreds();
    }

    public void setAggressive(boolean isAggressive) {
	faceClient.setAggressive(isAggressive);
    }

    public void setFacebookOauth2(String fbUserId, String oauth2Token) {
	faceClient.setFacebookOauth2(fbUserId, oauth2Token);
    }

    public void setTwitterOauth(String oauthUser, String oauthSecret, String oauthToken) {
	faceClient.setTwitterOauth(oauthUser, oauthSecret, oauthToken);
    }

    public boolean isAggressive() {
	return faceClient.isAggressive();
    }

    public FaceClient getFaceClient() {
	return faceClient;
    }

    private void notifyListeners(FaceServerException fse, FaceApi faceApi) {
	for (RequestListener listener : listeners) {
	    listener.onFaceServerException(fse, faceApi);
	}
    }

    private void notifyListeners(FaceClientException fce, FaceApi faceApi) {
	for (RequestListener listener : listeners) {
	    listener.onFaceClientException(fce, faceApi);
	}
    }
}
最近下载更多
2890892945  LV2 2023年12月31日
1529860026  LV24 2023年8月3日
qwdqwdqw  LV3 2022年12月3日
sdkjaskldjaslkj  LV1 2022年11月24日
bruceshen  LV2 2022年9月1日
kiyo0416  LV1 2021年12月12日
木华不是呆瓜  LV2 2021年12月9日
warrior09  LV2 2021年11月19日
张颖齐  LV1 2021年9月17日
yuchunping  LV1 2021年8月17日
最近浏览更多
lipanlong  LV10 2024年12月3日
ifififhhh  LV1 2024年10月19日
zzzyyy1  LV2 2024年10月4日
897258976  LV8 2024年8月29日
疯狂小太阳 2024年6月18日
暂无贡献等级
微笑刺客  LV21 2024年5月30日
sink122406  LV12 2024年5月16日
feizai0101 2024年4月14日
暂无贡献等级
xiaojie93  LV2 2024年2月29日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友