Iphone MPMoviePlayer在应用程序转到后台时播放
我正在使用iOS5 我正在从事HTTPLivestream项目。这里我使用的是MPMovieplayer,我的问题是当应用程序转到后台时没有音频。我正在改变plist的背景模式是音频。但没有结果,请帮助我 阿普德尔 无线电控制视图Iphone MPMoviePlayer在应用程序转到后台时播放,iphone,objective-c,ios5,mpmovieplayercontroller,Iphone,Objective C,Ios5,Mpmovieplayercontroller,我正在使用iOS5 我正在从事HTTPLivestream项目。这里我使用的是MPMovieplayer,我的问题是当应用程序转到后台时没有音频。我正在改变plist的背景模式是音频。但没有结果,请帮助我 阿普德尔 无线电控制视图 提前感谢您需要结合ios5中的后台支持设置进行远程控制设置- //为远程控制注册你的应用程序 if([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemot
提前感谢您需要结合ios5中的后台支持设置进行远程控制设置- //为远程控制注册你的应用程序
if([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)])
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
// allows you to play in the background when app is suspended in iOS5
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:nil];
将这两个设置放置在application didFinishLaunching delegate中您需要结合ios5中的后台支持设置进行远程控制设置- //为远程控制注册你的应用程序
if([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)])
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
// allows you to play in the background when app is suspended in iOS5
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:nil];
将这两个设置放置在application didFinishLaunching delegate中在初始化播放器之前尝试激活音频会话,例如在app launch delegate中:
- (void)applicationDidFinishLaunching:(UIApplication *)application
NSError *error = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
// other init stuff ...
}
PS:您需要在设备上才能使用音频会话,模拟器不会将其切断。在初始化播放器之前尝试激活音频会话,例如在应用程序启动代理中:
- (void)applicationDidFinishLaunching:(UIApplication *)application
NSError *error = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
// other init stuff ...
}
PS:您需要在设备上进行音频会话才能工作,模拟器不会切断它。如果您在模拟器上测试,那么它在模拟器上不工作,请使用设备。若你们正在使用设备,并且音频并没有在后台播放,那个么你们可以通过电子邮件将你们的完整源代码发送给我吗khalid0491@gmail.com. 我在申请表中也做了。 我的代码如下
- (void)viewDidLoad
{
[super viewDidLoad];
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
}
在plist中,我制作了一个名为“Required background mode”的数组,并在数组名中插入一项“App Plays Audio”。如果您在模拟器上测试,那么它在模拟器上不工作,请使用该设备。若你们正在使用设备,并且音频并没有在后台播放,那个么你们可以通过电子邮件将你们的完整源代码发送给我吗khalid0491@gmail.com. 我在申请表中也做了。 我的代码如下
- (void)viewDidLoad
{
[super viewDidLoad];
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
}
在plist中,我制作了一个名为“Required background mode”的数组,并在数组名中插入了一个项目,“App Plays Audio”。感谢您的重播,但仍然无法工作,电影播放器是否可以工作background@Nag-如果您只需要音频,则可以使用AVAudioPlayer而不是MPMoviePlayer。感谢您的重播,但仍然无法正常工作,有可能是电影播放器在工作吗background@Nag-如果您只需要音频,则可以使用AVAudioPlayer而不是MPMoviePlayer。遥控设置通常与音频会话配置无关!感谢您的重播,但仍然无法工作。是否可能电影播放器在后台工作是的,您在ios4之前工作是正确的,但在iOS5中,我们需要背景音频支持的设置(遥控和背景设置)。遥控设置通常与音频会话配置无关!感谢您的重播,但仍然无法工作..是否有可能电影播放器在后台工作是的,当您工作到ios4时您是对的,但在iOS5中,我们需要背景音频支持的设置(遥控器和背景设置)。您在Plist中正确添加了吗???我第一次在数组“Required Background Modes”之外而不是数组内部添加字符串。真是太棒了,哈立德·乌斯曼先生……它比你花那么多宝贵的时间更有效。问题就在这里不,问题!你也应该对与plist相关的评论投赞成票,也许这会对其他人有所帮助。Thanks@Khalidi只需编辑u r代码..添加以下行(必须)[[UIApplication sharedApplication]beginReceivingRemoteControlEvents];UIBackgroundTaskIdentifier newTaskId=UIBackgroundTaskInvalid;newTaskId=[[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:NULL]@Nag_iphone,不需要取消已接受答案的标记。为了您的理解,我只粘贴了最简单的代码,否则我已经实现了它和其他代码。请注意,没有必要将[UIApplication sharedApplication]之类的代码放在ViewDidLoad中,您可以根据您的逻辑在任何地方执行,我的代码工作正常。您是否已在Plist中正确添加了这些代码???我第一次在数组“Required Background Modes”之外而不是数组内部添加字符串。真是太棒了,哈立德·乌斯曼先生……它比你花那么多宝贵的时间更有效。问题就在这里不,问题!你也应该对与plist相关的评论投赞成票,也许这会对其他人有所帮助。Thanks@Khalidi只需编辑u r代码..添加以下行(必须)[[UIApplication sharedApplication]beginReceivingRemoteControlEvents];UIBackgroundTaskIdentifier newTaskId=UIBackgroundTaskInvalid;newTaskId=[[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:NULL]@Nag_iphone,不需要取消已接受答案的标记。为了您的理解,我只粘贴了最简单的代码,否则我已经实现了它和其他代码。请注意,没有必要将类似[UIApplication sharedApplication]的代码放在ViewDidLoad中,您可以根据您的逻辑在任何地方执行,我的代码工作正常。