Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 388|回复: 0

以下是几种获取 [onMessage]结果的使用示例:

[复制链接]

465

主题

640

帖子

3734

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3734
发表于 2025-11-21 14:11:42 | 显示全部楼层 |阅读模式
根据代码分析,[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;
}
```


这样就可以在外部获取或设置回调处理逻辑。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2026-2-4 10:48 , Processed in 0.011709 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表