SwiftUIでLEDライトをオンオフするプログラムの書き方

アプリ開発

SwiftUIでアプリ開発をしている際に背面についているライトを光らせたい場面がありました。

その際、参考になるサイトが全然見つからず、最終的には海外のYouTubeでようやく見つけた方法なので、備忘録の意味も込めてやり方を書いておきます。

ORANGE BLOG オリジナルロゴ
スポンサーリンク

このプログラムでできること

この記事のプログラムを使えば、iPhoneの背面のライトを光らせることができます。

プログラム

実際のプログラムは下記になります。

import SwiftUI
import AVFoundation

struct ContentView: View {
    @State var on: Bool = true
    
    var body: some View {
        VStack{
            Spacer()
            Button(action:{
                light_OnOff()
            }){
                Text("ライト").font(.largeTitle)
                    .padding(10)
                    .foregroundColor(Color.white)
            }.background(Color.black)
            Spacer()
        }
    }
    
    func light_OnOff(){
        guard let device = AVCaptureDevice.default(for: .video) 		      
        else {return}
        if device.hasTorch{
                   do{
                       try device.lockForConfiguration()
                      if on == true{
                           device.torchMode = .on
                          on = false
                       }else{
                           device.torchMode = .off
                           on = true
                      }
                   }catch{
                       print("Tourch could not used now!")
                   }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

プログラム解説

簡単にプログラムの説明をしていきます。

まずimport部でAVFoundationをimportします。これによってdeviceのライトにアクセスすることができるようになります。これがないと、AVCaptureDevice.default(for: .video)部分でエラーが発生してしまいます。

VStack部は単純にライトのオン、オフを行う関数を呼び出すためのボタンを作っているだけになります。

light_OnOff関数が実際のLEDライトのオンオフ部になります。deviceという変数で動いているiPhoneの情報を用意します。うまくいかなければreturnで戻ります。

もし無事iPhoneの情報が用意できたら、try device.lockForConfiguration()でiPhone操作権を関数がもらって、いざLEDライトのオン、オフを行えます。

device.torchMode = .onでライトが点いている状態に。

device.torchMode = .offでライトが消えている状態に変更することができます。

Do、catchをやっている理由はもし、ライトがうまくつかなかった場合はエラーコードが出るような設計になっているからです。

@State var on: Bool = true

に関してはボタンを1回目に押すとライトがオンに、もう一度押すとライトがオフになるようにするために状態を保存するために変数を用意しています。l

以上がプログラムの説明になります。

本プログラムを活かしたアプリが「叫ぶモールス信号アプリ」になります。

まとめ

今回はSwiftUIでiPhoneのライトをオンオフする方法について書いてきました。

アプリ開発の参考や助けになれば嬉しいです。

かなり苦労してようやく見つけた方法です。

Swiftの情報は多くあっても案外SwiftUIについての情報は少なくて困ります。

Swiftを学んだほうがいいんですかね?と思いつつ、ついつい作るのに慣れているSwiftUIに逃げてしまいます。

そのうちSwiftも挑戦してみようと思います。

では、あなたのアプリ開発がうまくいきますように。

ブログ運営者写真

コメント

タイトルとURLをコピーしました