![見出し画像](https://assets.st-note.com/production/uploads/images/114492975/rectangle_large_type_2_9357652dd2de9589de65aa9f306a3df6.png?width=800)
一等無人航空機実地試験練習用20秒タイマー
試験項目に下記のようなものがありますが、一人で練習する際にタイマーを読み上げてくれる人がいないので、超簡易的に自分だけで使えるタイマーを作りました。iOS用でXcodeを使って作ります。決して公開できるレベルのものではないのですが、試験に合格するまでの短い間しか使わないので、これでいいかなというところです
ピ ル エ ッ ト ホ バ リ ン グ
(2) 離陸地点にて、試験員の指 示する方向に20秒間程度で一回 転する速度で回転を行う。
20秒読み上げて、5秒逆カウントし、再び20秒読み上げを永遠と繰り返します
機能
20秒カウント、5秒逆カウントを永遠と繰り返します
XCODEでプロジェクトを作ります
![](https://assets.st-note.com/img/1693016391231-XEyxU7KMdW.jpg?width=800)
![](https://assets.st-note.com/img/1693016391198-BlTnxihRsd.jpg?width=800)
![](https://assets.st-note.com/img/1693016391325-9MD4bIzEhm.jpg?width=800)
![](https://assets.st-note.com/img/1693016391352-DMPQ9K9HBy.jpg?width=800)
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()
}
}
この記事が気に入ったらサポートをしてみませんか?