【问题标题】:How to cancel Everyplay SDK recording when app goes to background?应用程序进入后台时如何取消 Everyplay SDK 录制?
【发布时间】:2013-11-21 08:06:56
【问题描述】:

我正在使用 Everyplay SDK 在我的游戏中录制视频。我观察到,当everyplay 录制视频并且应用程序使用iPhone 的主页按钮在后台/暂停时,Everyplay 暂停录制并在应用程序返回前台时恢复录制。我想在用户暂停应用程序时完全停止录制,并且在前台运行时不应再次开始录制。

我在打电话

[[[Everyplay sharedInstance] capture] stopRecording];

当录制时,我的应用收到 UIApplicationWillResignActiveNotification 但没有帮助。 Everyplay 在激活时会自动暂停并重新启动。

如何才能完全停止录制?

【问题讨论】:

  • 您是否尝试在 AppDelegate 的 applicationWillResignActive 方法中停止 Everyplay?这将保证在 Everyplay 收到 UIApplicationWillResignActiveNotification 之前调用停止,因为在通知之前调用了应用程序委托挂起/恢复方法。
  • 不,我没试过。当收到 UIApplicationWillResignActiveNotification NSNotification 时,我正在尝试停止视图控制器中的录制。我现在就试试。
  • 好的。我再次对此进行了测试,并尝试在 AppDelegate 的 applicationWillResignActive 方法中停止 Everyplay 录制。结果是一样的,即当应用重新激活时,录制会自动恢复。
  • 我也测试过,你是对的。但是我找到了解决问题的方法。贴在下面。

标签: ios iphone video-capture everyplay


【解决方案1】:

看来你需要等待录制线程完全停止。您还必须在 AppDelegate 的 applicationWillResignActive 方法中停止。

- (void)applicationWillResignActive:(UIApplication *)application {
    [[[Everyplay sharedInstance] capture] stopRecording];
    while([[[Everyplay sharedInstance] capture] isRecording]) {
        NSLog(@"Waiting for recording thread to stop.");
    }
...

【讨论】:

  • 我使用了一种不同的方法来解决这个问题。当我的应用程序进入前台并反复检查是否开始录制时,我创建了一个 NSTimer(持续时间为 1 秒)。如果它开始录制,我会明确停止它并使计时器无效。如果我需要开始录制,如果仍在运行,我会使计时器无效,然后开始录制。不知道我的方法是好是坏,但效果很好。
  • Everyplay 1.7.2 包含与暂停/恢复行为相关的修复。可能不再需要 while 循环或计时器技巧。
  • 当应用程序进入后台时,Everyplay 是否会自动取消录制,还是我需要为此添加一些代码?我已经将 Everyplay SDK 升级到 1.7.2(没有对代码进行任何更改),但我的计时器黑客仍在踢出恢复的录制。
  • 如果您在挂起时不停止或手动暂停,Everyplay 将在从后台返回时继续录制。
  • 是的!应用程序恢复时似乎没有开始录制。 My timer hack 现在正在停止我在恢复后的实际(有意)录制。
猜你喜欢
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多