标签: android-audio-streams

MODE_IN_CALL、MODE_IN_COMMUNICATION、MODE_CALL_SCREENING 之间有什么区别?

文件是这么说的,但我不能完全理解。

/* modes for setMode/getMode/setRoute/getRoute */
    /**
     * Audio harware modes.
     */
    /**
     * Invalid audio mode.
     */
    public static final int MODE_INVALID            = AudioSystem.MODE_INVALID;
    /**
     * Current audio mode. Used to apply audio routing to current mode.
     */
    public static final int MODE_CURRENT            = AudioSystem.MODE_CURRENT;
    /**
     * Normal audio mode: not ringing and no call established.
     */
    public static final int MODE_NORMAL             = AudioSystem.MODE_NORMAL;
    /**
     * Ringing audio mode. An incoming is being signaled.
     */
    public static final int …
Run Code Online (Sandbox Code Playgroud)

android android-audiomanager android-audio-streams

8
推荐指数
1
解决办法
3151
查看次数

如何使用回调函数从流中读取数据。双簧管-Android

我目前正在开发一个需要低延迟音频的项目,因此我决定使用 Oboe(谷歌库)来处理它。

我已阅读该文档,但其中出现了多个问题。

首先,一旦我使用构建器模式创建流、打开流并请求流启动,我如何捕获从麦克风传入的数据?

我知道有两种方法:使用读取函数或回调。

问题:

  1. 但是,如果我使用读取函数,如何确保只要流启动就正在调用它?

  2. 如何使用回调来获取数据并进行处理?

我将在下面留下我的代码

void HelloOboeEngine::start() {
    isRecording = true;

    oboe::Result result = createStream();
    if (result != oboe::Result::OK) {
        closeStream(mRecordingStream);
    }

    result = mRecordingStream->requestStart();
    if (result != oboe::Result::OK) {
        closeStream(mRecordingStream);
    }
    
}


oboe::Result HelloOboeEngine::createStream() {
    oboe::AudioStreamBuilder builder;
    return builder.setPerformanceMode(oboe::PerformanceMode::LowLatency)
            ->setDirection(oboe::Direction::Input)
            ->setFormat(mFormat)
            ->setFormatConversionAllowed(true)
            ->setChannelConversionAllowed(true)
            ->setSampleRateConversionQuality(oboe::SampleRateConversionQuality::Medium)
            ->openStream(mRecordingStream);
}

void HelloOboeEngine::closeStream(std::shared_ptr<oboe::AudioStream> &stream) {
    if (stream) {
        oboe::Result result = stream->stop();
        if (result != oboe::Result::OK) {
            LOGW("Error stopping stream: %s", oboe::convertToText(result));
        }
        result = stream->close();
        if (result != oboe::Result::OK) …
Run Code Online (Sandbox Code Playgroud)

android oboe android-audio-streams

5
推荐指数
1
解决办法
381
查看次数