Tag: 服务

AudioServicesPlaySystemSound知道声音何时停止

我在用着 AudioServicesPlaySystemSound(soundID); 发挥声音,但我需要知道什么时候声音已经停止播放,那么这是什么代表呢? 谢谢!

在Swift中简单的服务,坚持只有前台?

我只是想要运行一些东西 每20秒就说一次 只是当应用程序是前景(明确地不运行时,背景) 显然,如果你不必费心去关注应用程序的进出,那将会更加优雅 这个问题,我很惊讶,学习与scheduleRepeating重申,在模拟器,它保持运行时,应用程序是在后台:这并不让我有信心,它明确不会在后台运行 (一些?什么?)设备 这个问题,我发现在一台设备上testing尽可能多的代/操作系统, scheduleRepeating重复烦人地将 (只在一些情况下)运行一次,只有当应用程序进入后台。 也就是说,一旦应用程序进入后台,它将运行“一次”。 吸。 所以要重复一下:在iOS中,如何拥有一个每20秒运行一次的简单服务,并且只在应用程序处于前台运行时运行,并且它是无忧无虑的。理想情况下,您不必重新启动它,它或应用程序的生命中的任何东西… 真的做这么简单的事情最好的办法是什么? 这是我的(似乎)工作的解决scheme,这是不雅的。 当然有一个内置的方式,或者什么,在iOS做这样一个明显的事情? open class SomeDaemon { static let shared = SomeDaemon() fileprivate init() { print("SomeDaemon is running") } var timer: DispatchSourceTimer? = nil let gap = 10 // seconds between runs func launch() { // you must call this from application#didLaunch // […]

AudioFileReadPacketData传递有效文件时返回-50

我花了一些时间试图自己debugging,但我似乎无法得到AudioFileReadPacketData正确读取传入的数据。 这几乎基于Apple AudioQueueServices Guide 。 class SVNPlayer: SVNPlayback { var queue: AudioQueueRef? var audioFormat: AudioStreamBasicDescription! var playbackFile: AudioFileID? var packetDesc: AudioStreamPacketDescription! var isDone = false var packetPosition: Int64 = 0 var numPacketsToRead = UInt32() private let callback: AudioQueueOutputCallback = { aqData, inAQ, inBuffer in guard let userData = aqData else { return } let audioPlayer […]

使用Xamarin从iPhone中的麦克风stream式传输audio

使用AudioQueue和Monotouch静态声音录制演示如何使用Xamarin.iOS通过iPhone的麦克风将audio传输到AudioQueue。 我的问题是:我如何保持麦克风连续录音? 我基本上只要打开应用程序就保持麦克风打开,并不断捕捉audiostream(注意,我不想将stream保存到文件)。 在长时间的while循环里面?

为什么我的AudioQueueOutputCallback不能被调用?

我正在使用audio队列服务API播放通过iPhone上的TCP套接字连接从服务器stream式传输的audio。 我可以播放从套接字连接填充的缓冲区,我似乎无法使我的AudioQueue调用我的AudioQueueOutputCallback函数,我不知道。 高层次的devise 数据从套接字连接传递给播放器,并立即写入内存中的循环缓冲区。 随着AudioQueueBuffers变得可用,将数据从循环缓冲区复制到可用的AudioQueueBuffer中,并立即重新排队。 (或者,如果我的callback发生了) 怎么了 缓冲区全部被填满并成功排队,我清楚地听到了audiostream。 为了进行testing,我使用了大量的缓冲区(15),并且所有的缓冲区都可以无缝地播放,但是AudioQueueOutputCallback从来没有被调用过,所以我从来不会重新排列任何这些缓冲区,尽pipe事实似乎一切正常。 如果我不等我的callback,假设它永远不会被调用,而是根据写入的数据驱动缓冲区的排队,我可以无限期地播放audiostream,重用和重新排列缓冲区,就好像它们一样已经明确地回到了我的callback。 事实是:我可以在需要时重复使用缓冲区的情况下完美地播放stream,这使我最困惑。 为什么不调用callback? 可能有关的代码 stream的格式是16位线性PCM,8kHz,单声道: _streamDescription.mSampleRate = 8000.0f; _streamDescription.mFormatID = kAudioFormatLinearPCM; _streamDescription.mBytesPerPacket = 2; _streamDescription.mFramesPerPacket = 1; _streamDescription.mBytesPerFrame = sizeof(AudioSampleType); _streamDescription.mChannelsPerFrame = 1; _streamDescription.mBitsPerChannel = 8 * sizeof(AudioSampleType) _streamDescription.mReserved = 0; _streamDescription.mFormatFlags = (kLinearPCMFormatFlagIsBigEndian | kLinearPCMFormatFlagIsPacked); 我的原型和callback的实现如下。 没有什么特别的,几乎和我目前看到的每个例子都一样: // Prototype, declared above the class's @implementation void […]

iOS可以接收像Android一样的广播吗?

我想我的应用程序被告知,当一个耳机/耳机从iOS设备断开一段时间的空闲时间足够长,应用程序被清理(因此可能不会运行),类似于BroadcastReceiver工作方式机器人。 我怀疑这是不可能的,但会感激任何想法。 我已经研究了本地和推送通知和NSNotificationCenter 。 推送通知不适合,因为设备上发生事件。 它似乎可以安排(通过指定一个时间)本地通知,而不是从系统事件创build它们,只有当应用程序运行时才会收到来自NSNotificationCenter通知。 我误解了上面的任何信息还是有另一个窍门使用?

相当于Android服务的iOS?

所以iOS 7支持更广泛的背景模式,是否有可能在iOS上终于有一个相当于Android的服务? 我所追求的基本上是在后台运行应用程序A,并有一个或多个应用程序B和C与该应用程序交谈(不显示应用程序A的GUI)。 请注意,使用连接和推送通知可能不是一个选项,虽然这是推荐的方式。 有任何想法吗?