一等無人航空機実地試験練習用20秒タイマー
試験項目に下記のようなものがありますが、一人で練習する際にタイマーを読み上げてくれる人がいないので、超簡易的に自分だけで使えるタイマーを作りました。iOS用でXcodeを使って作ります。決して公開できるレベルのものではないのですが、試験に合格するまでの短い間しか使わないので、これでいいかなというところです
機能
20秒カウント、5秒逆カウントを永遠と繰り返します
XCODEでプロジェクトを作ります
Code
import SwiftUI
import UIKit
import AVFoundation
class ViewController: UIViewController {
let synthesizer = AVSpeechSynthesizer()
var timer: Timer!
var startTime = Date()
var oldstr = "0"
let endtime = 20
@IBOutlet var displayTime: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func startButton(_ sender: Any) {
if timer != nil{
timer.invalidate()
}
timer = Timer.scheduledTimer(
timeInterval: 0.05,
target: self,
selector: #selector(self.timerCounter),
userInfo: nil,
repeats: true)
startTime = Date()
}
@objc func timerCounter() {
let currentTime = Date().timeIntervalSince(startTime)
let second = (Int)(fmod(currentTime, 26))
var str = String(second)
if(second > 20){
let rest = 26 - second
str = String(rest)
}
displayTime.text = str
if (oldstr != str) {
let text = AVSpeechUtterance(string: str)
let language = AVSpeechSynthesisVoice(language: "ja-JP")
text.voice = language
synthesizer.speak(text)
oldstr = str
}
}
@IBAction func stopTimer(_ sender: Any) {
timer.invalidate()
}
}