【问题标题】:What could possibly change sound output什么可能会改变声音输出
【发布时间】:2019-06-24 06:54:21
【问题描述】:

我正在开发一个 Android 应用程序,该应用程序处理我需要向其发送一些信号(例如特定的方波,在设备的固件中硬编码)的设备。

Superpowered Audio 一切正常,但现在我正在迁移到双簧管,这些信号不再起作用。我的信号生成代码没有改变,所以我想知道在哪里可以改变输出。

在我的广播接收器中,我有这段代码可以将输出音量设置为最大:

audioManager.setStreamVolume(
          AudioManager.STREAM_MUSIC,
          audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
          0);

清单包含以下内容:

  <uses-feature android:name="android.hardware.usb.host" android:required="true"/>
  <uses-feature android:name="android.hardware.microphone" android:required="true" />
  <uses-feature android:name="android.hardware.audio.output" android:required="true" />

  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

播放流是这样配置的:

builder->setCallback(this)
      ->setDeviceId(outputDeviceId)
      ->setDirection(oboe::Direction::Output)
      ->setChannelCount(oboe::ChannelCount::Stereo)
      ->setFormat(oboe::AudioFormat::I16)
      ->setSampleRate(samplerate)
      ->setSharingMode(oboe::SharingMode::Exclusive)
      ->setPerformanceMode(oboe::PerformanceMode::LowLatency)
      ->setInputPreset(oboe::InputPreset::Unprocessed);

播放了一些声音,我听的时候能听到,所以我的回调正常工作,但设备无法解析信号。手机未处于“请勿打扰”模式,我禁用了均衡器。

我正在运行 OxygenOS 9.0.6 (Android 9) 的 OnePlus 5t 上测试所有这些,但我没有想法。

【问题讨论】:

  • “播放了一些声音,我听的时候可以听到,所以我的回调正常工作,但设备无法解析信号” - 您希望听到的和您听到的有什么区别真的听到了吗?它只是更安静还是有一些失真/听觉伪影?
  • 另外,双簧管示例应用在您的测试设备上是否正常工作?
  • 我不知道是否有区别:我听不到设备接收的内容,它只听它的输入,不输出任何东西(我可能应该提到它是一个USB音频设备)。为了测试输出,我使用了 DAC 并用耳机收听。信号听起来不错,但我不知道真正发送到我的特定设备的是什么。我的代码基于 LiveEffect 示例,它可以正常工作。

标签: android audio android-ndk oboe


【解决方案1】:

看来问题不在于双簧管。我在 Nexus 5 上尝试了我的应用程序,它工作正常。我怀疑一些 OxygenOS 设置,但我找不到它是什么,我正在慢慢开始放弃......

【讨论】:

    猜你喜欢
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    相关资源
    最近更新 更多