@tencentcloud/sdk-mcp 1.7.7 → 1.7.9-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +7 -9
  3. package/index.js +8 -8
  4. package/knowledge/chunker.js +1 -0
  5. package/knowledge/doc-url-resolver.js +16 -9
  6. package/knowledge/embedding/build-vectors.js +92 -0
  7. package/knowledge/embedding/embed-model.js +41 -0
  8. package/knowledge/embedding/vector-augment.js +126 -0
  9. package/knowledge/embedding/vector-index.js +70 -0
  10. package/knowledge/frontmatter-meta.js +23 -0
  11. package/knowledge/path-meta.js +56 -0
  12. package/knowledge/search/exact-lookup.js +145 -16
  13. package/knowledge/search/filter-pool.js +77 -33
  14. package/knowledge/search/rank-profile.js +25 -0
  15. package/knowledge/search/requires-framework.js +4 -1
  16. package/knowledge/search/search-core.js +74 -13
  17. package/knowledge/search/search-knowledge.js +24 -34
  18. package/knowledge/search/search-pass.js +495 -169
  19. package/knowledge/search/url-row-scorer.js +24 -6
  20. package/package.json +3 -1
  21. package/resource/index/manifest.json +1 -1
  22. package/resource/index/vectors/index.json +4 -0
  23. package/resource/integration/callkit/preset/android/integration.md +0 -2
  24. package/resource/integration/callkit/preset/ios/integration.md +0 -2
  25. package/resource/integration/chat/preset/react/integration.md +9 -5
  26. package/resource/integration/chat/preset/uni-app/integration.md +4 -0
  27. package/resource/integration/chat/preset/vue/integration.md +10 -6
  28. package/resource/integration/livekit/preset/live/android/prepare-integration.md +0 -4
  29. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +0 -4
  30. package/resource/integration/roomkit/preset/vue/integration.md +154 -208
  31. package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +0 -2
  32. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +0 -2
  33. package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -2
  34. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +0 -4
  35. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +0 -2
  36. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +0 -2
  37. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -2
  38. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -4
  39. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -2
  40. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -2
  41. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -2
  42. package/resource/knowledge/callkit/faq/ios.md +0 -2
  43. package/resource/knowledge/callkit/faq/uniapp-app.md +0 -2
  44. package/resource/knowledge/callkit/preset/miniprogram/integration.md +2 -3
  45. package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +0 -2
  46. package/resource/knowledge/chat/preset/ios-uikit/integration.md +0 -16
  47. package/resource/knowledge/chat/preset/react/h5/integration.md +16 -5
  48. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +6 -3
  49. package/resource/knowledge/chat/preset/vue/h5/integration.md +7 -4
  50. package/resource/knowledge/iot/app/activate-service.md +95 -0
  51. package/resource/knowledge/iot/app/demo/android.md +93 -0
  52. package/resource/knowledge/iot/app/demo/ios.md +87 -0
  53. package/resource/knowledge/iot/app/demo/miniprogram.md +79 -0
  54. package/resource/knowledge/iot/app/device-binding.md +378 -0
  55. package/resource/knowledge/iot/app/device-sharing.md +414 -0
  56. package/resource/knowledge/iot/app/family-management.md +762 -0
  57. package/resource/knowledge/iot/app/integration/android.md +328 -0
  58. package/resource/knowledge/iot/app/integration/harmonyos.md +326 -0
  59. package/resource/knowledge/iot/app/integration/ios.md +351 -0
  60. package/resource/knowledge/iot/app/integration/miniprogram.md +268 -0
  61. package/resource/knowledge/iot/app/monitor-playback.md +557 -0
  62. package/resource/knowledge/iot/app/remote-control.md +139 -0
  63. package/resource/knowledge/iot/app/video-call.md +559 -0
  64. package/resource/knowledge/iot/app/wechat-call/device-call-miniprogram.md +204 -0
  65. package/resource/knowledge/iot/app/wechat-call/miniprogram-call-device.md +193 -0
  66. package/resource/knowledge/iot/client-api/app/android/txiotcallsession.md +189 -0
  67. package/resource/knowledge/iot/client-api/app/android/txiotcloudstorage.md +77 -0
  68. package/resource/knowledge/iot/client-api/app/android/txiotdevicemanager.md +175 -0
  69. package/resource/knowledge/iot/client-api/app/android/txiotengine.md +172 -0
  70. package/resource/knowledge/iot/client-api/app/android/txiotenginedef.md +163 -0
  71. package/resource/knowledge/iot/client-api/app/android/txiotfamilymanager.md +146 -0
  72. package/resource/knowledge/iot/client-api/app/android/txiotmonitorsession.md +246 -0
  73. package/resource/knowledge/iot/client-api/app/harmonyos/txiotcallsession.md +191 -0
  74. package/resource/knowledge/iot/client-api/app/harmonyos/txiotcloudstorage.md +77 -0
  75. package/resource/knowledge/iot/client-api/app/harmonyos/txiotdevicemanager.md +183 -0
  76. package/resource/knowledge/iot/client-api/app/harmonyos/txiotengine.md +186 -0
  77. package/resource/knowledge/iot/client-api/app/harmonyos/txiotenginedef.md +164 -0
  78. package/resource/knowledge/iot/client-api/app/harmonyos/txiotfamilymanager.md +150 -0
  79. package/resource/knowledge/iot/client-api/app/harmonyos/txiotmonitorsession.md +252 -0
  80. package/resource/knowledge/iot/client-api/app/ios/txiotcallsession.md +199 -0
  81. package/resource/knowledge/iot/client-api/app/ios/txiotcloudstorage.md +76 -0
  82. package/resource/knowledge/iot/client-api/app/ios/txiotdevicemanager.md +173 -0
  83. package/resource/knowledge/iot/client-api/app/ios/txiotengine.md +173 -0
  84. package/resource/knowledge/iot/client-api/app/ios/txiotenginedef.md +171 -0
  85. package/resource/knowledge/iot/client-api/app/ios/txiotfamilymanager.md +146 -0
  86. package/resource/knowledge/iot/client-api/app/ios/txiotmonitorsession.md +250 -0
  87. package/resource/knowledge/iot/client-api/app/miniprogram/txiotcallsession.md +180 -0
  88. package/resource/knowledge/iot/client-api/app/miniprogram/txiotcloudstorage.md +76 -0
  89. package/resource/knowledge/iot/client-api/app/miniprogram/txiotdevicemanager.md +281 -0
  90. package/resource/knowledge/iot/client-api/app/miniprogram/txiotengine.md +183 -0
  91. package/resource/knowledge/iot/client-api/app/miniprogram/txiotenginedef.md +152 -0
  92. package/resource/knowledge/iot/client-api/app/miniprogram/txiotfamilymanager.md +179 -0
  93. package/resource/knowledge/iot/client-api/app/miniprogram/txiotmonitorsession.md +226 -0
  94. package/resource/knowledge/iot/client-api/device/android-smart-device.md +813 -0
  95. package/resource/knowledge/iot/client-api/device/linux-rtos-device.md +2027 -0
  96. package/resource/knowledge/iot/device/activate-service.md +167 -0
  97. package/resource/knowledge/iot/device/ai-voice-chat/advanced-features/custom-agent.md +171 -0
  98. package/resource/knowledge/iot/device/ai-voice-chat/advanced-features/smart-device-control.md +721 -0
  99. package/resource/knowledge/iot/device/ai-voice-chat/integration-guide/android-smart-device.md +247 -0
  100. package/resource/knowledge/iot/device/ai-voice-chat/integration-guide/linux-rtos-device.md +368 -0
  101. package/resource/knowledge/iot/device/ai-voice-chat/overview.md +84 -0
  102. package/resource/knowledge/iot/device/cloud-storage.md +696 -0
  103. package/resource/knowledge/iot/device/data-model.md +972 -0
  104. package/resource/knowledge/iot/device/demo/android-smart-device.md +97 -0
  105. package/resource/knowledge/iot/device/demo/linux-rtos-device.md +106 -0
  106. package/resource/knowledge/iot/device/device-ota-upgrade.md +237 -0
  107. package/resource/knowledge/iot/device/dynamic-registration/android-smart-device.md +275 -0
  108. package/resource/knowledge/iot/device/dynamic-registration/linux-rtos-device.md +297 -0
  109. package/resource/knowledge/iot/device/login-and-register/android-smart-device.md +131 -0
  110. package/resource/knowledge/iot/device/login-and-register/linux-rtos-device.md +291 -0
  111. package/resource/knowledge/iot/device/monitor-pushing/android-smart-device.md +237 -0
  112. package/resource/knowledge/iot/device/monitor-pushing/linux-rtos-device.md +493 -0
  113. package/resource/knowledge/iot/device/video-call/android-smart-device.md +299 -0
  114. package/resource/knowledge/iot/device/video-call/linux-rtos-device.md +465 -0
  115. package/resource/knowledge/iot/device/wechat-call/android-smart-device.md +534 -0
  116. package/resource/knowledge/iot/device/wechat-call/linux-rtos-device.md +681 -0
  117. package/resource/knowledge/iot/kids-watch/overview.md +28 -0
  118. package/resource/knowledge/iot/security-camera/activate-service.md +74 -0
  119. package/resource/knowledge/iot/security-camera/monitor-playback/app-integration.md +302 -0
  120. package/resource/knowledge/iot/security-camera/monitor-playback/device-integration/android.md +237 -0
  121. package/resource/knowledge/iot/security-camera/monitor-playback/device-integration/linux-rtos.md +493 -0
  122. package/resource/knowledge/iot/security-camera/overview.md +31 -0
  123. package/resource/knowledge/iot/security-camera/ptz-control.md +153 -0
  124. package/resource/knowledge/iot/security-camera/recording-and-snapshot.md +182 -0
  125. package/resource/knowledge/iot/security-camera/voice-intercom.md +174 -0
  126. package/resource/knowledge/iot/smart-vision/serviceoverview.md +114 -0
  127. package/resource/knowledge/iot/voice-recorder/app-demo.md +99 -0
  128. package/resource/knowledge/iot/voice-recorder/device-demo.md +189 -0
  129. package/resource/knowledge/iot/voice-recorder/overview.md +64 -0
  130. package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +0 -2
  131. package/resource/knowledge/livekit/core-sdk/features/android/gift.md +0 -4
  132. package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +0 -2
  133. package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +0 -2
  134. package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
  135. package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +0 -4
  136. package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +0 -2
  137. package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +0 -4
  138. package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +0 -2
  139. package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +0 -2
  140. package/resource/knowledge/livekit/core-sdk/features/uni-app/gift.md +0 -4
  141. package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -4
  142. package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -10
  143. package/resource/knowledge/livekit/core-sdk/live/android/integration.md +0 -2
  144. package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +0 -2
  145. package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -10
  146. package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +0 -2
  147. package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -4
  148. package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -10
  149. package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +0 -2
  150. package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +0 -4
  151. package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +0 -4
  152. package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +0 -2
  153. package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +0 -2
  154. package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +0 -4
  155. package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +0 -4
  156. package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +0 -2
  157. package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
  158. package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +0 -4
  159. package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +0 -4
  160. package/resource/knowledge/livekit/core-sdk/voice/uni-app/co-guest-interaction.md +0 -2
  161. package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +0 -2
  162. package/resource/knowledge/livekit/faq/error-code.md +0 -2
  163. package/resource/knowledge/push/config/android/honor.md +16 -1
  164. package/resource/knowledge/push/config/android/huawei.md +20 -4
  165. package/resource/knowledge/push/config/android/meizu.md +19 -5
  166. package/resource/knowledge/push/config/android/vivo.md +20 -1
  167. package/resource/knowledge/push/config/donut.md +0 -2
  168. package/resource/knowledge/push/config/harmonyos.md +21 -5
  169. package/resource/knowledge/push/integration/android.md +0 -5
  170. package/resource/knowledge/push/integration/donut.md +0 -3
  171. package/resource/knowledge/push/integration/flutter.md +1 -4
  172. package/resource/knowledge/push/integration/harmonyos.md +0 -3
  173. package/resource/knowledge/push/integration/ios.md +0 -3
  174. package/resource/knowledge/push/integration/react-native.md +0 -5
  175. package/resource/knowledge/push/integration/uni-app.md +0 -3
  176. package/resource/knowledge/push/integration/unity.md +0 -3
  177. package/resource/knowledge/push/integration/unreal-engine.md +0 -3
  178. package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -2
  179. package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -2
  180. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +0 -2
  181. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +0 -2
  182. package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -2
  183. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -2
  184. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +0 -2
  185. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +0 -2
  186. package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -2
  187. package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -2
  188. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +0 -2
  189. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +0 -2
  190. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -3
  191. package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +18 -14
  192. package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +0 -2
  193. package/resource/knowledge/rtcengine/web/plugin/23-advanced-support-detection.md +30 -0
  194. package/resource/knowledge/rtcengine/web/plugin/24-advanced-network-quality.md +0 -2
  195. package/resource/knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
  196. package/resource/knowledge/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
  197. package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +4 -0
  198. package/resource/knowledge/trtc/android/TRTCCloud.md +94 -85
  199. package/resource/knowledge/trtc/android/TRTCCloudDef.md +48 -46
  200. package/resource/knowledge/trtc/android/TRTCCloudListener.md +48 -48
  201. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +18 -18
  202. package/resource/knowledge/trtc/android/TXDeviceManager.md +4 -4
  203. package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -0
  204. package/resource/knowledge/trtc/c++/ITRTCCloud.md +90 -90
  205. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +18 -18
  206. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +9 -9
  207. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +47 -47
  208. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +47 -45
  209. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -0
  210. package/resource/knowledge/trtc/ios/TRTCCloud.md +93 -93
  211. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +50 -50
  212. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +8 -8
  213. package/resource/knowledge/trtc/ios/TXDeviceManager.md +9 -9
  214. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -0
  215. package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +48 -46
  216. package/server-config.js +8 -9
  217. package/server.js +1 -1
  218. package/tools/common/finalize_answer.js +1 -1
  219. package/tools/common/present_framework_choice.js +1 -1
  220. package/tools/common/search_trtc_knowledge.js +22 -3
  221. package/tools/definitions/search_trtc_knowledge_def.js +3 -2
  222. package/utils/preflight-route.js +19 -2
  223. package/utils/report-cls-client.js +1 -1
  224. package/utils/report-es-client.js +1 -1
