今天我就基於高通410c的開發板給大家介紹一款遠程人臉識別系統!該系統是基於訊飛人臉識別和Wilddog的遠程視屏傳輸系統。該產品是定位於智能家居這一塊的市場,實時監控家裏門口所有經過的的人,如發現如發現家門口有人徘徊了5分鐘左右,則立即把門口的視屏傳輸給戶主。
主要的集成過程如下:
@Override
public void onCreate() {
super.onCreate();
//初始化WilddogApp實例,初始化WilddogApp後,即可在項目任意位置獲取數據庫地址引用
//mAppId即野狗應用ID
WilddogOptions.Builder builder = new WilddogOptions.Builder().setSyncUrl("http://"+ mAppId +".wilddogio.com");
WilddogOptions options = builder.build();
WilddogApp.initializeApp(getApplicationContext(), options);
//獲取Auth對象
WilddogAuth auth = WilddogAuth.getInstance();
//匿名登錄系統
auth.signInAnonymously().addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(Task<AuthResult> task) {
if (task.isSuccessful()) {
//...
//完成身份認證後初始化 Video SDK,如身份認證失敗則會引起初始化失敗或應用崩潰
WilddogUser user = task.getResult().getCurrentUser();
initVideoSDK();
}else {
throw new RuntimeException("auth 失敗"+task.getException().getMessage());
}
}
});
//....
}
private void initVideoSDK(){
String token = WilddogAuth.getInstance().getCurrentUser().getToken(false).getResult().getToken();
//初始化 WilddogVideoCall SDK
WilddogVideoInitializer.initialize(context,videoAppId,token);
//獲取 WilddogVideo對象
WilddogVideoCall video=WilddogVideoCall.getInstance();
}
設置 WilddogVideoCall 的代理WilddogVideoCall.Listener 用於監聽通話請求:
video.setListener(new WilddogVideoCall.Listener() {
@Override
public void onCalled(Conversation conversation, String s) {
}
@Override
public void onTokenError(WilddogVideoError wilddogVideoError) {
}
});
發起通話請求
使用 call(String remoteUid, LocalStream localStream, String data) 來發起通話請求,該方法需要傳遞三個參數:
remoteUid: 通話接收方的 uid,uid 是 WilddogAuth 爲認證用戶分配的唯一身份標識;
localStream: 通話發起方的本地媒體流;
data: 用戶自定義信息,可以爲空。
調用該方法返回 Conversation 實例,用於控制本次一對一視頻通話。
收到通話請求
其他用戶發來通話請求時,用戶可以從 WilddogVideoCall 的listener得到通知,並獲得 Conversation 實例:
public void onCalled(Conversation conversation, String s) {
mConversation = conversation;
Log.d(“log”,s);
}
}
設置通話代理
設置 Conversation 的代理Conversation.Listener用於監聽通話狀態。
conversation.setConversationListener(new Conversation.Listener() {
@Override
public void onCallResponse(CallStatus callStatus) {
}
@Override
public void onStreamReceived(RemoteStream remoteStream) {
}
@Override
public void onClosed() {
}
@Override
public void onError(WilddogVideoError wilddogVideoError) {
}
});