【问题标题】:AVAudioSession: Some Bluetooth devices are not working properly on my AppAVAudioSession:某些蓝牙设备在我的应用程序上无法正常工作
【发布时间】:2016-06-10 20:19:10
【问题描述】:

我正在使用 AVAudioSession 开发一个快速的音频/视频和文本聊天 iOS 应用程序。

每当我选择使用某些蓝牙设备时,设备上播放的声音不是 App 音频流。每当发送/接收消息时,它们只会播放文本聊天库发送的系统声音。并非所有蓝牙设备都会发生这种情况,其中一些设备一切正常。在内置麦克风和扬声器上,该应用程序也可以正常工作。

以下是我班级管理设备的最重要方法:

class MyAudioSession
{
    private var mAudioSession: AVAudioSession;

    init!()
    {
        self.mAudioSession = AVAudioSession.sharedInstance();

        do {
            try self.mAudioSession.setActive(false);

            try self.mAudioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: .AllowBluetooth);
            try self.mAudioSession.setMode(AVAudioSessionModeVideoChat);
            try self.mAudioSession.setActive(true);
        }
        catch {
            return nil;
        }
    }

    func switchToDevice(device: AVAudioSessionPortDescription!) -> Bool
    {
        var ret = false;

        if (device != nil) {
            do {
                try self.mAudioSession.setPreferredInput(device);

                ret = true;
            }
            catch {
                self.logSwitch(device, error: error);
            }
        }

        return ret;
    }
}

我想了解为什么我的应用程序无法在某些蓝牙设备上正常运行。这些相同的设备在我的 Cel 上的其他应用程序上正常工作。

我做了另一个测试:我为 MPVolumeView 更改了所有这些,并且发生了完全相同的问题,所以问题似乎出在音频播放器上。

谁能给我一个解决这个问题的建议?

谢谢。

【问题讨论】:

  • Jorg,你有什么运气吗?我们遇到了同样的问题。有些应用程序适用于某些设备,我们的 AVAudioSession 不是。我正在记录它是一个 AVAudioSessionPortBluetoothA2DP 但玩它没有骰子。同样,适用于大多数 BT 设备,但不是少数选择的设备。
  • Jorg,如果你还在 SO,你介意看看我最近在 2018 年 4 月 9 日提出的问题吗?它似乎与您在这里所经历的相似。不胜感激! PS - 你解决过这个问题吗?

标签: ios iphone swift audio bluetooth


【解决方案1】:

乔格, 虽然这可能不是最好的答案,但我已经能够克服奇怪的蓝牙问题。我的问题似乎与您的问题相似,因为我也在使用:

AVAudioSessionCategoryPlayAndRecord

这导致我在某些蓝牙设备(不是全部,而是一些)上出现问题。

我最终将类别设置为:

AVAudioSessionCategoryPlayback

然后,当我需要录制时,我会将类别切换到:

AVAudioSessionCategoryRecord

然后在完成我的录制后返回播放。

这是目前我可以通过在不同输出(扬声器、耳机、蓝牙)之间切换获得一致结果的唯一方法。

希望对一些人有所帮助。猜测这是“AVAudioSessionCategoryPlayAndRecord”中的一个错误

【讨论】:

  • 感谢您的回答,我会测试您的解决方案。不幸的是,一旦我开发了视频会议应用程序,它就无法解决我的问题,因此该设备大部分时间都应保持在 PlayAndRecord 上。除此之外,在我的应用程序上无法正常工作的蓝牙设备在 WhatsApp 等其他应用程序上也能正常工作。
  • 没问题。对不起,我不会为你工作。如果您能够解决您的问题,请让我知道作为解决方案,这将不胜感激。谢谢。
猜你喜欢
  • 2013-06-24
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多