像睡眠周期一样的闹钟 ios swift
alarm clock like sleep cycle ios swift
我一直在寻找答案,但一直没有找到。我想创建一些类似于闹钟的应用程序。
它的一个功能是在用户指定的时间醒来(不足为奇)。如果您查看睡眠周期应用程序,您会注意到它会唤醒您,但它也会跟踪您的睡眠,因此它必须在后台 运行。此外,它还可以播放唤醒您的歌曲,直到您将其关闭(不仅是 30 秒,因为通知声音的长度限制)。它还可以调高设备的音量。
如果我没有看到这个应用程序在运行,我不会相信开发人员可以在 iPhone 上实现这样的功能。
我目前的进度:
我可以在用户指定的时间播放声音,但前提是应用程序在前台。如果播放声音然后用户单击主页按钮声音仍然播放(这很酷)但是如果应用程序在后台则音乐无法启动。这是一些代码:
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: AVAudioSessionCategoryOptions.MixWithOthers)
print("AVAudioSession Category Playback OK")
do {
try AVAudioSession.sharedInstance().setActive(true)
print("AVAudioSession is Active")
} catch let error as NSError {
print(error.localizedDescription)
}
} catch let error as NSError {
print(error.localizedDescription)
}
然后我使用
AVAudioPlayer
播放一些声音。
所以第一个问题是:如何像睡眠周期应用程序那样从背景播放声音?而且我确定睡眠周期不使用通知声音。
第二个问题是如何改变设备音量(sleep cycle也可以,但是stack overflow上很多人说不可能)
请帮忙:)
好的,所以我设法使用了一些技巧来做到这一点:
首先,这是帮助我设置音频播放器的功能:
func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? {
//1
let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
let url = NSURL.fileURLWithPath(path!)
//2
var audioPlayer:AVAudioPlayer?
// 3
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: url)
} catch {
NSLog("Player not available")
}
return audioPlayer
}
然后当用户按下按钮时 "start alarm" 我这样做:
silence_audio = setupAudioPlayerWithFile("silence", type:"wav");
silence_audio?.numberOfLoops = -1;
silence_audio?.volume = 1;
silence_audio?.play();
正如你所猜到的那样,它是空洞的声音——空洞的声音。苹果说:
For tasks that require more execution time to implement, you must request specific permissions to run them in the background without their being suspended. In iOS, only specific app types are allowed to run in the background:
-Apps that play audible content to the user while in the background,
such as a music player app
An app that plays or records audio continuously (even while the app is running in the background) can register to perform those tasks in the background. You enable audio support from the Background modes section of the Capabilities tab in your Xcode project. (You can also enable this support by including the UIBackgroundModes key with the audio value in your app’s Info.plist file.)
而且我还必须这样做:
之后,我的应用程序可以在后台 运行 不受限制。如果 Apple 不允许我发布它,我将开始使用麦克风或类似的东西。没有这个功能就不可能做闹钟应用程序。
并且改变设备的音量非常简单:
let volumeView = MPVolumeView()
if let view = volumeView.subviews.first as? UISlider{
view.value = 0.3
}
然后您设置 view.value 表格 0 - 1。
希望对您有所帮助:)
我一直在寻找答案,但一直没有找到。我想创建一些类似于闹钟的应用程序。
它的一个功能是在用户指定的时间醒来(不足为奇)。如果您查看睡眠周期应用程序,您会注意到它会唤醒您,但它也会跟踪您的睡眠,因此它必须在后台 运行。此外,它还可以播放唤醒您的歌曲,直到您将其关闭(不仅是 30 秒,因为通知声音的长度限制)。它还可以调高设备的音量。
如果我没有看到这个应用程序在运行,我不会相信开发人员可以在 iPhone 上实现这样的功能。
我目前的进度:
我可以在用户指定的时间播放声音,但前提是应用程序在前台。如果播放声音然后用户单击主页按钮声音仍然播放(这很酷)但是如果应用程序在后台则音乐无法启动。这是一些代码:
do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: AVAudioSessionCategoryOptions.MixWithOthers) print("AVAudioSession Category Playback OK") do { try AVAudioSession.sharedInstance().setActive(true) print("AVAudioSession is Active") } catch let error as NSError { print(error.localizedDescription) } } catch let error as NSError { print(error.localizedDescription) }
然后我使用
播放一些声音。 所以第一个问题是:如何像睡眠周期应用程序那样从背景播放声音?而且我确定睡眠周期不使用通知声音。AVAudioPlayer
第二个问题是如何改变设备音量(sleep cycle也可以,但是stack overflow上很多人说不可能)
请帮忙:)
好的,所以我设法使用了一些技巧来做到这一点:
首先,这是帮助我设置音频播放器的功能:
func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? {
//1
let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
let url = NSURL.fileURLWithPath(path!)
//2
var audioPlayer:AVAudioPlayer?
// 3
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: url)
} catch {
NSLog("Player not available")
}
return audioPlayer
}
然后当用户按下按钮时 "start alarm" 我这样做:
silence_audio = setupAudioPlayerWithFile("silence", type:"wav");
silence_audio?.numberOfLoops = -1;
silence_audio?.volume = 1;
silence_audio?.play();
正如你所猜到的那样,它是空洞的声音——空洞的声音。苹果说:
For tasks that require more execution time to implement, you must request specific permissions to run them in the background without their being suspended. In iOS, only specific app types are allowed to run in the background:
-Apps that play audible content to the user while in the background, such as a music player app
An app that plays or records audio continuously (even while the app is running in the background) can register to perform those tasks in the background. You enable audio support from the Background modes section of the Capabilities tab in your Xcode project. (You can also enable this support by including the UIBackgroundModes key with the audio value in your app’s Info.plist file.)
而且我还必须这样做:
之后,我的应用程序可以在后台 运行 不受限制。如果 Apple 不允许我发布它,我将开始使用麦克风或类似的东西。没有这个功能就不可能做闹钟应用程序。
并且改变设备的音量非常简单:
let volumeView = MPVolumeView()
if let view = volumeView.subviews.first as? UISlider{
view.value = 0.3
}
然后您设置 view.value 表格 0 - 1。
希望对您有所帮助:)