Android:监听辅助端口

Android: listen to the auxiliary port

我正在寻找一种方法让 Android 应用程序侦听来自 auxiliary 端口的信号并立即回放。通常此端口将用作声音(耳机)的 output,但我需要它来 listen(更像是麦克风)。我的最终目标是将公对公辅助(音频)电缆从我的电视耳机插孔连接到 android 设备的耳机插孔。然后,我需要一个可以将 input(从电视)广播到某些蓝牙耳机的应用程序。所以我的问题是,如何为耳机插孔设置监听器并立即播放 received/recorded?

的音频

我调查过的事情 - Audio Recording, Audio Track

正如您所指出的,您必须了解 link 中的 AudioRecord 和 AudioTrack classes 并尝试一些示例。

我想到了一个想法。实际上,可以使用 audiotrack class 播放一些声音,这样一来您就不必担心 AudioRecord。使用音轨,您可以生成自己的样本并播放它们。根据波形的性质,您可以播放它们并且每个都会有不同的声音。有在线音​​调发生器,如果你想更好地了解我,你可以检查一下 http://onlinetonegenerator.com/ 生成代表这些声波的样本可能是第一步,因为你将能够从你的 phone 中听到它们。

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

从 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;
       }
      }
    }