{"id":34636715,"url":"https://github.com/entertech/affectivecloud-unity-android","last_synced_at":"2026-05-27T15:02:56.248Z","repository":{"id":108853496,"uuid":"527881249","full_name":"Entertech/AffectiveCloud-Unity-Android","owner":"Entertech","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-19T09:28:46.000Z","size":799,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-26T06:00:09.096Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Entertech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-08-23T07:32:42.000Z","updated_at":"2025-02-19T09:28:49.000Z","dependencies_parsed_at":"2025-02-19T10:36:00.768Z","dependency_job_id":null,"html_url":"https://github.com/Entertech/AffectiveCloud-Unity-Android","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Entertech/AffectiveCloud-Unity-Android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Entertech%2FAffectiveCloud-Unity-Android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Entertech%2FAffectiveCloud-Unity-Android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Entertech%2FAffectiveCloud-Unity-Android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Entertech%2FAffectiveCloud-Unity-Android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Entertech","download_url":"https://codeload.github.com/Entertech/AffectiveCloud-Unity-Android/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Entertech%2FAffectiveCloud-Unity-Android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33570993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-24T17:02:26.341Z","updated_at":"2026-05-27T15:02:56.225Z","avatar_url":"https://github.com/Entertech.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 回车情感云Unity集成\n\n## 2023.6.25 更新说明\n- 添加蓝牙配对绑定连接\n    - Android.zip内依赖库更新, 解压后需要将`biomoduleble-1.5.2.aar`放到对应文件夹内, 删除`biomoduleble-1.4.2.aar`\n    - 需要先到系统蓝牙设置里进行蓝牙绑定\n    - 蓝牙配对连接接口 `BLEManager.instance.bleConnectBonded(ref bleScanSuccessCallback, ref bleScanFailedCallback, ref connectSuccessCallback, ref connectFailedCallback);` \n\n## 简介\n回车情感云Unity版本是基于安卓SDK的封装, 只能用于安卓平台的Unity开发, 附件`Android.zip`中有打包好的SDK, 其中有一些安卓的配置文件内容, 包含依赖库, 权限等. 需要解压后放到`Assets/Plugins`文件夹下。 如需要自行封装请查看:\n - 情感云连接API[安卓情感云SDK](https://github.com/Entertech/Enter-AffectiveCloud-Android-SDK), \n - 蓝牙使用API[安卓蓝牙SDK](https://github.com/Entertech/Enter-Biomodule-BLE-Android-SDK), \n - [安卓SDK集成Demo](https://github.com/Entertech/Enter-AffectiveCloud-Demo-Android)\n\n## Unity版本封装说明\n\n### 蓝牙连接\n\n蓝牙连接部分分为两个文件, \n- SDK调用文件: BLEManager.cs\n- SDK回调文件: BLECallbackDelegate.cs\n\n#### Unity获取安卓实例\n``` csharp\n    AndroidJavaClass ajc; //java类\n    AndroidJavaObject ajo; //java对象，此处为android界面\n    ajc = new AndroidJavaClass(\"com.unity3d.player.UnityPlayer\"); // 此处为默认命名, 有些第三方Unity库会修改\n    if (ajc == null)\n    {\n        return;\n    }\n    try\n    {\n\n        ajo = ajc.GetStatic\u003cAndroidJavaObject\u003e(\"currentActivity\");\n\n    }\n    catch (NullReferenceException ex)\n    {\n        return;\n    }\n```\n\n#### 蓝牙回调\n``` csharp\n    //蓝牙扫描回调, 使用前先初始化\n    BleScanSuccessCallback bleScanSuccessCallback; \n    //蓝牙扫描失败回调, 使用前先初始化\n    BleScanFailedCallback bleScanFailedCallback;\n    // 蓝牙连接成功回调, 使用前先初始化\n    ConnectSuccessCallback connectSuccessCallback;\n    // 蓝牙连接失败回调, 使用前先初始化\n    ConnectFailedCallback connectFailedCallback;\n    // 蓝牙脑波回调, 使用前先初始化\n    RawBrainDataCallback rawBrainDataCallback;\n    // 蓝牙心率回调, 使用前先初始化\n    HeartRateDataCallback heartRateDataCallback;\n```\n\n#### BLEManager\n以下方法按蓝牙使用的生命周期先后顺序排列\n- 请求定位权限 `BLEManager.instance.requestAuth();`\n  - 安卓要使用蓝牙必须要先请求定位\n\n\n- 初始化蓝牙类 `BLEManager.instance.initializeJavaObject(ref ajo)` \n  - ajo参考上方安卓实例\n\n\n- 蓝牙连接 `BLEManager.instance.bleScanAndConnect(ref bleScanSuccessCallback, ref bleScanFailedCallback, ref connectSuccessCallback, ref connectFailedCallback);` \n  - 回调参数参考回调文件\n  - 蓝牙连接成功后,设备灯会由闪烁变为常亮\n  - 添加蓝牙配对绑定连接\n    - 需要先到系统蓝牙设置里进行蓝牙绑定\n    - 蓝牙配对连接接口 `BLEManager.instance.bleConnectBonded(ref bleScanSuccessCallback, ref bleScanFailedCallback, ref connectSuccessCallback, ref connectFailedCallback);` \n\n\n- 蓝牙开启服务 `BLEManager.instance.bleProcess();` \n  - 回调参数参考回调文件\n  - 开启服务后, 两个回调方法分别会收到脑波数据和心率数据\n  \n\n- 蓝牙关闭服务 `BLEManager.instance.bleStop();`\n  - 蓝牙不再采集数据, 但是依然连接\n\n- 蓝牙服务监听\n  - 包含脑波, 心率, 断开连接, 佩戴检测, 电量\n  - 添加 `BLEManager.instance.addListener(ref rawBrainDataCallback, ref heartRateDataCallback, ref disconnectCall, ref contactCall, ref batteryCall)`\n  - 移除 `BLEManager.instance.removeListener(ref rawBrainDataCallback, ref heartRateDataCallback, ref disconnectCall, ref contactCall, ref batteryCall)`\n\n- 蓝牙断开 `BLEManager.instance.bleDisconnect()`\n\n### 情感云\n\n情感云连接部分分为四个文件, \n- SDK调用文件: AffectiveManager.cs\n- websocket回调文件:  WebSocketCallback.cs, Websocket状态和内容的回调, 内容的回调会打印所有通信数据,主要用于调试\n- 情感云回调文件: AffectiveCallback.cs, 情感云服务相关的回调内容\n- 情感云配置文件: AffectiveConfig.cs, 配置内容包括情感云的key和secret, 用于认证用户\n\n#### Config\n``` csharp\n    public static string APP_KEY = \"\"; //向管理员申请（目前此Key只能作为测试用）\n    public static string APP_SECRET = \"\"; //向管理员申请（目前此Secret只能作为测试用）\n    public static string USER_ID = \"2022\";  //合作方分配给用户的ID，比如注册产生的用户id\n```\n\n#### Websocket回调\n``` csharp\n    // 连接断开回调, 使用需要初始化\n    WebsocketDisconnectCallback websocketDisconnectCallback;\n    // 连接成功回调, 使用需要初始化\n    WebsocketConnectSuccessCallback websocketConnectSuccessCallback;\n    // 请求内容打印, 用于调试, 使用需要初始化\n    RequestDataCallback websocketRequestCallback;\n    // 回复内容打印, 用于调试, 使用需要初始化\n    ResponseDataCallback websocketResponseCallback;\n```\n\n#### 情感云回调\n``` csharp\n    // 实时生物数据(eeg, hr等)回调\n    RealtimeBiodataCallback realtimeBiodataCallback;\n    // 实时情感数据回调(注意力,放松度等分析数据)回调\n    RealtimeAffectiveDataCallback realtimeAffectiveDataCallback;\n    // 情感云初始化回调\n    CloudManagerInitCallback cloudInitCallback;\n    // 情感云断开重连回调\n    CloudManagerRestoreCallback cloudManagerRestoreCallback;\n```\n\n#### AffectiveManager\n以下方法按蓝牙使用的生命周期先后顺序排列\n``` csharp\n//一，初始化情感云\nAffectiveManager.instance.buildBioDataService();\n\n//二，创建服务并认证，关于回调，请参考AffectiveCallback.cs内的注释\nAffectiveManager.instance.createSession(ref cloudInitCallback);\n\n//CloudManagerInitCallback cloudInitCallback 返回成功后,可以获取sessionid\nif (AffectiveManager.instance.isSessionCreate())\n    var sessionID = AffectiveManager.instance.getSessionId();\n\n//三，创建监听，参考WebSocketCallback.cs，和AffectiveCallback.cs注释\nAffectiveManager.instance.addListener(ref websocketConnectSuccessCallback, \n    ref websocketDisconnectCallback, ref realtimeBiodataCallback, \n    ref realtimeAffectiveDataCallback)\n    \n//四，从蓝牙的脑波回调和心率回调持续上传数据，相关代码查看BLECallbackDelegate.cs\nAffectiveManager.instance.appendEEG(AndroidJavaObject list);\nAffectiveManager.instance.appendHR(int value);\n\n//五，情感云断开重连，当监听到WebSocketCallback.cs的情感云非正常断开时，重新连接并认证\nAffectiveManager.instance.restore(ref cloudManagerRestoreCallback);\n\n//六，结束服务\nAffectiveManager.instance.releaseCloud()\n\n//七，断开情感云, 如果需要在上面的结束服务命令后断开, 需要等待ReleaseCallback返回\nAffectiveManager.instance.closeWebSocket()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentertech%2Faffectivecloud-unity-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fentertech%2Faffectivecloud-unity-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentertech%2Faffectivecloud-unity-android/lists"}