0
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

//Direct audio to speakers when there is no headphone
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];


[player setAllowsExternalPlayback:YES];
[player setUsesExternalPlaybackWhileExternalScreenIsActive: YES];
[player setAllowsAirPlayVideo:NO];

以上是我尝试设置适当的会话以启用 Airplay 的代码。它有时会起作用,但不管它是否起作用,它通常会请看附图在 Airplay 菜单中列出两次“iPhone”,有时不会显示实际的 Airplay 设备。点击这两个重复选项中的任何一个似乎都没有做任何事情。状态栏上的播放图标有时会出现,有时不会。我猜会话每次都没有正确设置。

谁能告诉我我在这里做错了什么?!另外,如果我想通过蓝牙启用播放,我是否需要实现一些其他委托?

4

2 回答 2

1

我今天看到你的帖子,在这种模式下使用你的代码:

在您的 AppDelegate .M 中:

NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];
[[AVAudioSession sharedInstance] setActive:NO error:nil];

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);

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

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

在你的 View.m 中使用这个:

[player setAllowsExternalPlayback:YES];
[player setUsesExternalPlaybackWhileExternalScreenIsActive: YES];
[player setAllowsAirPlayVideo:NO];//this is deprecated in iOS 6.0

希望这对您或未来的人有所帮助!

于 2013-04-10T09:58:00.810 回答
0

我明白了,但同时又简单又奇怪:) 你只需要删除这个功能。

这种方法:

[player setAllowsExternalPlayback:YES];
[player setUsesExternalPlaybackWhileExternalScreenIsActive: YES];
[player setAllowsAirPlayVideo:NO];//this is deprecated in iOS 6.0

变成:

[player setAllowsExternalPlayback:YES];
[player setUsesExternalPlaybackWhileExternalScreenIsActive: YES];

在您的info.plist中允许Required Background Modes并设置:App Plays AudioApp Communicates with an accessory,然后添加一行并设置:Application uses WiFi

仅此而已;)

PS:你可以帮我解决我的问题吗?谢谢

于 2013-04-17T08:09:45.337 回答