| 
 | 
 
原程序: 
- #!/usr/bin/env python3
 
 - import asyncio import websockets import sys import wave
 
 - async def run_test(uri): async with websockets.connect(uri) as websocket:
 
 -     wf = wave.open(sys.argv[1], "rb")
 
 -     await websocket.send('{ "config" : { "sample_rate" : %d } }' % (wf.getframerate()))
 
 -     buffer_size = int(wf.getframerate() * 0.2) # 0.2 seconds of audio
 
 -     print("@@@@@@")
 
 -     while True:
 
 -         data = wf.readframes(buffer_size)
 
  
-         if len(data) == 0:
 
 -             break
 
  
-         await websocket.send(data)
 
 -         print (await websocket.recv())
 
  
-     print("******")
 
 -     await websocket.send('{"eof" : 1}')
 
 -     print (await websocket.recv())
 
 - asyncio.run(run_test('ws://*.*.*.*:***')
 
  复制代码 将Python WebSocket客户端程序转换为Android Java版本,并避免使用javax.sound.sampled库。以下是完整的实现: 
关键转换点: 
1、移除Java Sound API依赖:完全移除了javax.sound.sampled相关导入和使用 
2、文件读取:使用FileInputStream替代Python的wave.open来读取音频文件 
3、异步处理:通过新线程处理音频数据发送,避免阻塞主线程 
4、WebSocket通信: 
   在onOpen中启动音频发送流程 
   使用send方法发送数据和配置信息 
   实现onMessage处理服务器响应 
5、缓冲区管理:设置0.2秒的音频数据块大小(假设16kHz采样率,16位深度) 
6、资源清理:在适当位置关闭文件流,防止资源泄漏 
使用时,创建AudioSocketClient实例并调用connect()方法即可建立WebSocket连接并开始传输音频数据。 
 
 
 |   
 
 
 
 |