|
|
根据代码分析,[mCallBack](file://C:\s_c\MyApplication\app\src\main\java\cn\unicoder\myapplication\AudioSocketClient.java#L36-L36) 是 [AudioSocketClient](file://C:\s_c\MyApplication\app\src\main\java\cn\unicoder\myapplication\AudioSocketClient.java#L16-L169) 类的私有成员变量,类型为 [MyRecognitionCallback](file://C:\s_c\MyApplication\app\src\main\java\cn\unicoder\myapplication\AudioSocketClient.java#L25-L34),主要用于在 [onMessage](file://C:\s_c\MyApplication\app\src\main\java\cn\unicoder\myapplication\AudioSocketClient.java#L60-L72)、[onClose](file://C:\s_c\MyApplication\app\src\main\java\cn\unicoder\myapplication\AudioSocketClient.java#L73-L79) 和 [onError](file://C:\s_c\MyApplication\app\src\main\java\cn\unicoder\myapplication\AudioSocketClient.java#L80-L86) 方法中回调处理结果。
以下是几种获取 [onMessage]结果的使用示例:
## 1. 通过继承扩展回调处理
```java
public class CustomAudioSocketClient extends AudioSocketClient {
private CustomRecognitionCallback customCallback;
public CustomAudioSocketClient(URI serverUri, String audioFilePath) {
super(serverUri, audioFilePath);
}
public void setCustomCallback(CustomRecognitionCallback callback) {
this.customCallback = callback;
}
@Override
public void onMessage(String message) {
super.onMessage(message);
// 调用自定义回调处理
if (customCallback != null) {
customCallback.onMessageReceived(message);
}
}
public interface CustomRecognitionCallback {
void onMessageReceived(String message);
}
}
```
## 2. 在Activity中使用
```java
public class MainActivity extends AppCompatActivity {
private static final String SERVER_URI = "ws://your-server-address:port";
private static final String AUDIO_FILE_PATH = "/sdcard/audio.wav";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
CustomAudioSocketClient client = new CustomAudioSocketClient(
new URI(SERVER_URI),
AUDIO_FILE_PATH
);
client.setCustomCallback(new CustomAudioSocketClient.CustomRecognitionCallback() {
@Override
public void onMessageReceived(String message) {
// 处理接收到的消息
Log.d("MainActivity", "Received message: " + message);
}
});
client.connect();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
```
## 3. 通过修改AudioSocketClient访问mCallBack
如果需要直接访问 `mCallBack`,可以修改 `AudioSocketClient` 类:
```java
// 在 AudioSocketClient 类中添加公共方法
public MyRecognitionCallback getCallback() {
return mCallBack;
}
// 或者添加设置回调的方法
public void setRecognitionCallback(MyRecognitionCallback callback) {
this.mCallBack = callback;
}
```
这样就可以在外部获取或设置回调处理逻辑。
|
|