【问题标题】:How can we handle enable/disable background audio abilities at runtime on iOS devices?我们如何在 iOS 设备上处理运行时启用/禁用背景音频功能?
【发布时间】:2012-05-17 06:43:31
【问题描述】:

我知道如何使用 plist 设置我的 iOS 应用程序以使其在后台播放音频(= 在 iOS 设备上使用另一个应用程序时)。

一些应用程序,例如: - 绽放 - 一些电台播放器

提供一个基本的 UISwitch 来启用或禁用此行为。

关于如何做到这一点的任何想法?

【问题讨论】:

    标签: ios audio background runtime plist


    【解决方案1】:

    在处理音频播放代码的主类中有一个 UIBackgroundTaskIdentifier 类型的 iVar,在启动音频播放器之前使用 beginBackgroundTaskWithExpirationHandler.... 方法初始化它,并在音频播放器完成时使用 endBackgroundTask。

    代码:

    @inerface AudioPlayerController : NSObject
    {
        UIBackgroundTaskIdentifier bgTaskID;
    }
    @end
    
    @implementation AudioPlayerController
    
    - (void) startPlayer
    {
    
        bgTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
    
       // Write code to start the audio player
    }
    
    // Call this when your program receives message of audio playing complete
    
    - (void) audioPlayComplete
    {
    
        // Do the audio playing finish
    
        if (bgTaskID != UIBackgroundTaskInvalid)
          [[UIApplication sharedApplication] endBackgroundTask:bgTaskID];
    } 
    
    @end
    

    【讨论】:

    • 我会测试一下。但它不响应将启用或禁用此背景功能的 UISwitch。我的意思是:用户想将应用程序用作背景的音频播放器,他启用了它。他不想要,他禁用它,在这种情况下,当他切换到另一个应用程序时,后台不再播放音频。
    • 上面的代码是为了演示我们如何以编程方式进行背景音频播放。使用 UISwitch 启用或禁用可以通过获取另一个 BOOL iVar 并有条件地编写后台任务代码来实现。
    【解决方案2】:

    在您的 AppDeletate 中:

    - (void)applicationDidEnterBackground:(UIApplication *)application {
        [[YouPlayerClass sharedInstance] stop];
    }
    

    因此音频在应用程序进入后台时停止。

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 2017-12-02
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      相关资源
      最近更新 更多