3

我正在尝试做的事情:在 C(linux) 中读取 .wav 文件,通过蓝牙 rfcomm 套接字转发缓冲区数据,在 android 中接收缓冲区,然后将缓冲区提供给音轨播放。(需要 android 应用程序播放音频流)代码:

1- rfcomm 套接字创建的 C 代码 rfcomm 套接字的 C代码

2 - 用于转发数据的 C 代码

    FILE *fp;
    char buffer[1024];
    fp = fopen("feelgood.wav","r"); //for audio track use reading .wav file
    while(i=fread(buffer, sizeof(buffer),1, fp) > 0){
        status=write(bluetooth_socket, buffer,strlen(buffer));
        usleep(100000);
    } 

3- 用于从套接字读取的 Android 代码是这样的:

//Audio Track initialization for Streaming
AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC,44100,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_8BIT,10000, AudioTrack.MODE_STREAM);
track.play();

//Receiving data from socket
byte[] buffer = new byte[1024];
int bytes;
bytes = socket.getInputStream().read(buffer);
track.write(buffer, 0,bytes);

问题:实际上问题我不明白为什么音轨无法正常播放(听到有很多噪音的音频音乐的提示)。如何使用这种方法在 Android 应用程序部分收听无噪音音频。是否存在音轨实现问题或缓冲区问题. 相关问题(在 Android 中通过蓝牙接收音频)但不能在 Android 上遵循 a2dp 方法作为接收器。

4

0 回答 0