見出し画像

一等無人航空機実地試験練習用20秒タイマー

試験項目に下記のようなものがありますが、一人で練習する際にタイマーを読み上げてくれる人がいないので、超簡易的に自分だけで使えるタイマーを作りました。iOS用でXcodeを使って作ります。決して公開できるレベルのものではないのですが、試験に合格するまでの短い間しか使わないので、これでいいかなというところです

ピ ル エ ッ ト ホ バ リ ン グ
(2) 離陸地点にて、試験員の指 示する方向に20秒間程度で一回 転する速度で回転を行う。

一等無⼈航空機操縦士実地試験実施細則 回転翼航空機(マルチローター)
20秒読み上げて、5秒逆カウントし、再び20秒読み上げを永遠と繰り返します

機能

20秒カウント、5秒逆カウントを永遠と繰り返します

XCODEでプロジェクトを作ります

iOSのAPPを選ぶ
名前をつけてAppleのDevelopperの情報を入力
ボタンを二つと、ラベルを一つ作って、適当に修飾します
ViewControllerにコードを貼り付けて、Main.storyboardから右ドラッグで結びつけます

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()
    }
}


いいなと思ったら応援しよう!