Skip to content

Commit 4d4e436

Browse files
committed
feat: implememts all modules for android platform
1 parent d2377b5 commit 4d4e436

17 files changed

+585
-214
lines changed

README.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,13 @@ RealTimeRecognizerModuleEmitter.addListener(
9393

9494
- onSliceRecognize
9595
- onSegmentSuccessRecognize
96-
- didFinish
97-
- didError
98-
- didStartRecord
99-
- didStopRecord
100-
- didUpdateVolume
101-
- didSaveAudioDataAsFile
96+
- onSliceSuccessRecognize
97+
- onErrorRecognize
98+
- onStartRecord
99+
- onStopRecord
100+
- onUpdateVolume
101+
- onSilentDetectTimeOut(仅支持Android)
102+
- onSaveAudioDataAsFile
102103
- onError
103104

104105
### 一句话识别
@@ -164,10 +165,10 @@ OneSentenceRecognizerModuleEmitter.addListener(
164165

165166
详细事件列表,请查看SDK文档, https://cloud.tencent.com/document/product/1093/36502
166167

167-
- didRecognize
168-
- didStartRecord
169-
- didEndRecord
170-
- didUpdateVolume
168+
- onRecognize
169+
- onStartRecord
170+
- onStopRecord
171+
- onUpdateVolume
171172
- onError
172173

173174
### 录音文件识别极速版

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ android {
6363

6464
lintOptions {
6565
disable "GradleCompatible"
66-
disable "LongLogTag"
6766
}
6867

6968
compileOptions {
@@ -84,6 +83,7 @@ dependencies {
8483
//noinspection GradleDynamicVersion
8584
implementation "com.facebook.react:react-native:+"
8685
implementation 'com.google.code.gson:gson:2.8.5'
86+
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
8787
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
8888
}
8989

android/src/main/java/com/tencentasr/TencentAsrPackage.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.facebook.react.uimanager.ViewManager;
88
import com.tencentasr.module.FlashFileRecognizerModule;
99
import com.tencentasr.module.OneSentenceRecognizerModule;
10+
import com.tencentasr.module.RealTimeRecognizerModule;
1011
import java.util.ArrayList;
1112
import java.util.Collections;
1213
import java.util.List;
@@ -19,6 +20,7 @@ public class TencentAsrPackage implements ReactPackage {
1920
List<NativeModule> modules = new ArrayList<>();
2021
modules.add(new FlashFileRecognizerModule(reactContext));
2122
modules.add(new OneSentenceRecognizerModule(reactContext));
23+
modules.add(new RealTimeRecognizerModule(reactContext));
2224
return modules;
2325
}
2426

android/src/main/java/com/tencentasr/module/FlashFileRecognizerModule.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private void sendEvent(ReactContext reactContext, String eventName,
4747
WritableMap params) {
4848
reactContext
4949
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
50-
.emit(eventName, params);
50+
.emit(ModuleName + "." + eventName, params);
5151
}
5252

5353
@ReactMethod
@@ -56,7 +56,9 @@ public void addListener(String eventName) {}
5656
@ReactMethod
5757
public void removeListeners(Integer count) {}
5858

59+
// 模块名称
5960
@Override
61+
@NonNull
6062
public String getName() {
6163
return ModuleName;
6264
}
@@ -126,15 +128,15 @@ public void recognize(ReadableMap configParams, Promise promise) {
126128
if (audioFilePath == null) {
127129
sendErrorEvent(FlashFileRecognizerModuleErrorTypes.PARAMETER_MISSING,
128130
"audioFilePath参数缺失");
129-
promise.reject(new RuntimeException("audioFilePath参数缺失"));
131+
promise.reject("audioFilePath参数缺失");
130132
return;
131133
}
132134

133135
File audioFile = new File(audioFilePath);
134136
if (!audioFile.exists()) {
135137
sendErrorEvent(FlashFileRecognizerModuleErrorTypes.FILE_DOES_NOT_EXIST,
136138
"音频文件不存在");
137-
promise.reject(new RuntimeException("音频文件不存在"));
139+
promise.reject("音频文件不存在");
138140
return;
139141
}
140142
try {
@@ -149,12 +151,12 @@ public void recognize(ReadableMap configParams, Promise promise) {
149151
} catch (Exception e) {
150152
sendErrorEvent(FlashFileRecognizerModuleErrorTypes.RECOGNIZE_FAILED,
151153
e.getMessage());
152-
promise.reject(new RuntimeException(e.getMessage()));
154+
promise.reject(e.getMessage());
153155
}
154156
} catch (Exception e) {
155157
sendErrorEvent(FlashFileRecognizerModuleErrorTypes.FILE_READ_FAILED,
156158
"读取音频文件失败");
157-
promise.reject(new RuntimeException("读取音频文件失败"));
159+
promise.reject("读取音频文件失败", e);
158160
}
159161
}
160162

@@ -167,8 +169,7 @@ public void recognizeResult(QCloudFlashRecognizer recognizer, String result,
167169
if (resultJson.getInt("code") == 0) {
168170
_promise.resolve(ReactNativeJsonUtils.convertJsonToMap(resultJson));
169171
} else {
170-
_promise.reject(
171-
new RuntimeException(resultJson.getString("message")));
172+
_promise.reject(resultJson.getString("message"));
172173
}
173174
} catch (Exception e) {
174175
sendErrorEvent(FlashFileRecognizerModuleErrorTypes.RECOGNIZE_FAILED,
@@ -177,8 +178,8 @@ public void recognizeResult(QCloudFlashRecognizer recognizer, String result,
177178

178179
} else {
179180
sendErrorEvent(FlashFileRecognizerModuleErrorTypes.RECOGNIZE_FAILED,
180-
exception.getLocalizedMessage());
181-
_promise.reject(new RuntimeException(exception.getLocalizedMessage()));
181+
exception.getMessage());
182+
_promise.reject(exception.getMessage());
182183
}
183184
}
184185
}

android/src/main/java/com/tencentasr/module/OneSentenceRecognizerModule.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
package com.tencentasr.module;
33
import android.app.Activity;
44
import android.util.Log;
5+
import androidx.annotation.NonNull;
56
import com.facebook.react.bridge.Arguments;
67
import com.facebook.react.bridge.ReactApplicationContext;
78
import com.facebook.react.bridge.ReactContext;
@@ -56,15 +57,17 @@ private void sendEvent(ReactContext reactContext, String eventName,
5657
WritableMap params) {
5758
reactContext
5859
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
59-
.emit(eventName, params);
60+
.emit(ModuleName + "." + eventName, params);
6061
}
6162
@ReactMethod
6263
public void addListener(String eventName) {}
6364

6465
@ReactMethod
6566
public void removeListeners(Integer count) {}
6667

68+
// 模块名称
6769
@Override
70+
@NonNull
6871
public String getName() {
6972
return ModuleName;
7073
}
@@ -203,13 +206,12 @@ public void recognizeResult(QCloudOneSentenceRecognizer recognizer,
203206
try {
204207
JSONObject resultJson = new JSONObject(result);
205208
JSONObject response = resultJson.getJSONObject("Response");
206-
WritableMap resultBody = Arguments.createMap();
207209
if (response.has("Error")) {
208210
JSONObject errorObject = response.getJSONObject("Error");
209211
sendErrorEvent(errorObject.getString("Code"),
210212
errorObject.getString("Message"));
211213
} else {
212-
sendEvent(_reactContext, "didRecognize",
214+
sendEvent(_reactContext, "onRecognize",
213215
ReactNativeJsonUtils.convertJsonToMap(response));
214216
}
215217
} catch (Exception e) {
@@ -223,6 +225,20 @@ public void recognizeResult(QCloudOneSentenceRecognizer recognizer,
223225
}
224226
}
225227

226-
public void didStartRecord() { Log.i("一句话识别模块", "didStartRecord"); }
227-
public void didStopRecord() { Log.d("一句话识别模块", "didStopRecord"); }
228+
public void didStartRecord() {
229+
Log.i(ModuleName, "回调didStartRecord");
230+
sendEvent(_reactContext, "onStartRecord", Arguments.createMap());
231+
}
232+
233+
public void didStopRecord() {
234+
Log.i(ModuleName, "回调didStopRecord");
235+
sendEvent(_reactContext, "onStopRecord", Arguments.createMap());
236+
}
237+
238+
public void didUpdateVolume(int volumn) {
239+
Log.i(ModuleName, "回调didUpdateVolume");
240+
WritableMap resultBody = Arguments.createMap();
241+
resultBody.putInt("volumn", volumn);
242+
sendEvent(_reactContext, "onUpdateVolume", resultBody);
243+
}
228244
}

0 commit comments

Comments
 (0)