java - Java Android DC音频输出

标签 java android audio robotics

我想将可控的直流电压输出到android设备的音频插孔中。我当前的解决方案是创建一个1秒的数组,其中包含要输出的波形的PCM信息(在这种情况下为平线)。

问题在于,每隔一秒就会出现一个小故障,使输出瞬间下降到零伏。我相信这是在创建音频资源实例时发生的。

您可以看到音频是在其自己的线程中处理的。我将在另一个线程中更改generateSnd数组​​。

有更流畅的方法吗?我觉得流媒体是一路走,但我无法理解。

private class OutDACrunnable
    implements Runnable {

    public void run() {
        while (! done) {

        audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
                sampleRate, AudioFormat. CHANNEL_OUT_STEREO,
                AudioFormat.ENCODING_PCM_16BIT, generatedSnd.length,
                AudioTrack.MODE_STATIC);

        audioTrack.write(generatedSnd, 0, generatedSnd.length);

        if (audioManager.isWiredHeadsetOn()) { } // use this later

        audioTrack.play();

        // wait until playback is complete
        int x = 0;
        do {
            if (audioTrack == null) {
                x = numSamples;
            } else {
                x = audioTrack.getPlaybackHeadPosition(); 
            }
        } while (x < numSamples);

        if (audioTrack != null) audioTrack.release();

        }
    }

} // OutDACrunbable

谢谢。

最佳答案

不幸的是,您无法从音频插孔输出DC。音频I / O设计为传递变化的信号,通常说来高于20 Hz。如果尝试输出直流电,您会得到类似脉冲的声音,这听起来像您正在得到的。

关于java - Java Android DC音频输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950739/

相关文章:

java - 如何将 Firestore 中的 MultyAutoCompleteTextView 保存为 boolean 值?

java.io.IOException : mark/reset not supported Java Audio Input Stream/Buffered Input Stream 异常

iphone - 如何在 iPhone 上编写实时准确的音频音序器?

java - 覆盖 AWT 并存储图形

java - 用Java下载邮件附件

java - Java 中 CSV 文件中的 ArrayIndexOutOfBoundsException

java - 如何使用代码在android中显示菜单?

android - Phonegap Cordova 2.0.0 Android apk 错误

javascript - 如何使用 Javascript “autotune” 录制声音

java - 如果调用 ScheduleWithFixedDelay 方法的次数超过池大小,ScheduledExecutorService 如何工作?