Android:监听辅助端口

Posted

技术标签:

【中文标题】Android:监听辅助端口【英文标题】:Android: listen to the auxiliary port 【发布时间】:2016-01-03 20:56:56 【问题描述】:

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

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

【问题讨论】:

“通常此端口将用作声音的输出(耳机)”——嗯,对于大多数 Android 移动设备,耳机插孔同时支持两者。这就是有线耳机工作的原因。有 Y 型电缆为输入和输出信号提供单独的插孔,并将它们合并为设备耳机插孔的单个插头。获取其中之一,然后使用您链接到的内容。 【参考方案1】:

正如您所指出的,您必须从链接中了解 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;
       
      
     

【讨论】:

谢谢,使用您的一些代码以及其他一些东西,我能够完成我在问题中提出的问题。但是,我仍然无法让它的蓝牙部分工作。对此还有什么建议吗? @eduardo92

以上是关于Android:监听辅助端口的主要内容,如果未能解决你的问题,请参考以下文章

Android辅助功能AccessibilityService监听当前包名变化

Android辅助功能AccessibilityService监听当前包名变化

Adb connect监听指定的主机和端口/Adb监听Visual Studio Emulator for Android模拟器

lamp +discuz+wordpress+phpmyadmin实例安装详解

程序所要使用的端口被占用,请关闭其他程序后再试?

如何让 XAMPP Apache 监听多个网络端口?