IOS GKVoiceChat iphone

Posted

技术标签:

【中文标题】IOS GKVoiceChat iphone【英文标题】: 【发布时间】:2014-02-15 16:09:34 【问题描述】:

我在 iphone 上遇到了 GKVoiceChat 的问题。当我用 iphone 和 ipad 测试语音聊天时,ipad 的输出声音通过扬声器响亮而清晰,但是当谈到 iphone 输出语音时,我必须把它放在我的耳朵里才能听到声音。

我可以选择音频输出,这样我就可以从扩音器中听到聊天了吗?

- (void) establishChat

    audioChat = YES;
    chat = [activeMatch voiceChatWithName:@"com.fazan.chat"];
    if (!chat)
    
        NSLog(@"Error establishing chat!");
        return;
    

    chat.playerStateUpdateHandler = ^(NSString *playerID, GKVoiceChatPlayerState state) 
        switch (state)
        
            case GKVoiceChatPlayerSpeaking:
                NSLog(@"***Speaking: %@", playerID);
                // Highlight player's picture
                break;
            case GKVoiceChatPlayerSilent:
                NSLog(@"***Silent: %@", playerID);
                // Dim player's picture
                break;
            case GKVoiceChatPlayerConnected:
                NSLog(@"***Connected: %@", playerID);
                // Show player name/picture
                break;
            case GKVoiceChatPlayerDisconnected:
                NSLog(@"***Disconnected: %@", playerID);
                // Hide player name/picture
                break;
         ;


    chat.active = NO; // disable mic by setting to NO
    chat.volume = 1.0f; // adjust as needed.

    NSLog(@"Connecting to channel");
    [chat start]; // stop with [chat end];

    NSLog(@"Chat: %@", chat.description);
    NSLog(@"Participants: %@", chat.playerIDs);

    // Establishing team chats and direct chat
    /*
     e.g. directChat = [match voiceChatWithName:@"Private Channel 1"];
     Each unique name specifies the chat
     */

    // muting: [chat setMute:YES/NO forPlayer: playerID];

【问题讨论】:

【参考方案1】:

这样做的原因是 iPhone 默认将音频路由到“接收器”扬声器(您耳边的那个)而不是底部的内置扬声器,当您还启用了输入时(如双向聊天)在游戏中)。 iPad 没有“接收器”扬声器,所以它只连接到内置扬声器。

您可以使用 Audiosession API 覆盖此默认设置。在将会话类别设置为 PlayAndRecord 后立即执行此操作:

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);

不过,请注意——通过扬声器播放聊天会导致一些反馈,因为从扬声器发出的音频将被麦克风拾取。最好使用带有内置麦克风的耳机来处理这种事情......

【讨论】:

以上是关于IOS GKVoiceChat iphone的主要内容,如果未能解决你的问题,请参考以下文章

IOS GKVoiceChat iphone

Java反转机制

iOS 自动布局 ios 7 与 ios 8

iOS 8、iOS 9、iOS 10 和 iOS 11 上的 UITabBar 的高度是多少?

最佳实践。通过支持 iOS 5、iOS 6 和 iOS 7 UI 使 iOS 应用程序通用

iOS 应用程序 - 如何仅为 iOS 8 用户添加 iOS 8 功能,同时仍支持所有 iOS 7 用户