Android:听辅助端口

时间:2016-01-03 20:56:57

标签: android audio audio-recording audiorecord

我正在寻找让Android应用程序收听来自辅助端口的信号并立即播放的方法。通常这个端口将用作声音(耳机)的输出,但我需要它来收听(更像是麦克风)。我的最终目标是将男性辅助(音频)电缆从我的电视耳机插孔连接到Android设备的耳机插孔。然后,我需要一个可以将输入(从电视)广播到某些蓝牙耳机的应用程序。所以我的问题是,如何设置耳机插孔的监听器并立即播放接收/录制的音频?

我调查过的事情 - Audio RecordingAudio Track

1 个答案:

答案 0 :(得分:0)

正如您所指出的那样,您必须从链接中了解AudioRecord和AudioTrack类并使用一些示例。

我想到了一个想法。实际上可以使用audiotrack类播放一些声音,这样你就不用担心AudioRecord了。使用音频轨道,您可以生成自己的样本并播放它们。根据波形的性质,您可以播放它们,每个都会有不同的声音。有在线音​​调生成器,如果你想更好地了解我,可以查看它http://onlinetonegenerator.com/生成代表这些声波的样本可能是第一步,因为你可以通过手机听到它们。

之后你应该开始“玩蓝牙设备和手机之间的连接。一旦你知道声波如何工作,你可以尝试通过蓝牙协议将该文件发送到设备并检查它是否有效。

从asyncTask到主线程中的另一个操作之间的通信方式是通过publishProgress(nameOfTheSample),因此在使用蓝牙连接时,你应该从那里获取样本。

完成后,您可以担心电视的声音。

    private class GenerateSamples extends AsyncTask<Void, Void, Void>
    {
    @Override
    protected Void doInBackground(Void... params) {
    final int SAMPLE_RATE = 8000;
    int minSize = AudioTrack.getMinBufferSize(SAMPLE_RATE,
    AudioFormat.CHANNEL_CONFIGURATION_MONO,
    AudioFormat.ENCODING_PCM_16BIT);
    AudioTrack audioTrack = new AudioTrack(
    AudioManager.STREAM_MUSIC, SAMPLE_RATE,
    AudioFormat.CHANNEL_CONFIGURATION_MONO,
    AudioFormat.ENCODING_PCM_16BIT,
    minSize,
    AudioTrack.MODE_STREAM);
    audioTrack.play();

    short[] buffer = {
    8130,15752,22389,27625,31134,32695,32210,29711,25354,19410,12253,
    4329,-3865,-11818,-19032,-25055,-29511,-32121,-32722,-31276,-27874,
    -22728,-16160,-8582,-466
    };

    while (isPlaying) {
    audioTrack.write(buffer, 0, buffer.length);
    }
    return null;
       }
      }
    } 
相关问题