@@ -0,0 +1,182 @@
1
+ ---
2
+ product: iot
3
+ framework:
4
+ - '*'
5
+ types:
6
+ - feature
7
+ retrievable_scope: always
8
+ feature_domain: security-camera
9
+ ---
10
+
11
+ 本文将介绍安防监控场景下的**录制与截图**功能。录制与截图为纯应用端能力:应用端对正在拉取的监控画面进行截图或本地录制,**设备端无需接入任何工作**。
12
+
13
+ ## 应用端接入
14
+
15
+ ### 截图
16
+
17
+ 在查看监控(startRemoteView 成功)期间,调用 takeSnapshot 对指定通道的当前画面截图,截图结果通过 `onSnapshotComplete` 回调返回。
18
+
19
+ #### 接口说明
20
+
21
+ |方法 / 回调|说明|
22
+ |---------|---------|
23
+ |takeSnapshot|对 `channelId` 通道的当前画面发起截图。|
24
+ |`onSnapshotComplete`|截图完成回调,返回 `channelId`、图片对象与错误码。|
25
+
26
+ #### 调用示例
27
+
28
+ 【Android】
29
+ ``` java
30
+ // 发起截图
31
+ session.takeSnapshot(0);
32
+
33
+ // 在 TXIoTMonitorSessionListener 中接收结果
34
+ @Override
35
+ public void onSnapshotComplete(int channelId, Bitmap image, int errCode) {
36
+ if (errCode == 0 && image != null) {
37
+ // 保存或展示截图
38
+ saveBitmapToAlbum(image);
39
+ } else {
40
+ Log.e(TAG, "snapshot failed: " + errCode);
41
+ }
42
+ }
43
+ ```
44
+
45
+ 【iOS】
46
+ ``` objectivec
47
+ // 发起截图
48
+ [session takeSnapshot:0];
49
+
50
+ // 在 TXIoTMonitorSessionDelegate 中接收结果
51
+ - (void)onSnapshotComplete:(int)channelId image:(UIImage *)image errCode:(int)errCode {
52
+ if (errCode == 0 && image) {
53
+ // 保存或展示截图
54
+ UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
55
+ } else {
56
+ NSLog(@"snapshot failed: %d", errCode);
57
+ }
58
+ }
59
+ ```
60
+
61
+ 【小程序】
62
+ ``` typescript
63
+ // 发起截图
64
+ session.takeSnapshot(0);
65
+
66
+ // 在 TXIoTMonitorSessionListener 中接收结果
67
+ session.addListener({
68
+ onSnapshotComplete(channelId: number, imagePath?: string) {
69
+ if (imagePath) {
70
+ // 截图成功,imagePath 为图片文件路径
71
+ // 保存或展示截图
72
+ wx.saveImageToPhotosAlbum({
73
+ filePath: imagePath,
74
+ success: () => wx.showToast({ title: '已保存到相册' }),
75
+ fail: () => wx.showToast({ title: '保存失败', icon: 'none' }),
76
+ });
77
+ } else {
78
+ // 截图失败(imagePath 为空/undefined)
79
+ console.error(`snapshot failed, channelId=${channelId}`);
80
+ }
81
+ },
82
+ });
83
+ ```
84
+
85
+ ### 本地录制
86
+
87
+ 在监控查看期间,调用 startLocalRecording 将当前通道画面录制为本地视频文件,调用 stopLocalRecording 结束录制。录制状态通过 `onLocalRecordBegin` / `onLocalRecording` / `onLocalRecordComplete` 三个回调返回。
88
+
89
+ #### 接口说明
90
+
91
+ |方法 / 回调|说明|
92
+ |---------|---------|
93
+ |startLocalRecording|开始本地录制,参数为 TXIoTLocalRecordingParams。|
94
+ |stopLocalRecording|结束本地录制。|
95
+ |`onLocalRecordBegin`|录制开始回调,返回 `errCode` 与录制文件路径。|
96
+ |`onLocalRecording`|录制中进度回调,每秒钟回调一次已录制时长 `durationMs` 与文件路径。|
97
+ |`onLocalRecordComplete`|录制结束回调,返回 `errCode` 与最终录制文件路径。|
98
+
99
+ #### 调用示例
100
+
101
+ 【Android】
102
+ ``` java
103
+ // 开始录制
104
+ TXIoTLocalRecordingParams params = new TXIoTLocalRecordingParams();
105
+ params.channelId = 0;
106
+ params.outputPath = getExternalFilesDir(null) + "/record.mp4";
107
+ session.startLocalRecording(params);
108
+
109
+ // 结束录制
110
+ session.stopLocalRecording();
111
+
112
+ // 录制状态回调(TXIoTMonitorSessionListener)
113
+ @Override
114
+ public void onLocalRecordBegin(int errCode, String storagePath) { }
115
+
116
+ @Override
117
+ public void onLocalRecording(long durationMs, String storagePath) { }
118
+
119
+ @Override
120
+ public void onLocalRecordComplete(int errCode, String storagePath) {
121
+ if (errCode == 0) {
122
+ // 录制成功,storagePath 为最终文件路径
123
+ }
124
+ }
125
+ ```
126
+
127
+ 【iOS】
128
+ ``` objectivec
129
+ // 开始录制
130
+ TXIoTLocalRecordingParams *params = [[TXIoTLocalRecordingParams alloc] init];
131
+ params.channelId = 0;
132
+ params.outputPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"record.mp4"];
133
+ [session startLocalRecording:params];
134
+
135
+ // 结束录制
136
+ [session stopLocalRecording];
137
+
138
+ // 录制状态回调(TXIoTMonitorSessionDelegate)
139
+ - (void)onLocalRecordBegin:(int)errCode storagePath:(NSString *)storagePath { }
140
+
141
+ - (void)onLocalRecording:(int64_t)durationMs storagePath:(NSString *)storagePath { }
142
+
143
+ - (void)onLocalRecordComplete:(int)errCode storagePath:(NSString *)storagePath {
144
+ if (errCode == 0) {
145
+ // 录制成功,storagePath 为最终文件路径
146
+ }
147
+ }
148
+ ```
149
+
150
+ 【小程序】
151
+
152
+ > **说明:**
153
+ > 小程序不支持本地录制
154
+ >
155
+
156
+ ### 错误处理
157
+
158
+ 录制与截图涉及本地文件写入,以下错误码在录制或截图过程中可能返回,完整错误码定义见 TXIoTErrorCode。
159
+
160
+ 【Android】
161
+
162
+ |错误码|说明|建议处理方式|
163
+ |---------|---------|---------|
164
+ |`ERR_RECORD_DURATION_TOO_SHORT`|录像时长过短。|过短的录像可忽略。|
165
+ |`ERR_FILE_PATH_UNWRITABLE`|文件路径不可写。|确认保存目录存在且有写入权限。|
166
+ |`ERR_FILE_PATH_ALREADY_EXIST`|文件已存在。|使用新的文件路径,避免覆盖已有文件。|
167
+
168
+ 【iOS】
169
+
170
+ |错误码|数值|说明|建议处理方式|
171
+ |---------|---------|---------|---------|
172
+ |`TXIoTErrorCodeRecordDurationTooShort`|-2007|录像时长过短。|过短的录像可忽略。|
173
+ |`TXIoTErrorCodeFilePathUnwritable`|-2008|文件路径不可写。|确认保存目录存在且有写入权限。|
174
+ |`TXIoTErrorCodeFilePathAlreadyExist`|-2009|文件已存在。|使用新的文件路径,避免覆盖已有文件。|
175
+
176
+ ## 常见问题
177
+
178
+ |现象|排查建议|
179
+ |---------|---------|
180
+ |`onSnapshotComplete` 返回非 0 错误码。|确认调用 takeSnapshot 时该通道正在拉流(startRemoteView 已成功且画面已渲染),无画面时无法截图。|
181
+ |录制文件无法生成或打开。|确认 `outputPath` 所在目录已存在且应用有写入权限。|
182
+ |录制过程中应用退到后台后录制中断。|本地录制依赖持续拉流,应用退后台被系统回收会中断录制,建议在退后台前自动停止录制。|
@@ -0,0 +1,174 @@
1
+ ---
2
+ product: iot
3
+ framework:
4
+ - '*'
5
+ types:
6
+ - feature
7
+ retrievable_scope: always
8
+ feature_domain: security-camera
9
+ ---
10
+
11
+ 本文将介绍设备如何实现实时监控场景下的**语音对讲**功能(设备端与 APP 进行语音对话)。
12
+
13
+ ## 应用端接入
14
+
15
+ 语音对讲需要设备端与应用端协同:设备端负责音频的采集与播放(见下文 设备端接入),应用端则在查看监控期间开启本地麦克风采集,将 APP 语音传输给设备端。如需双向画面,还可同时开启本地摄像头。
16
+
17
+ > **注意:**
18
+ > 开启本地麦克风与摄像头前,请确保已在工程中申请并获取麦克风、摄像头权限,否则 startLocalAudio / startLocalVideo 会返回 `ERR_MIC_NOT_AUTHORIZED` / `ERR_CAMERA_NOT_AUTHORIZED` 等错误码。
19
+ >
20
+
21
+ ### 接口说明
22
+
23
+ |方法|说明|
24
+ |---------|---------|
25
+ |startLocalAudio|开始采集、传输本地麦克风音频。|
26
+ |stopLocalAudio|停止采集、传输本地麦克风音频。|
27
+ |muteLocalAudio|`mute` 为 `true` 时静音本地麦克风。|
28
+ |startLocalVideo|开始采集、传输本地摄像头画面,`view` 为本地渲染视图,编码参数为 TXIoTVideoEncoderParams。|
29
+ |stopLocalVideo|停止采集、传输本地摄像头画面。|
30
+
31
+ ### 调用示例
32
+
33
+ 【Android】
34
+ ``` java
35
+ // 本地麦克风(对讲)
36
+ session.startLocalAudio();
37
+ session.muteLocalAudio(false);
38
+ // session.stopLocalAudio();
39
+
40
+ // 本地摄像头(可选,用于双向视频)
41
+ TXCloudVideoView localView = findViewById(R.id.local_view);
42
+ TXIoTVideoEncoderParams params = new TXIoTVideoEncoderParams();
43
+ params.resolution = TXIoTVideoResolution.RESOLUTION_640_360;
44
+ session.startLocalVideo(localView, params);
45
+ // session.stopLocalVideo();
46
+ ```
47
+
48
+ 【iOS】
49
+ ``` objectivec
50
+ // 本地麦克风(对讲)
51
+ [session startLocalAudio];
52
+ [session muteLocalAudio:NO];
53
+ // [session stopLocalAudio];
54
+
55
+ // 本地摄像头(可选,用于双向视频)
56
+ UIView *localView = self.localVideoView;
57
+ TXIoTVideoEncoderParams *params = [[TXIoTVideoEncoderParams alloc] init];
58
+ params.resolution = TXIoTVideoResolution_640_360;
59
+ [session startLocalVideo:localView videoEncoderParams:params];
60
+ // [session stopLocalVideo];
61
+ ```
62
+
63
+ 【小程序】
64
+ ``` typescript
65
+ // ---- 本地麦克风(对讲)----
66
+ session.startLocalAudio();
67
+ session.muteLocalAudio(false);
68
+ // session.stopLocalAudio();
69
+
70
+ // ---- 本地摄像头(可选,用于双向视频)----
71
+ // WXML: <iot-pusher component-id="local-pusher" /> 由 SDK 自动渲染,
72
+ const params = new TXIoTVideoEncoderParams(TXIoTVideoResolution.RESOLUTION_640_360);
73
+ session.startLocalVideo(params);
74
+ // session.stopLocalVideo();
75
+ ```
76
+
77
+ ### 错误处理
78
+
79
+ 语音对讲需开启本地麦克风与摄像头,以下错误码在对讲过程中可能返回,完整错误码定义见 TXIoTErrorCode。
80
+
81
+ 【Android】
82
+
83
+ |错误码|说明|建议处理方式|
84
+ |---------|---------|---------|
85
+ |`ERR_CAMERA_START_FAIL`|摄像头启动失败。|检查设备摄像头是否被占用或硬件异常。|
86
+ |`ERR_CAMERA_NOT_AUTHORIZED`|摄像头权限未授权。|在工程中申请并获取摄像头权限。|
87
+ |`ERR_CAMERA_OCCUPY`|摄像头被占用。|停止其他占用摄像头的功能后再试。|
88
+ |`ERR_MIC_START_FAIL`|麦克风启动失败。|检查麦克风是否被占用或硬件异常。|
89
+ |`ERR_MIC_NOT_AUTHORIZED`|麦克风权限未授权。|在工程中申请并获取麦克风权限。|
90
+ |`ERR_MIC_OCCUPY`|麦克风被占用。|停止其他占用麦克风的功能后再试。|
91
+
92
+ 【iOS】
93
+
94
+ |错误码|数值|说明|建议处理方式|
95
+ |---------|---------|---------|---------|
96
+ |`TXIoTErrorCodeCameraStartFail`|-2000|摄像头启动失败。|检查设备摄像头是否被占用或硬件异常。|
97
+ |`TXIoTErrorCodeCameraNotAuthorized`|-2001|摄像头权限未授权。|在工程中申请并获取摄像头权限。|
98
+ |`TXIoTErrorCodeCameraOccupy`|-2002|摄像头被占用。|停止其他占用摄像头的功能后再试。|
99
+ |`TXIoTErrorCodeMicStartFail`|-2003|麦克风启动失败。|检查麦克风是否被占用或硬件异常。|
100
+ |`TXIoTErrorCodeMicNotAuthorized`|-2004|麦克风权限未授权。|在工程中申请并获取麦克风权限。|
101
+ |`TXIoTErrorCodeMicOccupy`|-2005|麦克风被占用。|停止其他占用麦克风的功能后再试。|
102
+
103
+ 【小程序】
104
+
105
+ |错误码|数值|说明|建议处理方式|
106
+ |---------|---------|---------|---------|
107
+ |`CameraStartFail`|-2000|摄像头启动失败。|检查设备摄像头是否被占用或硬件异常。|
108
+ |`CameraNotAuthorized`|-2001|摄像头权限未授权。|在工程中申请并获取摄像头权限。|
109
+ |`CameraOccupy`|-2002|摄像头被占用。|停止其他占用摄像头的功能后再试。|
110
+ |`MicStartFail`|-2003|麦克风启动失败。|检查麦克风是否被占用或硬件异常。|
111
+ |`MicNotAuthorized`|-2004|麦克风权限未授权。|在工程中申请并获取麦克风权限。|
112
+ |`MicOccupy`|-2005|麦克风被占用。|停止其他占用麦克风的功能后再试。|
113
+
114
+ ## 设备端接入
115
+
116
+ ### 接入步骤
117
+
118
+ #### 步骤 1:注册 on_audio_frame_received 回调
119
+
120
+ 调用 `tc_iot_av_init` 注册 `tc_iot_av_observer_s` 时,为 `on_audio_frame_received` 赋值。APP 端在查看监控期间发起语音对讲时,设备端会通过该回调持续收到音频帧:
121
+ ``` c
122
+ #include "tc_iot_av.h"
123
+
124
+ static void on_audio_frame_received(const tc_iot_audio_frame *frame);
125
+
126
+ tc_iot_av_observer_s observer;
127
+ memset(&observer, 0, sizeof(observer));
128
+ observer.on_audio_frame_received = on_audio_frame_received;
129
+
130
+ tc_iot_error_e av_rc = tc_iot_av_init(&observer);
131
+ if (av_rc != TC_IOT_ERR_SUCCESS) {
132
+ printf("tc_iot_av_init failed: %d\n", av_rc);
133
+ }
134
+ ```
135
+
136
+ #### 步骤 2:解析音频帧
137
+
138
+ `on_audio_frame_received` 回调携带的 `tc_iot_audio_frame` 结构体字段如下:
139
+
140
+ |字段|说明|
141
+ |---------|---------|
142
+ |`codec`|音频编码格式,固定为 `TC_IOT_AUDIO_CODEC_PCM`。|
143
+ |`sample_rate`|采样率,如 `TC_IOT_AUDIO_SAMPLE_RATE_16000`。|
144
+ |`channels`|声道数,`TC_IOT_AUDIO_CHANNEL_MONO`(单声道)或 `TC_IOT_AUDIO_CHANNEL_STEREO`(双声道)。|
145
+ |`frame_duration_ms`|单帧时长(毫秒)。|
146
+ |`data` / `data_size`|PCM 音频数据指针与长度,可直接送入播放器。|
147
+ |`pts_ms`|帧时间戳(毫秒)。|
148
+
149
+ > **说明:**
150
+ > 目前 `codec` 固定为 `TC_IOT_AUDIO_CODEC_PCM`,无需考虑其他编码格式。
151
+ >
152
+
153
+ #### 步骤 3:将音频数据送入播放器
154
+
155
+ 将 `data` 指向的 PCM 数据写入设备的本地播放器(扬声器)完成播放。播放器接口由具体硬件平台提供,以下以自定义 `speaker_play_pcm` 函数表示,请替换为您设备实际的音频输出接口:
156
+ ``` c
157
+ // speaker_play_pcm 由业务自行实现,对接具体硬件平台的音频输出接口
158
+ extern void speaker_play_pcm(const uint8_t *pcm_data, size_t pcm_size);
159
+
160
+ static void on_audio_frame_received(const tc_iot_audio_frame *frame) {
161
+ if (!frame || !frame->data || frame->data_size == 0) {
162
+ return;
163
+ }
164
+ speaker_play_pcm(frame->data, frame->data_size);
165
+ }
166
+ ```
167
+
168
+ ### 常见问题
169
+
170
+ |现象|排查建议|
171
+ |---------|---------|
172
+ |开启语音对讲后,设备端未收到 `on_audio_frame_received`。|确认设备已成功登录且 `tc_iot_av_init` 调用成功;确认 `on_audio_frame_received` 已正确赋值(未被 `memset` 清零覆盖);确认监控会话已建立(`on_monitor_begin` 已触发)。|
173
+ |设备端收到回调但播放无声音。|确认已正确对接本地音频播放硬件接口;检查 `sample_rate`、`channels` 与播放器初始化参数是否一致。|
174
+ |播放声音卡顿或有杂音。|检查 `on_audio_frame_received` 内是否有耗时阻塞操作(如同步写文件、网络请求等),建议将数据快速拷贝到缓冲队列后异步播放,避免阻塞回调影响后续帧接收。|
@@ -0,0 +1,114 @@
1
+ ---
2
+ product: iot
3
+ framework:
4
+ - '*'
5
+ types:
6
+ - feature
7
+ retrievable_scope: always
8
+ feature_domain: smart-vision
9
+ ---
10
+
11
+ ## 服务概述
12
+
13
+ TWeSee AI 视觉引擎是腾讯云面向消费电子与泛安防行业推出的端到端智能视觉解决方案。产品基于腾讯自研的消费电子行业模型,通过深度场景化微调,为智能摄像头、智能门锁、宠物看护、老人陪伴、儿童看护等终端设备提供从“看见”到“看懂”的深度内容理解能力。
14
+
15
+ **服务对象**:TWeSee 主要面向消费电子品牌商、物联网设备制造商、智能硬件开发者,帮助客户快速集成 AI 视觉能力,实现产品智能化升级与 C 端增值服务变现。
16
+
17
+ **核心价值**:开箱即用地提供目标检测、事件识别、视频摘要、智能搜索、视频浓缩等核心能力,相比通用大模型在垂直场景的准确率更高,开发集成周期缩短为1-3天,适合中国市场及海外市场。
18
+
19
+ ## 产品功能
20
+
21
+ ### TWeSee 的核心三大功能
22
+
23
+ 视觉理解、智能搜索和视频浓缩的介绍如下:
24
+ | 功能 | 功能分类 | 介绍 | |
25
+ | --- | --- | --- | --- |
26
+ | 视觉理解 | 视频理解 | 视频摘要 | 对视频进行 AI 分析,生成自然语言描述(如“快递员在门口放下包裹”)。<br>支持同时检测关键目标(人、车、猫、狗、包裹、火焰等)及标签事件(有人吸烟、老人跌倒、明火燃烧等),并把检测结果融入描述。 |
27
+ | 视频事件检测 | 支持单独对视频进行关键目标和事件检测,并输出检测结果。 | | |
28
+ | 图片理解 | 图片摘要 | 对图片进行 AI 分析,生成自然语言描述。<br>支持同时检测关键目标及标签事件,并把检测结果融入描述。 | |
29
+ | 图片事件检测 | 支持单独对图片进行关键目标和事件检测,并输出检测结果。 | | |
30
+ | 人脸检测 | 人脸识别 | 客户可以开启人脸识别开关,导入人脸图像及配置对应的名称,后续可输出含有相关人脸的结果。 | |
31
+ | 总结 | 摘要日总结 | 每日对前一天的摘要、检测文字内容进行总结,输出前一天的完整总结。 | |
32
+ | 智能搜索 | - | - | 支持用户用自然语言直接搜索海量云存内容(如“昨天穿红衣服的女人”、“猫咪捣乱”),快速定位相关视频/图片片段。 |
33
+ | 视频浓缩 | - | - | 把每天海量视频信息进行 AI 处理,自动剪辑和倍速处理,浓缩成1-2分钟的精彩短视频,用户可自定义需要浓缩成短视频的的目标,如:人、车、宠物。 |
34
+
35
+ 以上功能全都包含在 TWeSee 包月套餐中。部分内容,如视频摘要、图片摘要、人脸识别等服务,可按调用次数收费。接入方式。
36
+
37
+ 图片/视频增强、图片生成视频等更多 AI 功能即将推出,敬请关注。
38
+
39
+ ### 应用场景
40
+
41
+ |场景|视觉理解|智能搜索|视频浓缩|
42
+ |---------|---------|---------|---------|
43
+ |看家护院|陌生人/车辆/翻越实时检测;按人/车/事件生成摘要。|"昨天上午谁在门口逗留"一键定位。|将全天监控浓缩为3-5分钟,过滤无动静时段。|
44
+ |宠物看护|抓挠/进食/破坏等行为检测;区分猫/狗动作摘要。|"上周哪天吐了"关键词直达片段。|自动剪辑宠物活跃片段,轻松查看所有爱宠精彩瞬间。|
45
+ |婴幼儿看护|睡姿/爬行/跌倒立刻识别;实时推送防止危险。|"宝宝昨晚几点哭的"秒级回溯。|将24小时浓缩为喂养/哭闹/活动精华。|
46
+ |老人看护|摔倒/久坐/离床/静姿等检测;可自定义事件更贴心关注老人。|"上周几次摔倒"一搜索即出结果。|滤除日常起居,仅保留异常/互动片段。|
47
+ |商铺安防|斗殴/徘徊/吸烟/无人值守等行为检测。|"穿红衣服的顾客什么时候来的"跨天检索。|营业时段浓缩为顾客动线、高峰时段的精华。|
48
+ |区域安全监测|越界/轨迹追踪检测;生成告警摘要。|"前天 E 区有车进入吗"跨设备搜索。|多点位视频合并浓缩,只看有人/车入侵的时段。|
49
+ |厨房安全|烟火/燃气/明火检测;可按事故类型出摘要。|"上周哪天有明火"快速定位取证。|滤除无人时段,保留操作/异常画面精华。|
50
+
51
+ ### 视觉理解事件标签列表
52
+ | 事件分类 | 标签列表 |
53
+ | --- | --- |
54
+ | 通用事件 | - person_enter:有人进入<br>- vehicle_entering:车辆进入<br>- vehicle_parking:车辆停靠<br>- pet:有宠物<br>- no_signal:视频画面异常(无信号等)<br>- camera_angle_abnormal:相机画面视角异常<br>- using_mobile_phone:看手机<br>- vehicle_exiting:车辆驶出 |
55
+ | 婴儿看护 | - baby:有婴儿<br>- baby_dropping:婴儿跌落床铺<br>- person_holding_baby:有人抱起婴儿<br>- baby_rolling:婴儿翻滚<br>- baby_crying:婴儿哭闹 |
56
+ | 儿童看护 | - child:有小孩<br>- child_falling:小孩摔倒<br>- child_entering_kitchen:小孩进入厨房<br>- child_climbing_window:小孩攀爬室内窗户<br>- child_near_water:小孩靠近水域<br>- child_playing_danger_item:小孩玩火、玩刀<br>- child_writing:小孩写作业 |
57
+ | 老人看护 | - elderly:有老人<br>- elderly_falling:老人摔倒<br>- elderly_eating:老人用餐<br>- elderly_using_stove:老人使用灶具 |
58
+ | 宠物看护 | - pet_eating:宠物进食<br>- pet_damaging:宠物损坏家具<br>- pet_barking:宠物吠叫<br>- pet_scratching_door:宠物挠门<br>- person_playing_with_pet:人宠互动玩耍<br>- pet_close_to_camera:宠物靠近摄像头 |
59
+ | 看家护院 | - person_climbing_fence:有人翻围墙<br>- door_window_open:门窗被开启<br>- person_carrying_object:有人搬运物品 |
60
+ | 商铺看管 | - person_at_cashier:有人在收银台<br>- person_taking_goods:有人拿商品<br>- person_night_moving:夜间有人移动<br>- person_entering_store:有人进入商铺<br>- staff_absent:人员离岗<br>- uniform_abnormal:工服异常 |
61
+ | 公共安全 | - person_stealing:有人偷盗<br>- crowd:多人聚集<br>- smoking:有人吸烟<br>- safety_fire:明火<br>- safety_smoke:浓烟<br>- fireworks:有人燃放烟花爆竹<br>- knife:有人持刀具<br>- gun:有人持枪<br>- fight:有人打架<br>- hurt:有人受伤流血<br>- person_falling:人员跌倒 |
62
+ | 养殖看护 | - person_feeding_animal:有人投喂牲畜<br>- animal_lying:有动物躺地上<br>- animal_wild_intrusion:野生动物入侵 |
63
+ | 果园农田 | - person_picking_fruit:有人采摘果实<br>- person_carrying_bag:有人携带包裹<br>- person_entering_farm:有人进入田地 |
64
+ | 鱼塘看管 | - fishing:有人钓鱼<br>- net_fishing:有人撒网<br>- person_carrying_fishing_gear:有人携带渔具<br>- loitering_near_water:有人岸边逗留<br>- throwing_into_water:有人投掷物品 |
65
+
66
+ ## 产品优势
67
+
68
+ ### **开箱即用**
69
+
70
+ 提供端到端场景化解决方案,从视频接入到结果交付的完整闭环,客户无需进行复杂二次开发,典型功能集成周期仅需1-3天,开发周期相比传统方案大幅缩短。
71
+
72
+ ### **垂直场景深度优化**
73
+
74
+ TWeSee 针对消费物联网场景进行海量数据微调,相比通用大模型在垂直场景的准确率更高,误报率更低。
75
+
76
+ ### **多模态语义理解**
77
+
78
+ 支持图像、视频、文本多模态融合分析,实现从“看见”到“看懂”的跨越,用户可通过自然语言进行视频搜索与内容理解,交互体验显著优于传统视觉引擎。
79
+
80
+ ### **MoE 大模型架构**
81
+
82
+ 采用混合专家模型架构,支持持续迭代更新,可灵活扩展新场景、新事件类别,在保证推理速度的同时实现更高的识别准确率。
83
+
84
+ ### **计费方式灵活多样**
85
+
86
+ 有按次及包月的两种付费模式,详见 [智能视觉(TWeSee)计费说明](https://cloud.tencent.com/document/product/1081/131556)。
87
+
88
+ ## 使用**智能视觉服务(TWeSee)**的特别说明
89
+ 1. **本服务不得用于未经授权的大规模人群监控、侵犯个人隐私等违规用途。**
90
+
91
+ 2. **使用智能视觉服务(TWeSee)时,您应:**
92
+
93
+ 1. **遵守《互联网信息服务深度合成管理规定》、《生成式人工智能服务管理暂行办法》等相关法律法规。**
94
+
95
+ 2. **对 AI 生成的内容(如视频摘要、图片描述等)进行显著标识。**
96
+
97
+ 3. **确保使用本服务处理的数据已获得相关主体的合法授权。**
98
+
99
+ 4. **不得利用本服务生成违反法律法规或侵犯第三方合法权益的内容。**
100
+
101
+ 5. **智能视觉服务(TWeSee)提供的视频理解、图片理解等功能,基于人工智能技术实现。我们致力于提供安全、稳定、持续的服务,以保障您的正常使用,但由于大模型技术发展的局限性,我们无法完全保证:**
102
+
103
+ 1. **本服务或算法模型将符合您的实际或特定需求或目的;**
104
+
105
+ 2. **本服务或算法模型百分百准确可靠、功能可用、持续稳定、不存在故障;**
106
+
107
+ 3. **AI 生成的内容(包括但不限于视频摘要、图片描述、事件检测结果等)仅供参考,实际结果可能因场景复杂性、数据质量、环境因素等原因而存在偏差。您不应将 AI 识别结果作为唯一决策依据,尤其是在涉及人身安全、财产保护等重要场景时,请结合其他方式进行验证。**
108
+
109
+ ## 相关文档
110
+ - TWeSee 计费说明
111
+
112
+ - TWeSee 接入指引
113
+
114
+ - [Demo 体验链接](https://console.cloud.tencent.com/iotexplorer/v2/goto-twesee-demo)
@@ -0,0 +1,99 @@
1
+ ---
2
+ product: iot
3
+ framework:
4
+ - '*'
5
+ types:
6
+ - feature
7
+ retrievable_scope: always
8
+ feature_domain: voice-recorder
9
+ ---
10
+
11
+ 本文介绍如何编译并运行录音卡 Android Demo。完成本文步骤后,您可以验证 Demo 的基础界面、BLE 录音卡绑定、实时录音、离线文件同步,以及云端语音识别能力。
12
+
13
+ ## 前提条件
14
+
15
+ ### 环境准备
16
+ - 安装 [Android Studio](https://developer.android.com/studio) 2025 及之后的版本。
17
+
18
+ - 准备一台 Android 8.0 及以上、支持 BLE 的 arm64-v8a 真机。
19
+
20
+ - 准备已实名认证的腾讯云账号,用于开通 ASR 服务。
21
+
22
+ - 手机需开启蓝牙,并授予 App 蓝牙与定位权限(Android 12 及以上为「附近的设备」权限),用于扫描和绑定录音卡。
23
+
24
+ ### 开通 ASR 服务
25
+
26
+ 请参见 [TRTC AI 智能语音](https://cloud.tencent.com/document/product/647/131288),创建应用并获取 TRTC SDKAppID 和 SDK 密钥,在后续运行时需要。
27
+
28
+ 控制台创建应用并获取 SDKAppID 与密钥
29
+
30
+ ## 下载并配置 Demo
31
+ 1. 从 GitHub 下载 [录音卡 Demo](https://github.com/Tencent-RTC/IoT_VoiceRecordingCard) 源码,或者直接在命令行运行以下命令:
32
+
33
+ ``` bash
34
+ git clone https://github.com/Tencent-RTC/IoT_VoiceRecordingCard.git
35
+ ```
36
+ 2. 通过 Android Studio 打开 `IoT_VoiceRecordingCard/android` 目录:
37
+
38
+ > **提示:**
39
+ >
40
+ > **Android Studio 推荐配置:**Demo 的 Gradle 构建要求 JDK 17,请按下述步骤将 Gradle JDK 改为17,否则首次同步会报错。
41
+ >
42
+ > 1. 打开 Android Studio 设置。
43
+ > - **Windows**:File > Settings
44
+ > - **Mac**:Android Studio > Preferences
45
+ > 2. 修改 Java 编译器设置。
46
+ > - 路径:Build, Execution, Deployment > Build Tools > Gradle
47
+ > - 将 Gradle JDK 改为 17(未安装时可直接选择 Android Studio 内嵌的 JetBrains Runtime 17)
48
+
49
+ 3. 将开通服务时获取的 SDKAppID 和 SDK 密钥填入 `android/app/src/main/java/com/recorder/client/trtc/TrtcUserSigConfig.java`:
50
+
51
+ ``` java
52
+ // 填入开通服务时获取的 SDKAppID 和 SDK 密钥
53
+ private static final int SDK_APP_ID = 0;
54
+ private static final String SECRET_KEY = "";
55
+ ```
56
+
57
+ ## 跑通 Demo
58
+
59
+ ### 步骤1:运行 Demo
60
+ 1. 开启手机开发者选项与 USB 调试(设置 > 关于手机 > 连续单击版本号7次),连接后允许调试授权。
61
+
62
+ 2. 等待 Gradle 首次同步完成再运行。
63
+
64
+ 3. 选择设备并编译和运行 Demo。
65
+
66
+ > **说明:**
67
+ >
68
+ > 本 Demo 默认集成了蓝牙能力,因此建议使用真机调试、运行 Demo。
69
+ >
70
+
71
+ ### 步骤2:扫描并绑定设备
72
+
73
+ 打开 App 扫描周边的录音卡设备,选择目标设备完成绑定:
74
+
75
+ ### 步骤3:实时 ASR 识别
76
+
77
+ 单击设备主页“轻点开始录音”右侧的录音按钮,进入实时 ASR 识别页面:
78
+
79
+ ### 步骤4:导出录音文件并转录
80
+
81
+ 结束录音后,先将录音文件从录音卡导出到 App,再发起云端非实时 ASR 识别,获得整段录音的完整转写结果:
82
+
83
+ ## 常见问题
84
+
85
+ ### 扫描不到录音卡设备
86
+
87
+ 请确认手机蓝牙已开启、App 已获得蓝牙与定位权限(Android 12 及以上为「附近的设备」权限),且录音卡已开机并处于可被发现状态。
88
+
89
+ ### Gradle 同步失败
90
+
91
+ 请确认 Gradle JDK 已设置为17(见 [下载并配置 Demo](#e8e5a4f6-bfbc-4a5e-80b5-abef26928915) 中的提示),并检查网络与代理配置后重新同步。
92
+
93
+ ### ASR 无识别结果
94
+
95
+ 请确认 `TrtcUserSigConfig.java` 中的 SDKAppID 与 SDK 密钥填写正确,且对应的应用已在控制台开通 ASR 服务。
96
+
97
+ ## 后续步骤
98
+
99
+ 跑通 Demo 后,如需将录音与语音识别能力集成到自有 App,请参见 [录音卡 Demo 源码仓库](https://github.com/Tencent-RTC/IoT_VoiceRecordingCard) 中的集成说明。